Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/events.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
10 changes: 5 additions & 5 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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::*;

Expand Down Expand Up @@ -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::<ToggleWallBlockEvent>()
.add_event::<UpdateDebugValuesEvent>()
.add_event::<PlayerMoveEvent>()
.add_event::<CyclePOIEvent>()
.add_plugins(DefaultPlugins)
Expand All @@ -75,11 +75,11 @@ fn main() {
.register_ldtk_entity::<components::PlayerBundle>("Player")
.register_ldtk_entity::<components::ChestBundle>("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(
Expand Down
55 changes: 55 additions & 0 deletions src/systems/debug_values.rs
Original file line number Diff line number Diff line change
@@ -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<UpdateDebugValuesEvent>,
player_query: Query<&Transform, With<Player>>,
visibility: Res<crate::field_of_view::Visibility>,
) {
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\\_");
}
}
1 change: 1 addition & 0 deletions src/systems/mod.rs
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
12 changes: 6 additions & 6 deletions src/systems/mouse_click.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,20 @@ use crate::prelude::*;
pub fn mouse_click(
mouse_button_input: Res<Input<MouseButton>>,
windows: Res<Windows>,
mut toggle_wall: EventWriter<ToggleWallBlockEvent>,
mut cycle_point_of_interest: EventWriter<CyclePOIEvent>,
mut update_debug_values: EventWriter<UpdateDebugValuesEvent>,
// mut cycle_point_of_interest: EventWriter<CyclePOIEvent>,
) {
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 {});
// }
}