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"
checksum = "7bd7c21f4e2c11d40473d1ae673905f4deae3b12104fa6d70eeef9ef385aceb6"
dependencies = [
"bevy",
"bevy_reflect",
"bevy_utils",
"glam",

View File

@ -18,7 +18,7 @@ tracing = { version = "0.1", features = [
"release_max_level_warn",
] }
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_egui = { version = "0.31", optional = true }
thiserror = "2.0"

View File

@ -3,7 +3,7 @@ use crate::{
components::{CurrentFloor, MovementState, NextFloor},
events::TransitionFloor,
},
maze::components::Maze,
maze::components::HexMaze,
player::components::{MovementSpeed, Player},
};
use bevy::prelude::*;
@ -12,7 +12,7 @@ const MOVEMENT_THRESHOLD: f32 = 0.001;
pub(super) fn move_floors(
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>>,
time: Res<Time>,
) {
@ -34,7 +34,7 @@ pub(super) fn move_floors(
pub(super) fn handle_floor_transition_events(
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>>,
next_query: Query<Entity, With<NextFloor>>,
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(
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>>,
) -> Option<(Entity, f32)> {
query.get_single().ok().and_then(|entity| {

View File

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

View File

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

View File

@ -2,9 +2,9 @@ use crate::maze::{
components::MazeConfig,
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()
.with_radius(config.radius)
.with_seed(config.seed)

View File

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

View File

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

View File

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