generated from 2ndbeam/bevy-template
feat: Derive traits
This commit is contained in:
parent
0a0eb14a6b
commit
ffdb5d94a8
11 changed files with 115 additions and 79 deletions
66
src/lib.rs
66
src/lib.rs
|
|
@ -1,37 +1,32 @@
|
|||
use bevy::{
|
||||
prelude::*,
|
||||
ui_widgets::ScrollbarPlugin
|
||||
ui_widgets::ScrollbarPlugin,
|
||||
};
|
||||
use bevy_rapier2d::{
|
||||
prelude::*,
|
||||
rapier::prelude::IntegrationParameters
|
||||
rapier::prelude::IntegrationParameters,
|
||||
};
|
||||
|
||||
pub mod player;
|
||||
pub mod layout;
|
||||
pub mod input;
|
||||
pub mod inventory;
|
||||
pub mod ui;
|
||||
pub mod layout;
|
||||
pub mod player;
|
||||
#[cfg(test)]
|
||||
mod tests;
|
||||
pub mod ui;
|
||||
|
||||
pub const PIXELS_PER_METER: f32 = 16.0;
|
||||
|
||||
pub struct ExpeditionPlugin;
|
||||
|
||||
#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Default, States)]
|
||||
#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Default, States, Reflect)]
|
||||
#[reflect(Clone, PartialEq, Debug, Default, Hash, State)]
|
||||
pub enum GameState {
|
||||
#[default]
|
||||
Running,
|
||||
Inventory,
|
||||
}
|
||||
|
||||
pub fn insert_entity_name(names: Query<(Entity, &mut Name), Added<Name>>) {
|
||||
for (entity, mut name) in names {
|
||||
name.mutate(|name| name.insert_str(0, format!("{entity}: ").as_str()));
|
||||
}
|
||||
}
|
||||
|
||||
fn camera_bundle() -> impl Bundle {
|
||||
(
|
||||
Camera2d,
|
||||
|
|
@ -50,6 +45,12 @@ fn camera_bundle() -> impl Bundle {
|
|||
)
|
||||
}
|
||||
|
||||
fn insert_entity_name(names: Query<(Entity, &mut Name), Added<Name>>) {
|
||||
for (entity, mut name) in names {
|
||||
name.mutate(|name| name.insert_str(0, format!("{entity}: ").as_str()));
|
||||
}
|
||||
}
|
||||
|
||||
fn setup_global(mut commands: Commands) {
|
||||
commands.spawn(camera_bundle());
|
||||
commands.spawn(ui::UiRoot::new());
|
||||
|
|
@ -57,34 +58,39 @@ fn setup_global(mut commands: Commands) {
|
|||
|
||||
impl Plugin for ExpeditionPlugin {
|
||||
fn build(&self, app: &mut App) {
|
||||
let rapier_init = RapierContextInitialization::InitializeDefaultRapierContext {
|
||||
integration_parameters: IntegrationParameters {
|
||||
length_unit: PIXELS_PER_METER,
|
||||
..default()
|
||||
},
|
||||
rapier_configuration: RapierConfiguration {
|
||||
gravity: Vec2::ZERO,
|
||||
physics_pipeline_active: true,
|
||||
scaled_shape_subdivision: 10,
|
||||
force_update_from_transform_changes: false,
|
||||
},
|
||||
};
|
||||
app.add_plugins((
|
||||
RapierDebugRenderPlugin::default(),
|
||||
RapierPhysicsPlugin::<()>::default()
|
||||
.with_custom_initialization(rapier_init),
|
||||
ScrollbarPlugin,
|
||||
input::plugin::InputAssetPlugin::<input::InputAction>::default(),
|
||||
input::plugin::InputAssetPlugin::<input::UiAction>::default(),
|
||||
ScrollbarPlugin,
|
||||
RapierPhysicsPlugin::<()>::default()
|
||||
.with_custom_initialization(RapierContextInitialization::InitializeDefaultRapierContext {
|
||||
integration_parameters: IntegrationParameters {
|
||||
length_unit: PIXELS_PER_METER,
|
||||
..default()
|
||||
},
|
||||
rapier_configuration: RapierConfiguration {
|
||||
gravity: Vec2::ZERO,
|
||||
physics_pipeline_active: true,
|
||||
scaled_shape_subdivision: 10,
|
||||
force_update_from_transform_changes: false,
|
||||
},
|
||||
}),
|
||||
RapierDebugRenderPlugin::default(),
|
||||
))
|
||||
.init_state::<GameState>()
|
||||
.insert_resource(ui::WindowSize::default())
|
||||
.add_systems(Startup, (player::systems::setup_player, setup_global, layout::systems::setup_world))
|
||||
.add_systems(Startup, (
|
||||
setup_global,
|
||||
layout::systems::setup_world,
|
||||
player::systems::setup_player,
|
||||
))
|
||||
.add_systems(Update, (
|
||||
insert_entity_name,
|
||||
layout::systems::detect_interact_collisions,
|
||||
player::systems::handle_input,
|
||||
ui::update_window_size,
|
||||
ui::handle_input,
|
||||
insert_entity_name,
|
||||
layout::systems::detect_interact_collisions,
|
||||
))
|
||||
.add_systems(OnEnter(GameState::Inventory), ui::inventory::systems::setup_ui_inventory)
|
||||
.add_systems(OnExit(GameState::Inventory), ui::inventory::systems::clear_ui_inventory)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue