fix duplicate heads collecting
turns out we did not consider the ActiveHeads just duplicates in the backpack
This commit is contained in:
@@ -4,7 +4,10 @@ use crate::{
|
|||||||
protocol::PlaySound,
|
protocol::PlaySound,
|
||||||
};
|
};
|
||||||
use crate::{
|
use crate::{
|
||||||
cash::CashCollectEvent, global_observer, head_drop::HeadCollected, heads::HeadState,
|
cash::CashCollectEvent,
|
||||||
|
global_observer,
|
||||||
|
head_drop::HeadCollected,
|
||||||
|
heads::{ActiveHeads, HeadState},
|
||||||
heads_database::HeadsDatabase,
|
heads_database::HeadsDatabase,
|
||||||
};
|
};
|
||||||
use bevy::prelude::*;
|
use bevy::prelude::*;
|
||||||
@@ -155,14 +158,14 @@ fn sync_backpack_ui(backpack: &Backpack, state: &mut BackpackUiState, time: f32)
|
|||||||
fn on_head_collect(
|
fn on_head_collect(
|
||||||
trigger: On<HeadCollected>,
|
trigger: On<HeadCollected>,
|
||||||
mut cmds: Commands,
|
mut cmds: Commands,
|
||||||
mut backpack: Query<&mut Backpack>,
|
mut query: Query<(&mut Backpack, &ActiveHeads)>,
|
||||||
heads_db: Res<HeadsDatabase>,
|
heads_db: Res<HeadsDatabase>,
|
||||||
) -> Result {
|
) -> Result {
|
||||||
let HeadCollected { head, entity } = *trigger.event();
|
let HeadCollected { head, entity } = *trigger.event();
|
||||||
|
|
||||||
let mut backpack = backpack.get_mut(entity)?;
|
let (mut backpack, active_heads) = query.get_mut(entity)?;
|
||||||
|
|
||||||
if backpack.contains(head) {
|
if backpack.contains(head) || active_heads.contains(head) {
|
||||||
cmds.trigger(CashCollectEvent);
|
cmds.trigger(CashCollectEvent);
|
||||||
} else {
|
} else {
|
||||||
backpack.insert(head, heads_db.as_ref());
|
backpack.insert(head, heads_db.as_ref());
|
||||||
|
|||||||
@@ -171,6 +171,10 @@ impl ActiveHeads {
|
|||||||
|
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn contains(&self, head: usize) -> bool {
|
||||||
|
self.heads.iter().any(|h| h.is_some_and(|h| h.head == head))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Event)]
|
#[derive(Event)]
|
||||||
|
|||||||
Reference in New Issue
Block a user