run_if
This commit is contained in:
@@ -3,4 +3,4 @@ pub mod systems;
|
||||
|
||||
pub use crate::world::tiles::tilemap::CargoPlaceError;
|
||||
pub use components::{Cargo, CarryVisualState, HaulSlot, Haulable};
|
||||
pub use systems::{carry_visual_system, haul_encumbrance_system};
|
||||
pub use systems::{any_hauling, carry_visual_system, haul_encumbrance_system};
|
||||
|
||||
@@ -7,10 +7,17 @@ use crate::entities::item::inventory::constants::ENCUMBERED_SPEED_MULTIPLIER;
|
||||
use crate::entities::item::inventory::InventoryChangedEvent;
|
||||
use crate::entities::shared_components::Ambulatory;
|
||||
|
||||
/// Returns true if any entity has an occupied HaulSlot.
|
||||
/// Used to gate carry_visual_system — skips entire system when no one is hauling.
|
||||
pub fn any_hauling(query: Query<&HaulSlot>) -> bool {
|
||||
query.iter().any(|slot| slot.is_occupied())
|
||||
}
|
||||
|
||||
/// Cycle the carry visual sprite while the entity's HaulSlot is occupied.
|
||||
/// When empty, ensure the normal sprite is restored.
|
||||
///
|
||||
/// Runs in Update (visual only, no game state change).
|
||||
/// Only runs when at least one entity has an occupied HaulSlot.
|
||||
pub fn carry_visual_system(
|
||||
time: Res<Time>,
|
||||
mut query: Query<(&HaulSlot, &mut CarryVisualState, &mut Sprite)>,
|
||||
|
||||
Reference in New Issue
Block a user