Compare commits

1 Commits

Author SHA1 Message Date
dev 27114d1dfd Sticky pieces when moved out of board 2026-08-10 11:48:03 +05:30
2 changed files with 8 additions and 8 deletions
+4 -4
View File
@@ -138,16 +138,16 @@ impl Game {
let active_game_mode_btn = game_mode_btns.get(&game_mode).unwrap(); let active_game_mode_btn = game_mode_btns.get(&game_mode).unwrap();
game::button(&mut widgets, *active_game_mode_btn).is_active = false; game::button(&mut widgets, *active_game_mode_btn).is_active = false;
let mut w_board = BoardWidget::new(puzzle.board.size, puzzle.board.clone());
w_board.on_board_state_changed = |s| Command::UpdateBoard(s.new_board_state);
let board = add_widget(&mut widgets, Widget::Board(w_board));
let mut w_controls = ControlsWidget::new(); let mut w_controls = ControlsWidget::new();
w_controls.add(KeyCode::Q, Command::Quit); w_controls.add(KeyCode::Q, Command::Quit);
w_controls.add(KeyCode::Escape, Command::HideRules); w_controls.add(KeyCode::Escape, Command::HideRules);
w_controls.add(KeyCode::D, Command::ToggleDebug); w_controls.add(KeyCode::D, Command::ToggleDebug);
add_widget(&mut widgets, Widget::Controls(w_controls)); add_widget(&mut widgets, Widget::Controls(w_controls));
let mut w_board = BoardWidget::new(puzzle.board.size, puzzle.board.clone());
w_board.on_board_state_changed = |s| Command::UpdateBoard(s.new_board_state);
let board = add_widget(&mut widgets, Widget::Board(w_board));
Game { Game {
puzzle, puzzle,
board, board,
+4 -4
View File
@@ -171,10 +171,6 @@ impl BoardWidget {
settings: &Settings, settings: &Settings,
) -> Option<BoardInteraction> { ) -> Option<BoardInteraction> {
let mouse_pos = interaction.mouse_pos; let mouse_pos = interaction.mouse_pos;
if mouse_pos.overlaps_rect(&self.board_rect) == false {
return None;
}
let old_board_state = self.current_board.state; let old_board_state = self.current_board.state;
if is_mouse_button_released(MouseButton::Left) { if is_mouse_button_released(MouseButton::Left) {
let current_state = self.state.clone(); let current_state = self.state.clone();
@@ -199,6 +195,10 @@ impl BoardWidget {
} }
if is_mouse_button_pressed(MouseButton::Left) { if is_mouse_button_pressed(MouseButton::Left) {
if mouse_pos.overlaps_rect(&self.board_rect) == false {
return None;
}
let current_state = self.state.clone(); let current_state = self.state.clone();
let new_state = match current_state { let new_state = match current_state {
GameState::SelectSource(previous_target) => { GameState::SelectSource(previous_target) => {