Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
138 commits
Select commit Hold shift + click to select a range
3591bcf
Menu Font WIP
Feb 2, 2026
32a7563
Button Sprite & function rework, Background added
Feb 3, 2026
ec795a4
new menu_container + menu_panel() function added to Host, Join & Rule…
Feb 3, 2026
d52e113
Bump resolution to 1920x1080 + clippy + fmt
end41r Feb 4, 2026
946b35b
Restructure views because it wasnt readable at all at 900 lines,
end41r Feb 4, 2026
0a5b55b
Add a layout for the scoreboards
end41r Feb 4, 2026
72a66d2
Make the scoreboard fit at all times, remove the png it only caused for
end41r Feb 7, 2026
35100ea
Add Name highlighting and change the background
end41r Feb 9, 2026
a3d579e
clippy,fmt
end41r Feb 9, 2026
10f37ea
Add debug mode accessible with
end41r Feb 9, 2026
cea07c4
Merge README.md
end41r Feb 9, 2026
bbfae54
Fix test to match the debug feature
end41r Feb 9, 2026
87807d8
adjust scoreboard to game ui framework
VoidNoVerges Feb 16, 2026
1c8fb73
music added to menu, Lobby and ingame
konradkrt Feb 16, 2026
d901872
put game ui into one struct
VoidNoVerges Feb 16, 2026
95f20b4
rename gameplay.rs to debug_gameplay.rs as this is now its whole purpose
VoidNoVerges Feb 16, 2026
d44591e
make scoreboard resizable
VoidNoVerges Feb 17, 2026
e860a21
add ResizableDynHeight trait as Resizable without height
VoidNoVerges Feb 17, 2026
f030963
delete redundant comments
VoidNoVerges Feb 17, 2026
c707b3e
fmt scoreboard
VoidNoVerges Feb 18, 2026
63f1824
add layout implementation of avatars
VoidNoVerges Feb 18, 2026
1731a1f
move some functions to card struct
VoidNoVerges Feb 18, 2026
9ce29b1
rename Avatar to ViewableAvatar
VoidNoVerges Feb 18, 2026
9d8ab4c
add avatar images
VoidNoVerges Feb 18, 2026
2627818
add avatars to api
VoidNoVerges Feb 18, 2026
bb440fc
better formatting
VoidNoVerges Feb 18, 2026
3c92e67
give every player an AvatarKind
VoidNoVerges Feb 18, 2026
e9c29f7
add GameViewMessage variants
VoidNoVerges Feb 18, 2026
1994eee
add more messages to GameViewMessage
VoidNoVerges Feb 19, 2026
1579395
implement GameViewMessage::StartGame
VoidNoVerges Feb 19, 2026
1670ca1
display an avatar
VoidNoVerges Feb 19, 2026
87a66ba
add avatar sprite animations
VoidNoVerges Feb 19, 2026
bebf305
add rotating cards to avatar
VoidNoVerges Feb 19, 2026
da9e8bd
make player avatar not blurred
VoidNoVerges Feb 20, 2026
5ed70bf
display game ui layout fully
VoidNoVerges Feb 21, 2026
cb322a4
fix flickering from avatar animation
VoidNoVerges Feb 21, 2026
11a9c25
add avatar frames
VoidNoVerges Feb 21, 2026
14360d2
replace cards around avatar with shards representing the avatars
VoidNoVerges Feb 21, 2026
b2eb0e4
hover on card stack now shows all played cards this trick
VoidNoVerges Feb 21, 2026
3973b51
change cursor when hand card is not playable
VoidNoVerges Feb 22, 2026
d8b0e4f
combine card play gui with server
VoidNoVerges Feb 25, 2026
d4b0518
combine new round gui with server
VoidNoVerges Feb 25, 2026
dead8d4
combine new trick gui with server
VoidNoVerges Feb 25, 2026
ff7b211
combine change turn gui with server
VoidNoVerges Feb 25, 2026
60a7d19
update scoreboard gui
VoidNoVerges Feb 25, 2026
817c997
Merge remote-tracking branch 'origin/main' into player-wizard-paul
VoidNoVerges Feb 25, 2026
24e8624
remove not needed game view messages
VoidNoVerges Feb 25, 2026
15c5e26
remove not needed field from GameView
VoidNoVerges Feb 25, 2026
a279330
combine scoreboard gui with server
VoidNoVerges Feb 25, 2026
dd305e1
display real avatars given by server
VoidNoVerges Feb 26, 2026
98411bf
view appmessages for debugging
VoidNoVerges Feb 26, 2026
1bae229
chmod 755 on build.sh
end41r Feb 26, 2026
52f7328
adjust gui server interaction so game is playable
VoidNoVerges Feb 26, 2026
c7e226f
select random avatar for each player
VoidNoVerges Feb 26, 2026
ee89da4
add animation count down latch for proper animation completion later on
VoidNoVerges Feb 26, 2026
5dc9bd1
fix bug where own card seems to be played twice
VoidNoVerges Feb 26, 2026
1d13db9
fmt
VoidNoVerges Feb 26, 2026
9ed5b66
cards unic so they identify themself and don't need id
VoidNoVerges Feb 27, 2026
1d0a21e
fix card play animation
VoidNoVerges Feb 27, 2026
24f4c5d
fix bug where hand cards can not be hovered properly
VoidNoVerges Feb 27, 2026
00c8df7
show player names on avatars
VoidNoVerges Feb 27, 2026
76abd4d
notify gui when turn changed to other player
VoidNoVerges Feb 27, 2026
42215a2
add animation chain guardian for guarantee that animations are fully …
VoidNoVerges Feb 27, 2026
46ed212
play card via single click instead of double click
VoidNoVerges Feb 27, 2026
cd01d47
Fix wizard as trump not shown
end41r Feb 27, 2026
ca87289
Add AI usage list & uncomment feature flag
end41r Feb 27, 2026
7997529
Options Menu Added, Audio volume scroll wheel added.
konradkrt Feb 27, 2026
d293b89
Refine build script
end41r Feb 27, 2026
b38555f
Handle the end of receive task as losing connection to server
end41r Feb 27, 2026
af118e7
remove clickable field from card view as it is not needed anymore
VoidNoVerges Feb 27, 2026
e20223a
Updated game rules
Tomcode05 Feb 27, 2026
5a7c30d
As the last bidder, you can't bid so that sum bids = max bid
end41r Feb 27, 2026
1e64345
Close branch for #33
end41r Feb 27, 2026
108cd90
Handle the end of receive task as losing connection to server
end41r Feb 27, 2026
c1af278
Merge branch 'receive-loop-handling' of github.com:end41r/wizard into…
end41r Feb 27, 2026
0682b29
Merge branch 'bid-sum-logic' into receive-loop-handling
end41r Feb 27, 2026
fc047df
Scoreboard now shows the player's turn to bid/play and the scoreboard is
end41r Feb 27, 2026
266e3e2
fmt
end41r Feb 27, 2026
8ff39c9
changes for debugging
VoidNoVerges Feb 27, 2026
45d8f72
avatar of player of current bid highlighted
VoidNoVerges Feb 27, 2026
05c12fa
ensure that critical animations are always fully played
VoidNoVerges Feb 28, 2026
721edf3
adjust card stack remove animation
VoidNoVerges Feb 28, 2026
d78bfdd
fix glow animation of card deck
VoidNoVerges Feb 28, 2026
6926d33
instantly show card as not playable after played
VoidNoVerges Feb 28, 2026
bc3ce9a
add blackscreen after game ended
VoidNoVerges Feb 28, 2026
a6b420a
Merge branch 'player-wizard-paul' of github.com:end41r/wizard into ve…
end41r Feb 28, 2026
fc49cfb
Merge remote-tracking branch 'origin/updated-game-rules' into version…
end41r Feb 28, 2026
f453ef7
Allow the sum of bids to be 1 in round 1
end41r Feb 28, 2026
e120cf8
sound effects added and implemented, sfx slider added, slight menu im…
konradkrt Feb 28, 2026
0c17b54
Enforce white text color for linux/intel mac os rendering compatibility
end41r Feb 28, 2026
c99c4e5
make scoreboard resizable
VoidNoVerges Feb 28, 2026
dacc1a6
add card images for set trump color in scoreboard
VoidNoVerges Feb 28, 2026
78a8c38
Merge branch 'version-1.0.0' into sound_konrad
end41r Feb 28, 2026
fce120f
Fix sfx click effect
end41r Feb 28, 2026
5c01ba0
Bump wiz_debug termina;
end41r Feb 28, 2026
4d2aacc
Merge branch 'sound_konrad' into version-1.0.0
end41r Feb 28, 2026
057988c
Fix game_view
end41r Feb 28, 2026
369ae79
Bump version to the pre-release
end41r Feb 28, 2026
fb1e078
Fix sfx & audio text color
end41r Feb 28, 2026
70ec9cc
Add 1 more mailmap line
end41r Feb 28, 2026
252c509
Lint AI.md
end41r Feb 28, 2026
3272c80
hover animation for set trump color images
VoidNoVerges Feb 28, 2026
8a7fbef
Merge branch 'scoreboard-resizable-paul' into version-1.0.0
end41r Feb 28, 2026
75ddc0b
fmt
end41r Feb 28, 2026
f1d5bb6
Remove unused warnings
end41r Feb 28, 2026
15f0543
add animations to avatar frame
VoidNoVerges Feb 28, 2026
0bf71de
Merge branch 'version-1.0.0' of https://github.com/end41r/wizard into…
VoidNoVerges Feb 28, 2026
3766d91
fmt, cargo | AI: Help with fixing clippy using Box<>
end41r Feb 28, 2026
b83af9a
Merge branch 'version-1.0.0' of github.com:end41r/wizard into version…
end41r Feb 28, 2026
c0c14b8
Fix clippy again
end41r Feb 28, 2026
b1f43e8
fix bug where after card played other cards in hand not instantly mar…
VoidNoVerges Feb 28, 2026
0d54799
Merge branch 'version-1.0.0' of https://github.com/end41r/wizard into…
VoidNoVerges Feb 28, 2026
5d005cc
Lint md
end41r Feb 28, 2026
13c1a92
Added the Documentation
end41r Feb 28, 2026
1579dab
Merge branch 'version-1.0.0' of github.com:end41r/wizard into version…
end41r Feb 28, 2026
07f7565
Menu panel added to lobby menu
konradkrt Feb 28, 2026
9323513
music bug fix
konradkrt Feb 28, 2026
d54b1d6
clippy fmt
end41r Feb 28, 2026
32bc407
enhance end screen
VoidNoVerges Feb 28, 2026
a594168
add various sound effects
VoidNoVerges Mar 1, 2026
cf902d1
trim 2 sound effects for synced start time
VoidNoVerges Mar 1, 2026
c212711
make card played hearable for all players
VoidNoVerges Mar 1, 2026
a43c0cf
trim 1 sound effect for synced start time
VoidNoVerges Mar 1, 2026
942fee5
play sound when trump color clicked
VoidNoVerges Mar 1, 2026
5e88adc
fix card stack glow
VoidNoVerges Mar 1, 2026
c867132
fix hover animation of scoreboard
VoidNoVerges Mar 1, 2026
84d119b
only show interaction pointer of card stack when there are cards
VoidNoVerges Mar 1, 2026
9193934
Get rid of clippy warnings & fmt again
end41r Mar 1, 2026
d5aeac8
add more animations to played card history
VoidNoVerges Mar 1, 2026
9a80372
Merge branch 'version-1.0.0' of https://github.com/end41r/wizard into…
VoidNoVerges Mar 1, 2026
684ed58
adjust scoreboard
VoidNoVerges Mar 1, 2026
f022229
add funny interaction when click on avatar
VoidNoVerges Mar 1, 2026
cd1eb28
Fmt, cargo clippy for edition=2024
end41r Mar 1, 2026
19c39e0
Merge branch 'version-1.0.0' of github.com:end41r/wizard into version…
end41r Mar 1, 2026
17fa4d6
fmt
end41r Mar 1, 2026
999925a
Enforce rustc 1.90.0 with edition=2024 (sorry Tim, we couldnt make it
end41r Mar 1, 2026
2c76b40
Rewrite documentation
end41r Mar 1, 2026
d0c28dd
Bump version to 1.0.0
end41r Mar 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .mailmap
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
Andrei Kurochkin <end41r@gmx.de> <andi.kurochkin@gmail.com>
Andrei Kurochkin <end41r@gmx.de> <82461251+end41r@users.noreply.github.com>
Andrei Kurochkin <end41r@gmx.de>
Konrad Kortes <konrad.kortes@gmail.com> <konrad@MacBook-Pro-von-Konrad.local>
Konrad Kortes <konrad.kortes@gmail.com> <konrad@MacBookPro.fritz.box>
Konrad Kortes <konrad.kortes@gmail.com> <konrad@MacBook-Pro-von-Konrad.fritz.box>
Expand Down
5 changes: 3 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "wizard"
version = "0.1.0"
edition = "2021"
version = "1.0.0"
edition = "2024"

[dependencies]
iced = { version = "0.14", features = ["image", "tokio"] }
Expand All @@ -17,6 +17,7 @@ derive_more = { version = "2.1.1", features = ["deref", "deref_mut"] }
rand = "0.9.2"
strum = "0.27"
strum_macros = "0.27"
rodio = "0.21.1"

[features]
wiz_debug = []
177 changes: 177 additions & 0 deletions DOCUMENTATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
# DOCUMENTATION

## Overview

A digital implementation of the classic [Wizard card game](https://en.wikipedia.org/wiki/Wizard_(card_game)), built in Rust using the Iced UI framework for the client and Axum for the server, designed for playing in a local network.

---

## Building and Running

### Prerequisites

- **Cargo, Rust** toolchain (`edition=2024`, the project enforces `1.90.0` via `rust-toolchain.toml`)
- **On Linux:** the `alsa` library for audio must be installed (e.g. `sudo apt install libasound2-dev` on Ubuntu)

### Clone and Run

```sh
git clone https://github.com/end41r/wizard.git
cd wizard
cargo build
cargo run
```

### Cross-Compilation with `build.sh`

Primarily for WSL > Windows for better testing experience:

```sh
./build.sh -t windows # Windows release build
./build.sh -t linux # Linux release build
./build.sh -t windows -f # Windows release build with debug features (wiz_debug)
```

The script compiles a release binary and copies both the executable and the `assets/` folder to a directory specified in `DEST_PATH`.

### Running Tests

```sh
cargo test
```

Unit are located in `src/gamelogic/game.rs` (UI testing was done differently).

---

## Implemented Features and How to Discover Them

### Main Menu

When the application starts, the main menu is displayed with four buttons:

| Button | Action |
| -------- | -------- |
| **Host** | Opens the host menu to create a new game lobby |
| **Beitreten** | Opens the join menu to connect to an existing lobby |
| **Optionen** | Opens audio settings |
| **Spiel Verlassen** | Exits the application |

### Hosting a Game

1. Click **Host** in the main menu.
2. Enter your player name.
3. Select the player count (3–6 players).
4. Click **Lobby Erstellen** — this starts the WebSocket server on port `3000` and puts you in the lobby.
5. Share your IP address (shown in the lobby) with the other players.

### Joining a Game

1. Click **Beitreten** in the main menu.
2. Enter your player name and the host's IP address.
3. Click **Verbinden** to join the lobby.

### Lobby

- All connected players are listed with a **Bereit | Nicht Bereit** toggle.
- The lobby includes a chat where players can send messages.
- The game starts when all players are ready and the host presses **Starten**.

### Rules

The game follows the official Wizard card game rules. A full in-game rules screen is accessible via the **Spielregeln** button in **Optionen**. In brief:

#### Gameplay UI

- **Card hand:** Cards that are displayed at the bottom, with a right click you can also see which are playable.
- **Game table:** Shows other players' avatars, the current trick's cards in the middle, if you click the trick's cards you can toggle the view of all played cards in the trick, by just hovering you can temporarily see the played cards in the trick.
- **Scoreboard:** Displayed on the side, shows each player's current score, bid, and tricks won. The scoreboard also provides trump-suit selection buttons when the dealer must set trump.
- **Avatars:** Each player has an animated avatar (Elf, Knight, Mage, or Witch) with idle and casting animations. Casting is triggered when a player plays acard. Each avatar type has unique sound effects upon clicking the avatar.
- **Shards:** Float around the avatar of each player, indicating the amount of cards left in their hand.

### Audio

- **Background music** plays on the menu, in the lobby, and during gameplay (different tracks for each).
- **Sound effects** for: button clicks, card hover, card shuffle, card deal, card play, card error, shard play, avatar-specific casting and click sounds, and game over.
- **Volume control:** Music and SFX volume can be adjusted via sliders in the **Optionen** menu.

### Easter Egg

If the host enters the name `wizard_master`, the game launches in a **debug gameplay view** — a text-based, scrollable interface showing all game states (round, trump, bids, hand, tricks, scores, log) with minimal styling. This is located in `src/client/views/debug_gameplay.rs`.

### Debug Build Feature

Compiling with the `wiz_debug` Cargo feature (`cargo run --features wiz_debug`) enables:

- The Windows console window in release builds (for logging output).
- Better testing conditions (you can start with 1 player without waiting for everybody to get ready).

### Cross-Platform

The application runs on **Linux**, **Windows**, and **macOS**.

---

## Architecture

### Client ↔ Server Model

- `src/server.rs`: An Axum + Tokio WebSocket server. Manages player connections, lobby state, game state, and event broadcasting. Binds to `0.0.0.0:3000`.
- `src/client/`: An Iced GUI application. Handles user input, animations, rendering, audio playback, and communicates with the server via WebSockets.

### Core Modules

- `src/main.rs` : Entry point; launches the Iced client
- `src/api.rs` : Shared types, protocol messages (`C`, `S`, `B`), card/suit/value definitions, avatar types, lobby/player structs
- `src/server.rs` : Axum WebSocket server, game event dispatching, lobby management
- `src/gamelogic/` : Core game logic — `Game` (overall game flow) and `Round` (per-round state, bidding, trick resolution, scoring)
- `src/client/mod.rs` : Client application state (`App`), message enum, initialization
- `src/client/update.rs` : Message handling and state transitions
- `src/client/ws.rs` : WebSocket connection management
- `src/client/audio.rs` : Music and SFX playback via `rodio`
- `src/client/views/` : UI views: main menu, host menu, join menu, options, lobby, rules, debug gameplay
- `src/gameplay_ui/` : Game-table UI: hand display, card rendering, avatars, scoreboard, table layout
- `src/animation.rs` : Animation framework with easing functions (basic, auto-reversing, circular animations)
- `src/ui_element_traits.rs` : Shared traits for UI elements (Viewable, Animated, Resizable, etc.)

### Main Dependencies

- `iced` : UI framework (with image and tokio features)
- `axum` : Web server framework with WebSocket support
- `tokio` : Async runtime
- `tokio-tungstenite` : WebSocket client implementation
- `serde` / `serde_json` : Serialization and deserialization of protocol messages
- `rodio` : Audio playback (music and sound effects)

---

## Testing Method

### Approach

The project uses Unit tests for the core game logic module (`src/gamelogic/game.rs`). This is the only module we could write tests for.

### UI tests

- UI testing was done manually by running the application and verifying that all features work as intended through hours of playing together / alone, because iced doesnt provide a nice way to test it's elements.

---

## AI / LLM Usage

- **Easing functions** (`src/animation.rs`): Claude.ai generated the mathematical logic for easing functions (`ease_in_cubic`, `ease_out_cubic`, `ease_in_out_cubic`, `ease_in_sine`, `ease_out_sine`, `ease_in_out_sine`, `ease_out_elastic`, `ease_out_bounce`).
- **Animation macros** (`src/animation.rs`): Claude.ai helped to learn how to write Rust macros and partially generated the `impl_animation_common!` macro and trait bound patterns.
- **Scoreboard functions** (`src/gameplay_ui/scoreboard.rs`): AI helped to write the `sorted_player_order_by_score` function and the scoreboard view placement logic.
- **Pixel art rendering** (`src/gameplay_ui/table/avatar.rs`): Claude helped to learn how to use `filter_method` to achieve non-blurred pixel art scaling.
- **Hand generics** (`src/gameplay_ui/hand/mod.rs`): Claude.ai suggested passing a union type for generic hand card handling and helped to learn `Vec::contains` usage.
- **Server WebSocket handler** (`src/server.rs`): Claude Opus helped implement the WebSocket connection handler.

- **Array filtering** (`src/client/mod.rs`): Gemini helped to learn how to pass an array into a function and filter it.

### AI-Generated Images

The following image assets were created with AI assistance:

- `background_forall.png`, `ingame_background.png`, `menu_container.png`
- `wizard_lobby_menu.png`, `wizard_main_menu*.png`
- `button1.png`, `Menu_Button.png`
13 changes: 10 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,37 @@
# wizard
A Wizard Card game ( https://en.wikipedia.org/wiki/Wizard_(card_game) ) based on the Iced UI Framework to play in a local network with friends

A Wizard Card game (<https://en.wikipedia.org/wiki/Wizard_(card_game)>) based on the Iced UI Framework to play in a local network with friends

## To get the dependencies run

## To get the dependencies run
`cargo build`

## Building for windows

Uncomment a line at the top of main to remove the stdout terminal for a better experience

## Running

`cargo run`

## Constraints

Please refer to REQUIREMENTS.md

We also have a pr check for clippy and fmt, so if it fails, please use

- `cargo fmt` to fix formatting (automatically)
- `cargo clippy` to check for the warnings (most of them will be gone if you use `cargo clippy --fix --bin "wizard"` (commit your changes beforehand))
- If you really trust clippy, you can also do `cargo clippy --fix --bin "wizard" --allow-dirty`, but its better not to use it :)

### To run in debug mode with the wiz_debug feature enabled, run

`cargo run --features wiz_debug`
This will allow you to start the game with 1 player.

### build.sh usage

- Allows building release executable files for windows/linux/mac with `./build.sh -t <target>`, also allows to build with a `wiz_debug` feature flag with `./build.sh -t <target> -f`
- To build you would need to install targets first
- To correctly copy the assets, you would need to run the script from the root of the project
- The script copies the needed files as a release in your specified folder (in `DEST_PATH`)
- The script copies the needed files as a release in your specified folder (in `DEST_PATH`)
9 changes: 7 additions & 2 deletions REQUIREMENTS.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
# Rust SEP Winter Term 25/26 – Final Project

## Requirements

**Requirements written in bold are mandatory but not sufficient to pass.**
Other requirements should be fulfilled for a 1.0, but are also not sufficient.

---

## Git

- [ ] **(G1) The submitted project is a Git repository.**
- [ ] **(G2) The main branch contains the final project.**
- [ ] **(G3) Collaborative development was continuously done via Git (commit history from December to February).**
Expand All @@ -21,7 +23,8 @@ Other requirements should be fulfilled for a 1.0, but are also not sufficient.
---

## Code
- [ ] **(C1) The project must be compilable with rustc stable 1.85.0 (edition=2024).**

- [ ] **(C1) The project must be compilable with rustc stable 1.85.0 (edition=2024).**
- [ ] **(C2) The project is executable.**
- If the project is runnable via `cargo run`, it’s fine.
- If depending on non–crates.io dependencies, a devcontainer must include all required components.
Expand All @@ -40,6 +43,7 @@ Other requirements should be fulfilled for a 1.0, but are also not sufficient.
---

## Functional

- [ ] **(F1) The project was outlined in the pitch presentation.**
- [ ] **(F2) The final submission resembles the pitched project.**
- [ ] **(F3) The project must allow user interaction (usable without writing code).**
Expand All @@ -48,10 +52,11 @@ Other requirements should be fulfilled for a 1.0, but are also not sufficient.
---

## Documentation

- [ ] **(D1) The documentation contains all steps needed to run the project.**
- [ ] **(D2) The documentation lists all implemented features and how to discover them.**
- [ ] **(D3) The logbook is submitted as a separate PDF on Moodle.**
- [ ] **(D4) IFI Rule: State all used AI/LLMs and their purpose.**

- [ ] (D5) The documentation contains proof of any requirement not proven by code or repo.
- [ ] (D6) The documentation describes and justifies the testing method.
- [ ] (D6) The documentation describes and justifies the testing method.
Binary file added assets/audio/sfx_card_dealed.mp3
Binary file not shown.
Binary file added assets/audio/sfx_card_error.mp3
Binary file not shown.
Binary file added assets/audio/sfx_card_hovered.mp3
Binary file not shown.
Binary file added assets/audio/sfx_card_played.mp3
Binary file not shown.
Binary file added assets/audio/sfx_card_shuffle.mp3
Binary file not shown.
Binary file added assets/audio/sfx_click.mp3
Binary file not shown.
Binary file added assets/audio/sfx_elf_cast.mp3
Binary file not shown.
Binary file added assets/audio/sfx_elf_clicked.mp3
Binary file not shown.
Binary file added assets/audio/sfx_game_over.mp3
Binary file not shown.
Binary file added assets/audio/sfx_knight_cast.mp3
Binary file not shown.
Binary file added assets/audio/sfx_knight_clicked.mp3
Binary file not shown.
Binary file added assets/audio/sfx_mage_cast.mp3
Binary file not shown.
Binary file added assets/audio/sfx_mage_clicked.mp3
Binary file not shown.
Binary file added assets/audio/sfx_shard_played.mp3
Binary file not shown.
Binary file added assets/audio/sfx_witch_cast.mp3
Binary file not shown.
Binary file added assets/audio/sfx_witch_clicked.mp3
Binary file not shown.
Binary file added assets/audio/wizard_black_shores.mp3
Binary file not shown.
Binary file added assets/audio/wizard_clash_of_mages.mp3
Binary file not shown.
Binary file added assets/audio/wizard_peaceful.mp3
Binary file not shown.
Binary file added assets/avatars/avatar_frame_idle.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/avatars/avatar_frame_turn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/avatars/elf/elf_casting1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/avatars/elf/elf_casting2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/avatars/elf/elf_standing1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/avatars/elf/elf_standing2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/avatars/elf/shard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/avatars/knight/knight_casting1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/avatars/knight/knight_casting2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/avatars/knight/knight_standing1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/avatars/knight/knight_standing2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/avatars/knight/shard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/avatars/mage/mage_casting1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/avatars/mage/mage_casting2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/avatars/mage/mage_standing1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/avatars/mage/mage_standing2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/avatars/mage/shard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/avatars/witch/shard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/avatars/witch/witch_casting1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/avatars/witch/witch_casting2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/avatars/witch/witch_standing1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/avatars/witch/witch_standing2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/black_screen.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/menu/MagicSchoolOne.ttf
Binary file not shown.
Binary file added assets/menu/Menu_Button.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/menu/background_forall.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/menu/button1.png
Binary file added assets/menu/ingame_background.png
Binary file added assets/menu/menu_container.png
Binary file added assets/menu/wizard_lobby_menu.png
Binary file added assets/menu/wizard_main_menu.png
Binary file added assets/menu/wizard_main_menu2.png
Binary file added assets/suits/blue.png
Binary file added assets/suits/green.png
Binary file added assets/suits/red.png
Binary file added assets/suits/yellow.png
3 changes: 1 addition & 2 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ TARGET="linux"
DEST_PATH="/mnt/c/Users/capos/Downloads"
BUILD_TYPE="release"
FEATURES=""
EXE_EXT=""

while getopts "t:fh" opt; do
case $opt in
Expand Down Expand Up @@ -35,11 +36,9 @@ case $TARGET in
;;
linux)
TARGET_NAME="x86_64-unknown-linux-gnu"
EXE_EXT=""
;;
macos)
TARGET_NAME="aarch64-apple-darwin"
EXE_EXT=""
;;
*)
echo "Unknown target: $TARGET"
Expand Down
4 changes: 4 additions & 0 deletions rust-toolchain.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[toolchain]
channel = "1.90.0"
components = ["rustfmt", "clippy"]
profile = "minimal"
Loading
Loading