fix: Update toggle TileState debug bind to Shift + LMB instead of only

LMB
This commit is contained in:
demenik
2025-12-01 16:52:46 +01:00
parent 08e2502176
commit e990957ac0
2 changed files with 58 additions and 15 deletions

View File

@@ -40,7 +40,7 @@ cargo run
### Hidden binds (Only available in the debug build)
- `Shift + Enter`: Duration of the current phase is set to 3 seconds.
- `Left Mouse Button` on Tile: Rotate tile state.
- `Shift + Left Mouse Button` on Tile: Toggle tile state.
- `Shift + Arrow Up`: Add one berry to your inventory
- `Shift + Arrow Down`: Remove one berry from your inventory

View File

@@ -21,6 +21,9 @@ impl Plugin for InputPlugin {
interact_click.run_if(in_state(AppState::GameScreen)),
);
#[cfg(debug_assertions)]
app.add_systems(Update, debug_click.run_if(in_state(AppState::GameScreen)));
app.add_message::<PhaseTimerPauseMessage>();
app.add_systems(
Update,
@@ -74,14 +77,12 @@ fn move_click(
fn interact_click(
mut interact_messages: MessageWriter<InteractStartMessage>,
mouse_btn: Res<ButtonInput<MouseButton>>,
keys: Res<ButtonInput<KeyCode>>,
window: Single<&Window, With<PrimaryWindow>>,
camera: Single<(&Camera, &GlobalTransform), With<Camera2d>>,
config: Res<GameConfig>,
phase: Res<CurrentPhase>,
ui_query: Query<(&ComputedNode, &GlobalTransform), With<Node>>,
// for debug
grid: ResMut<Grid>,
tile_query: Query<&mut TileState>,
) {
match phase.0 {
Phase::Focus { .. } => return,
@@ -89,6 +90,9 @@ fn interact_click(
}
if mouse_btn.just_pressed(MouseButton::Left) {
if keys.pressed(KeyCode::ShiftLeft) || keys.pressed(KeyCode::ShiftRight) {
return;
}
let (cam, cam_transform) = *camera;
let Some(cursor_pos) = window.cursor_position() else {
@@ -108,8 +112,48 @@ fn interact_click(
println!("Interact Click: ({}, {})", x, y);
interact_messages.write(InteractStartMessage { x, y });
}
}
if cfg!(debug_assertions) {
fn debug_click(
mouse_btn: Res<ButtonInput<MouseButton>>,
keys: Res<ButtonInput<KeyCode>>,
window: Single<&Window, With<PrimaryWindow>>,
camera: Single<(&Camera, &GlobalTransform), With<Camera2d>>,
config: Res<GameConfig>,
phase: Res<CurrentPhase>,
ui_query: Query<(&ComputedNode, &GlobalTransform), With<Node>>,
grid: Res<Grid>,
tile_query: Query<&mut TileState>,
) {
match phase.0 {
Phase::Focus { .. } => return,
_ => {}
}
if mouse_btn.just_pressed(MouseButton::Left) {
if !keys.pressed(KeyCode::ShiftLeft) && !keys.pressed(KeyCode::ShiftRight) {
return;
}
let (cam, cam_transform) = *camera;
let Some(cursor_pos) = window.cursor_position() else {
return;
};
if ui_blocks(window, cursor_pos, ui_query) {
return;
}
let Ok(world_pos) = cam.viewport_to_world(cam_transform, cursor_pos) else {
return;
};
let Ok((x, y)) =
world_to_grid_coords(world_pos.origin, config.grid_width, config.grid_height)
else {
return;
};
println!("Debug Toggle Click: ({}, {})", x, y);
grid.map_tile_state(
(x, y),
|state| match state {
@@ -121,7 +165,6 @@ fn interact_click(
)
.unwrap_or_else(|_| ());
}
}
}
fn phase_timer_pause(