From bb2b1fea7c8bcf623388913b31f13c14f850aa84 Mon Sep 17 00:00:00 2001 From: CrispyPin Date: Fri, 14 Mar 2025 22:20:48 +0100 Subject: [PATCH 1/2] fix tiles not being unclaimed after multiple marble creations block each other --- src/config.rs | 26 ++++++++++++++++++++++++++ src/marble_engine.rs | 7 +++++-- 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 src/config.rs diff --git a/src/config.rs b/src/config.rs new file mode 100644 index 0000000..cdcb5a3 --- /dev/null +++ b/src/config.rs @@ -0,0 +1,26 @@ +use std::collections::HashMap; + +use raylib::ffi::KeyboardKey; +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Default, Deserialize, Serialize)] +pub struct Config { + hotkeys: Hotkeys, +} + +#[derive(Debug, Default, Deserialize, Serialize)] +pub struct Hotkeys { + map: HashMap, +} + +#[derive(Debug, Deserialize, Serialize)] +pub struct Hotkey { + modifiers: Vec, + trigger: Trigger, +} + +#[derive(Debug, Deserialize, Serialize)] +pub enum Trigger { + Mouse(u32), + Key(u32), +} diff --git a/src/marble_engine.rs b/src/marble_engine.rs index 402842b..e0191fd 100644 --- a/src/marble_engine.rs +++ b/src/marble_engine.rs @@ -255,13 +255,17 @@ impl Machine { } // #### new marbles #### + let mut claim_positions = Vec::new(); // prepare creating the new marbles for &(pos, _val, _dir) in &new_marbles { let Some(Tile::Open(OpenTile::Blank, claim)) = self.board.get_mut(pos) else { unreachable!() }; *claim = match claim { - Claim::Free => Claim::Claimed, + Claim::Free => { + claim_positions.push(pos); + Claim::Claimed + } Claim::Claimed | Claim::Blocked => Claim::Blocked, _ => unreachable!(), } @@ -277,7 +281,6 @@ impl Machine { } // #### movement #### - let mut claim_positions = Vec::new(); // mark claims to figure out what spaces can be moved to for &pos in &self.marbles[..old_marbles] { let Some(Tile::Marble { value: _, dir }) = self.board.get(pos) else { From e7f424aadc4675752230b0013e5dd149c40d6d05 Mon Sep 17 00:00:00 2001 From: CrispyPin Date: Fri, 14 Mar 2025 22:22:12 +0100 Subject: [PATCH 2/2] bump version to 0.2.1 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index da99dd3..f8985f4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -250,7 +250,7 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "marble-machinations" -version = "0.2.0" +version = "0.2.1" dependencies = [ "raylib", "serde", diff --git a/Cargo.toml b/Cargo.toml index 1dd6974..a4578e8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "marble-machinations" -version = "0.2.0" +version = "0.2.1" edition = "2021" [dependencies]