diff --git a/src/events.rs b/src/events.rs index 2cddddb..9e5e797 100644 --- a/src/events.rs +++ b/src/events.rs @@ -5,6 +5,10 @@ pub struct ToggleWallBlockEvent { pub translation: Vec3, } +pub struct UpdateDebugValuesEvent { + pub translation: Vec3, +} + // Event to cycle through Points of Interest pub struct CyclePOIEvent; diff --git a/src/main.rs b/src/main.rs index 546b260..655eff9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -20,8 +20,8 @@ mod prelude { pub use crate::field_of_view::*; pub use crate::player_animation::*; pub use crate::systems::{ - animate_player::*, arrow_keys::*, cycle_poi::*, pathfinding::*, player_move::*, setup::*, - visibility::*, + animate_player::*, arrow_keys::*, cycle_poi::*, debug_values::*, mouse_click::*, + pathfinding::*, player_move::*, setup::*, visibility::*, }; pub use crate::utils::*; @@ -64,7 +64,7 @@ fn main() { .insert_resource(CycleTimer(Timer::from_seconds(8.0, true))) .insert_resource(MovementTimer(Timer::from_seconds(0.1, true))) .insert_resource(field_of_view::Visibility::new(false, MAX_VISIBLE_DISTANCE)) - .add_event::() + .add_event::() .add_event::() .add_event::() .add_plugins(DefaultPlugins) @@ -75,11 +75,11 @@ fn main() { .register_ldtk_entity::("Player") .register_ldtk_entity::("Chest") // .add_system(play_speed) - // .add_system(mouse_click) + .add_system(mouse_click) .add_system(cycle_point_of_interest) .add_system(arrow_keys) .add_system(player_move) - // .add_system(toggle_wall) + .add_system(debug_values) // .add_system(pathfinding) .add_system(visibility_calc) .add_system_set( diff --git a/src/systems/debug_values.rs b/src/systems/debug_values.rs new file mode 100644 index 0000000..9f3210f --- /dev/null +++ b/src/systems/debug_values.rs @@ -0,0 +1,55 @@ +use crate::prelude::*; + +/// Toggle the wall block at the location described in the event +pub fn debug_values( + mut debug_values: EventReader, + player_query: Query<&Transform, With>, + visibility: Res, +) { + if player_query.get_single().is_err() { + return; + } + + let player_translation = player_query.get_single().unwrap().translation; + + for event in debug_values.iter() { + let event: &UpdateDebugValuesEvent = event; + + let player_grid_pos = translation_to_grid_pos(player_translation); + let vis_observer_grid_pos = visibility.observer; + let tile = translation_to_grid_pos(event.translation); + + if tile.is_none() || player_grid_pos.is_none() { + break; + } + let tile = tile.unwrap(); + let player_grid_pos = player_grid_pos.unwrap(); + + let octant_1_slope = + Octant::NorthOfEast.slope_abs(&visibility.observer, &tile, Pivot::_Center); + let octant_2_slope = + Octant::EastOfNorth.slope_abs(&visibility.observer, &tile, Pivot::_Center); + + let octant_3_slope = + Octant::WestOfNorth.slope_abs(&visibility.observer, &tile, Pivot::_Center); + + let octant_4_slope = + Octant::NorthOfWest.slope_abs(&visibility.observer, &tile, Pivot::_Center); + + println!("{player_grid_pos:?}"); + println!("{vis_observer_grid_pos:?}"); + println!("{tile:?}"); + + println!("_\\{octant_3_slope:1.3}|{octant_2_slope:1.3}/1"); + println!("__\\____|____/__"); + println!("___\\___|___/___"); + println!("____\\__|__/____"); + println!("{octant_4_slope:1.3}\\_|_/{octant_1_slope:1.3}"); + println!("------@_@------"); + println!("55555/_|_\\88888"); + println!("____/__|__\\____"); + println!("___/___|___\\___"); + println!("__/____|____\\__"); + println!("_/66666|77777\\_"); + } +} diff --git a/src/systems/mod.rs b/src/systems/mod.rs index 67b561b..12ac1c1 100644 --- a/src/systems/mod.rs +++ b/src/systems/mod.rs @@ -1,6 +1,7 @@ pub mod animate_player; pub mod arrow_keys; pub mod cycle_poi; +pub mod debug_values; pub mod mouse_click; pub mod pathfinding; pub mod play_speed; diff --git a/src/systems/mouse_click.rs b/src/systems/mouse_click.rs index 3e42566..9aff777 100644 --- a/src/systems/mouse_click.rs +++ b/src/systems/mouse_click.rs @@ -4,20 +4,20 @@ use crate::prelude::*; pub fn mouse_click( mouse_button_input: Res>, windows: Res, - mut toggle_wall: EventWriter, - mut cycle_point_of_interest: EventWriter, + mut update_debug_values: EventWriter, + // mut cycle_point_of_interest: EventWriter, ) { if mouse_button_input.just_pressed(MouseButton::Left) { if let Some(window) = windows.get_primary() { if let Some(cursor_pos) = window.cursor_position() { if let Some(translation) = snap_to_grid(Vec3::new(cursor_pos.x, cursor_pos.y, 1.)) { - toggle_wall.send(ToggleWallBlockEvent { translation }); + update_debug_values.send(UpdateDebugValuesEvent { translation }); } } } } - if mouse_button_input.just_pressed(MouseButton::Right) { - cycle_point_of_interest.send(CyclePOIEvent {}); - } + // if mouse_button_input.just_pressed(MouseButton::Right) { + // cycle_point_of_interest.send(CyclePOIEvent {}); + // } }