generated from 2ndbeam/bevy-template
ui: Beginning of UI-related stuff
- UiRoot component - WindowSize resource and update_window_size system - UiInventory and UiInventorySlot components - UiInventory now shows player inventory slots
This commit is contained in:
parent
5f59e02788
commit
ab993be476
6 changed files with 183 additions and 10 deletions
|
|
@ -1,7 +1,7 @@
|
|||
use bevy::prelude::*;
|
||||
use leafwing_input_manager::prelude::*;
|
||||
|
||||
use crate::InputAction as Action;
|
||||
use crate::{GameState, InputAction as Action, inventory::{ActiveInventory, Inventory}};
|
||||
|
||||
#[derive(Component)]
|
||||
pub struct Player {
|
||||
|
|
@ -18,6 +18,8 @@ fn player_bundle(asset_server: &Res<AssetServer>) -> impl Bundle {
|
|||
Sprite::from_image(image),
|
||||
Transform::from_xyz(0f32, 0f32, 1f32),
|
||||
Action::default_input_map(),
|
||||
Inventory::new(UVec2::new(12, 8)),
|
||||
ActiveInventory,
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -27,15 +29,33 @@ pub fn setup_player(mut commands: Commands, asset_server: Res<AssetServer>) {
|
|||
|
||||
pub fn handle_input(
|
||||
time: Res<Time>,
|
||||
mut player: Query<(&Player, &ActionState<Action>, &mut Transform, &mut Sprite)>,
|
||||
state: Res<State<GameState>>,
|
||||
mut next_state: ResMut<NextState<GameState>>,
|
||||
mut player: Query<(&Player, &mut ActionState<Action>, &mut Transform, &mut Sprite)>,
|
||||
) {
|
||||
let player = player.single_mut().expect("Player should be single");
|
||||
let (Player {speed}, action_state, mut transform, mut sprite) = player;
|
||||
|
||||
let direction = action_state.clamped_value(&Action::Move);
|
||||
match state.get() {
|
||||
GameState::Running => {
|
||||
let (Player {speed}, mut action_state, mut transform, mut sprite) = player;
|
||||
|
||||
transform.translation.x += direction * speed * time.delta_secs();
|
||||
if direction != 0f32 {
|
||||
sprite.flip_x = direction < 0f32;
|
||||
if action_state.just_released(&Action::ToggleInventory) {
|
||||
next_state.set(GameState::Inventory);
|
||||
action_state.reset(&Action::ToggleInventory);
|
||||
}
|
||||
|
||||
let direction = action_state.clamped_value(&Action::Move);
|
||||
|
||||
transform.translation.x += direction * speed * time.delta_secs();
|
||||
if direction != 0f32 {
|
||||
sprite.flip_x = direction < 0f32;
|
||||
}
|
||||
},
|
||||
GameState::Inventory => {
|
||||
let (_, mut action_state, _, _) = player;
|
||||
if action_state.just_released(&Action::ToggleInventory) {
|
||||
next_state.set(GameState::Running);
|
||||
action_state.reset(&Action::ToggleInventory);
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue