From 1630cf25c86aadd49fe5506d240caa52334840e6 Mon Sep 17 00:00:00 2001 From: CrispyPin Date: Fri, 4 Apr 2025 23:49:32 +0200 Subject: [PATCH 1/3] add test for the comparator bug fixed earlier, split the other test in two --- tests/main.rs | 52 +++++++++++++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 22 deletions(-) diff --git a/tests/main.rs b/tests/main.rs index 7b8e118..1951b9f 100644 --- a/tests/main.rs +++ b/tests/main.rs @@ -1,27 +1,35 @@ use marble_machinations::marble_engine::{grid::Grid, Machine}; +fn no_input_test(steps: usize, output: &[u8], grid: &str) { + let mut engine = Machine::new_empty(); + engine.set_grid(Grid::from_ascii(grid)); + for _ in 0..(steps - 1) { + engine.step(); + } + assert_ne!(engine.output(), output, "output arrived early"); + engine.step(); + assert_eq!(engine.output(), output, "expected output"); +} + #[test] fn creating_marbles_cause_indirect_claim() { - let mut eng = Machine::new_empty(); - eng.set_grid(Grid::from_ascii( - " - I -o 2 - B- o - B | |-*-| - |-+o | | -*-| |* -B B- - - 1 3 - - - - - I I -", - )); - for _ in 0..9 { - eng.step(); - } - assert_eq!(eng.output(), [1, 2, 3]); + no_input_test(3, &[1], " o \n|-*-|\n| 1 |\n-B B-\n I\n"); +} + +#[test] +fn bug_overlapping_marble_creation_blocks_tile_forever() { + no_input_test( + 7, + &[1, 2, 3], + " I \no 3 o\n2I B+*\n B |1\n |-+\n*-| I\n\nI\n", + ); +} + +#[test] +fn bug_equal_comparator_order_lock() { + no_input_test( + 6, + &[1, 2, 3, 4], + "I \n I\n21\n o\nBB|*-++\n|=+ |=-\n |+ BB\n\n 34\n\n I\n I\n", + ); } From 01e8fbb4bbb5d85d36b1371b72b1f2de0933428a Mon Sep 17 00:00:00 2001 From: CrispyPin Date: Fri, 4 Apr 2025 23:52:47 +0200 Subject: [PATCH 2/3] bump version to 0.3.0 --- CHANGELOG.md | 2 +- Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a95f3f..e86ce5e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ # Marble Machinations Change Log Game store page: https://crispypin.itch.io/marble-machinations -## [Unreleased] +## v0.3.0 - 2025-04-04 ### added - score number: bounding area - configurable key bindings for many editor actions diff --git a/Cargo.lock b/Cargo.lock index 9fb4354..d4c39b5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -213,7 +213,7 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "marble-machinations" -version = "0.2.1" +version = "0.3.0" dependencies = [ "arboard", "raylib", diff --git a/Cargo.toml b/Cargo.toml index ce224e7..e184723 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "marble-machinations" -version = "0.2.1" +version = "0.3.0" edition = "2021" default-run = "marble-machinations" From 187020fc2772e5de3e89fa9877fd6777ad5d246d Mon Sep 17 00:00:00 2001 From: CrispyPin Date: Sat, 5 Apr 2025 00:38:05 +0200 Subject: [PATCH 3/3] update readme/todo list --- CHANGELOG.md | 4 +++- README.md | 13 ++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e86ce5e..011b04a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,13 @@ # Marble Machinations Change Log Game store page: https://crispypin.itch.io/marble-machinations +## [unreleased] + ## v0.3.0 - 2025-04-04 ### added - score number: bounding area - configurable key bindings for many editor actions -- QWERTY+ASDFGH keybindings for the tile tools +- QWERTY+ASDFGH keybindings for the tile tools by default - OS clipboard copy/paste, with fallback to old behavior when copying - cut selection - in-grid text comments (not yet editable in-game) diff --git a/README.md b/README.md index e466519..e6d4c93 100644 --- a/README.md +++ b/README.md @@ -8,20 +8,26 @@ logic mostly like https://git.crispypin.cc/CrispyPin/marble ### meta - engine tests - blag post about marble movement logic -### game +### bugs +- modifier-less bindings trigger when typing in a text box, makes renaming existing blueprints basically impossible +### features - comments - editing - add to all intro levels +- highlight regions with background colours - UI layout engine - global scale setting -- highlight regions with background colours +- button + binding to flip selection that is being pasted - accessibility - background colour setting - hotkeys for everything (no mouse needed to play) + - menu navigation (requires UI rework) + - speed up/down + - grid cursor movement and placement + - grid zoom and pan - more levels - scroll output bytes - timestamps in solutions and blueprints -- lock tile types for early levels to make it less overwhelming - display tool variant more clearly (it's not obvious there are more states) - better text rendering - font selection (probably a lot of work) @@ -31,6 +37,7 @@ logic mostly like https://git.crispypin.cc/CrispyPin/marble - show histograms - author name in solutions and blueprints ### undecided +- hide some tile tools in early levels to make it less overwhelming - footprint score (tiles that were non-empty at any point in the run) - option to use 8-bit marbles? - blueprint rotation?