Input replication (#62)
This commit is contained in:
@@ -5,11 +5,12 @@ use crate::{
|
||||
cash::CashCollectEvent, global_observer, head_drop::HeadCollected, heads::HeadState,
|
||||
heads_database::HeadsDatabase,
|
||||
};
|
||||
pub use backpack_ui::BackpackAction;
|
||||
use bevy::prelude::*;
|
||||
use serde::{Deserialize, Serialize};
|
||||
pub use ui_head_state::UiHeadState;
|
||||
|
||||
#[derive(Resource, Default)]
|
||||
#[derive(Component, Default, Reflect, Serialize, Deserialize, PartialEq)]
|
||||
#[reflect(Component)]
|
||||
pub struct Backpack {
|
||||
pub heads: Vec<HeadState>,
|
||||
}
|
||||
@@ -38,7 +39,7 @@ impl Backpack {
|
||||
pub struct BackbackSwapEvent(pub usize);
|
||||
|
||||
pub fn plugin(app: &mut App) {
|
||||
app.init_resource::<Backpack>();
|
||||
app.register_type::<Backpack>();
|
||||
|
||||
app.add_plugins(backpack_ui::plugin);
|
||||
|
||||
@@ -48,14 +49,18 @@ pub fn plugin(app: &mut App) {
|
||||
fn on_head_collect(
|
||||
trigger: Trigger<HeadCollected>,
|
||||
mut cmds: Commands,
|
||||
mut backpack: ResMut<Backpack>,
|
||||
mut backpack: Query<&mut Backpack>,
|
||||
heads_db: Res<HeadsDatabase>,
|
||||
) {
|
||||
) -> Result {
|
||||
let HeadCollected(head) = *trigger.event();
|
||||
|
||||
let mut backpack = backpack.get_mut(trigger.target())?;
|
||||
|
||||
if backpack.contains(head) {
|
||||
cmds.trigger(CashCollectEvent);
|
||||
} else {
|
||||
backpack.insert(head, heads_db.as_ref());
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user