feat(hexlab): enable bevy feature

This commit is contained in:
Kristofers Solo 2024-12-30 17:33:09 +02:00
parent 9e3538f571
commit 90f5443804
9 changed files with 25 additions and 25 deletions

1
Cargo.lock generated
View File

@ -2679,6 +2679,7 @@ version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7bd7c21f4e2c11d40473d1ae673905f4deae3b12104fa6d70eeef9ef385aceb6" checksum = "7bd7c21f4e2c11d40473d1ae673905f4deae3b12104fa6d70eeef9ef385aceb6"
dependencies = [ dependencies = [
"bevy",
"bevy_reflect", "bevy_reflect",
"bevy_utils", "bevy_utils",
"glam", "glam",

View File

@ -18,7 +18,7 @@ tracing = { version = "0.1", features = [
"release_max_level_warn", "release_max_level_warn",
] } ] }
hexx = { version = "0.19", features = ["bevy_reflect", "grid"] } hexx = { version = "0.19", features = ["bevy_reflect", "grid"] }
hexlab = { version = "0.5", features = ["bevy_reflect"] } hexlab = { version = "0.5", features = ["bevy"] }
bevy-inspector-egui = { version = "0.28", optional = true } bevy-inspector-egui = { version = "0.28", optional = true }
bevy_egui = { version = "0.31", optional = true } bevy_egui = { version = "0.31", optional = true }
thiserror = "2.0" thiserror = "2.0"

View File

@ -3,7 +3,7 @@ use crate::{
components::{CurrentFloor, MovementState, NextFloor}, components::{CurrentFloor, MovementState, NextFloor},
events::TransitionFloor, events::TransitionFloor,
}, },
maze::components::Maze, maze::components::HexMaze,
player::components::{MovementSpeed, Player}, player::components::{MovementSpeed, Player},
}; };
use bevy::prelude::*; use bevy::prelude::*;
@ -12,7 +12,7 @@ const MOVEMENT_THRESHOLD: f32 = 0.001;
pub(super) fn move_floors( pub(super) fn move_floors(
mut commands: Commands, mut commands: Commands,
mut maze_query: Query<(Entity, &mut Transform, Option<&mut MovementState>), With<Maze>>, mut maze_query: Query<(Entity, &mut Transform, Option<&mut MovementState>), With<HexMaze>>,
player_query: Query<&MovementSpeed, With<Player>>, player_query: Query<&MovementSpeed, With<Player>>,
time: Res<Time>, time: Res<Time>,
) { ) {
@ -34,7 +34,7 @@ pub(super) fn move_floors(
pub(super) fn handle_floor_transition_events( pub(super) fn handle_floor_transition_events(
mut commands: Commands, mut commands: Commands,
mut maze_query: Query<(Entity, &mut Transform, Option<&mut MovementState>), With<Maze>>, mut maze_query: Query<(Entity, &mut Transform, Option<&mut MovementState>), With<HexMaze>>,
current_query: Query<Entity, With<CurrentFloor>>, current_query: Query<Entity, With<CurrentFloor>>,
next_query: Query<Entity, With<NextFloor>>, next_query: Query<Entity, With<NextFloor>>,
mut event_reader: EventReader<TransitionFloor>, mut event_reader: EventReader<TransitionFloor>,
@ -82,7 +82,7 @@ fn update_current_next_floor(commands: &mut Commands, current_entity: Entity, ne
} }
fn get_floor_info( fn get_floor_info(
maze_query: &Query<(Entity, &mut Transform, Option<&mut MovementState>), With<Maze>>, maze_query: &Query<(Entity, &mut Transform, Option<&mut MovementState>), With<HexMaze>>,
query: &Query<Entity, With<impl Component>>, query: &Query<Entity, With<impl Component>>,
) -> Option<(Entity, f32)> { ) -> Option<(Entity, f32)> {
query.get_single().ok().and_then(|entity| { query.get_single().ok().and_then(|entity| {

View File

@ -2,14 +2,14 @@ use crate::floor::components::Floor;
use super::GlobalMazeConfig; use super::GlobalMazeConfig;
use bevy::prelude::*; use bevy::prelude::*;
use hexlab::Maze as HexMaze; use hexlab::Maze;
use hexx::{Hex, HexLayout, HexOrientation}; use hexx::{Hex, HexLayout, HexOrientation};
use rand::{rngs::StdRng, thread_rng, Rng, SeedableRng}; use rand::{rngs::StdRng, thread_rng, Rng, SeedableRng};
#[derive(Debug, Reflect, Component)] #[derive(Debug, Reflect, Component)]
#[reflect(Component)] #[reflect(Component)]
#[require(MazeConfig, Floor)] #[require(MazeConfig, Floor, Maze)]
pub struct Maze(pub HexMaze); pub struct HexMaze;
#[derive(Debug, Reflect, Component)] #[derive(Debug, Reflect, Component)]
#[reflect(Component)] #[reflect(Component)]

View File

@ -7,7 +7,7 @@ mod systems;
mod triggers; mod triggers;
use bevy::{ecs::system::RunSystemOnce, prelude::*}; use bevy::{ecs::system::RunSystemOnce, prelude::*};
use components::Maze; use components::HexMaze;
use events::{DespawnMaze, RespawnMaze, SpawnMaze}; use events::{DespawnMaze, RespawnMaze, SpawnMaze};
pub use resources::{GlobalMazeConfig, MazePluginLoaded}; pub use resources::{GlobalMazeConfig, MazePluginLoaded};
@ -16,7 +16,7 @@ pub(super) fn plugin(app: &mut App) {
.add_event::<SpawnMaze>() .add_event::<SpawnMaze>()
.add_event::<RespawnMaze>() .add_event::<RespawnMaze>()
.add_event::<DespawnMaze>() .add_event::<DespawnMaze>()
.register_type::<Maze>() .register_type::<HexMaze>()
.add_plugins((systems::plugin, triggers::plugin)); .add_plugins((systems::plugin, triggers::plugin));
} }

View File

@ -2,9 +2,9 @@ use crate::maze::{
components::MazeConfig, components::MazeConfig,
errors::{MazeError, MazeResult}, errors::{MazeError, MazeResult},
}; };
use hexlab::prelude::{Maze as HexMaze, *}; use hexlab::prelude::*;
pub fn generate_maze(config: &MazeConfig) -> MazeResult<HexMaze> { pub fn generate_maze(config: &MazeConfig) -> MazeResult<Maze> {
MazeBuilder::new() MazeBuilder::new()
.with_radius(config.radius) .with_radius(config.radius)
.with_seed(config.seed) .with_seed(config.seed)

View File

@ -1,12 +1,10 @@
use super::{common::generate_maze, spawn::spawn_maze_tiles}; use super::{common::generate_maze, spawn::spawn_maze_tiles};
use crate::{ use crate::{
floor::components::Floor, floor::components::Floor,
maze::{ maze::{assets::MazeAssets, errors::MazeError, events::RespawnMaze, GlobalMazeConfig},
assets::MazeAssets, components::Maze, errors::MazeError, events::RespawnMaze,
GlobalMazeConfig,
},
}; };
use bevy::prelude::*; use bevy::prelude::*;
use hexlab::Maze;
pub(super) fn respawn_maze( pub(super) fn respawn_maze(
trigger: Trigger<RespawnMaze>, trigger: Trigger<RespawnMaze>,
@ -30,7 +28,7 @@ pub(super) fn respawn_maze(
} }
}; };
maze.0 = match generate_maze(config) { *maze = match generate_maze(config) {
Ok(generated_maze) => generated_maze, Ok(generated_maze) => generated_maze,
Err(e) => { Err(e) => {
warn!("Failed to update floor ({floor}). {e}"); warn!("Failed to update floor ({floor}). {e}");
@ -43,7 +41,7 @@ pub(super) fn respawn_maze(
spawn_maze_tiles( spawn_maze_tiles(
&mut commands, &mut commands,
entity, entity,
&maze.0, &maze,
&assets, &assets,
config, config,
&global_config, &global_config,

View File

@ -3,14 +3,14 @@ use crate::{
floor::components::{CurrentFloor, Floor, NextFloor}, floor::components::{CurrentFloor, Floor, NextFloor},
maze::{ maze::{
assets::MazeAssets, assets::MazeAssets,
components::{Maze, MazeConfig, Tile, Wall}, components::{HexMaze, MazeConfig, Tile, Wall},
events::SpawnMaze, events::SpawnMaze,
resources::GlobalMazeConfig, resources::GlobalMazeConfig,
}, },
theme::palette::rose_pine::RosePine, theme::palette::rose_pine::RosePine,
}; };
use bevy::prelude::*; use bevy::prelude::*;
use hexlab::prelude::{Maze as HexMaze, Tile as HexTile, *}; use hexlab::prelude::{Tile as HexTile, *};
use hexx::HexOrientation; use hexx::HexOrientation;
use std::f32::consts::{FRAC_PI_2, FRAC_PI_3, FRAC_PI_6}; use std::f32::consts::{FRAC_PI_2, FRAC_PI_3, FRAC_PI_6};
@ -49,7 +49,8 @@ pub(super) fn spawn_maze(
let entity = commands let entity = commands
.spawn(( .spawn((
Name::new(format!("Floor {}", floor)), Name::new(format!("Floor {}", floor)),
Maze(maze.clone()), HexMaze,
maze.clone(),
Floor(*floor), Floor(*floor),
config.clone(), config.clone(),
Transform::from_translation(Vec3::ZERO.with_y(y_offset)), Transform::from_translation(Vec3::ZERO.with_y(y_offset)),
@ -73,7 +74,7 @@ pub(super) fn spawn_maze(
pub fn spawn_maze_tiles( pub fn spawn_maze_tiles(
commands: &mut Commands, commands: &mut Commands,
parent_entity: Entity, parent_entity: Entity,
maze: &HexMaze, maze: &Maze,
assets: &MazeAssets, assets: &MazeAssets,
maze_config: &MazeConfig, maze_config: &MazeConfig,
global_config: &GlobalMazeConfig, global_config: &GlobalMazeConfig,

View File

@ -1,10 +1,10 @@
use crate::{ use crate::{
floor::components::CurrentFloor, floor::components::CurrentFloor,
maze::components::{Maze, MazeConfig}, maze::components::MazeConfig,
player::components::{CurrentPosition, MovementTarget, Player}, player::components::{CurrentPosition, MovementTarget, Player},
}; };
use bevy::prelude::*; use bevy::prelude::*;
use hexlab::WallStorage; use hexlab::prelude::*;
use hexx::{EdgeDirection, HexOrientation}; use hexx::{EdgeDirection, HexOrientation};
pub(super) fn player_input( pub(super) fn player_input(
@ -25,7 +25,7 @@ pub(super) fn player_input(
continue; continue;
}; };
let Some(tile) = maze.0.get(current_pos) else { let Some(tile) = maze.get(current_pos) else {
continue; continue;
}; };