diff --git a/README.md b/README.md index ff84493..e466519 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,11 @@ # Marble Machinations +A zach-like programming-adjacent puzzle game. +Still in development, but core features are mostly stable. logic mostly like https://git.crispypin.cc/CrispyPin/marble ## todo ### meta -- itch page text - engine tests - blag post about marble movement logic ### game @@ -29,7 +30,7 @@ logic mostly like https://git.crispypin.cc/CrispyPin/marble - validate solutions in server (with limits) - show histograms - author name in solutions and blueprints -#### undecided +### undecided - footprint score (tiles that were non-empty at any point in the run) - option to use 8-bit marbles? - blueprint rotation? diff --git a/src/editor.rs b/src/editor.rs index 282f57d..4db5372 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -620,7 +620,7 @@ impl Editor { self.draw_board(d, &globals.textures); self.board_overlay(d, &globals.textures); self.draw_bottom_bar(d, globals); - self.draw_top_bar(d, &globals.textures); + self.draw_top_bar(d, globals); if self.active_tool == Tool::Blueprint { self.draw_blueprint_sidebar(d, &globals.textures); @@ -786,7 +786,8 @@ impl Editor { } } - fn draw_top_bar(&mut self, d: &mut RaylibDrawHandle, textures: &Textures) { + fn draw_top_bar(&mut self, d: &mut RaylibDrawHandle, globals: &Globals) { + let textures = &globals.textures; // background d.draw_rectangle( 0, @@ -822,7 +823,8 @@ impl Editor { (40, 4), textures.get("save"), (&mut self.tooltip, "save"), - ) { + ) || globals.is_pressed(ActionId::Save) + { self.exit_state = ExitState::Save; } diff --git a/src/input.rs b/src/input.rs index b705f2b..4d695b0 100644 --- a/src/input.rs +++ b/src/input.rs @@ -25,6 +25,7 @@ pub enum ActionId { Paste, Erase, ToggleMenu, + Save, StartSim, StopSim, StepSim, @@ -65,6 +66,7 @@ impl Default for Input { bind_key(ActionId::Paste, vec![LCtrl], V); bind_key(ActionId::Erase, vec![], Backspace); bind_key(ActionId::ToggleMenu, vec![], Escape); + bind_key(ActionId::Save, vec![LCtrl], S); bind_key(ActionId::StartSim, vec![], Enter); bind_key(ActionId::StopSim, vec![], Enter); bind_key(ActionId::StepSim, vec![], Space);