public void CheckEnergyInjectionSlot(EarlyUpdateEvent e, DiscreteWeaponEnergyNode weapon, [JoinByTank] ObservationSlotNode slot, [JoinByModule] SingleNode <EnergyInjectionModuleReloadEnergyComponent> module) { if (this.CheckBlock(weapon.weaponEnergy, module.component, slot.Entity) && this.CheckBlock(weapon.cooldownTimer, slot.Entity)) { slot.Entity.AddComponentIfAbsent <InventorySlotTemporaryBlockedByClientComponent>(); } }
public void UnloadEnergyPerShot(BaseShotEvent evt, DiscreteWeaponEnergyNode weapon) { float unloadEnergyPerShot = weapon.discreteWeaponEnergy.UnloadEnergyPerShot; weapon.weaponEnergy.Energy -= unloadEnergyPerShot; weapon.weaponEnergy.Energy = Mathf.Clamp(weapon.weaponEnergy.Energy, 0f, 1f); weapon.weaponEnergyEsm.Esm.ChangeState <WeaponEnergyStates.WeaponEnergyReloadingState>(); }
public void CheckInitialState(NodeAddedEvent evt, DiscreteWeaponEnergyNode weapon, [Context, JoinByTank] ActiveTankNode activeTank) { if (weapon.weaponEnergy.Energy == 1f) { weapon.weaponEnergyEsm.Esm.ChangeState <WeaponEnergyStates.WeaponEnergyFullState>(); } else { weapon.weaponEnergyEsm.Esm.ChangeState <WeaponEnergyStates.WeaponEnergyReloadingState>(); } }