Sticky pieces when moved out of board
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user