public void UpdateEnergy(TimeUpdateEvent e, ShaftEnergyNode weapon, [JoinByTank] HUDNodes.ActiveSelfTankNode tank, [JoinAll] SingleNode <MainHUDComponent> hud)
        {
            CooldownTimerComponent cooldownTimer = weapon.cooldownTimer;

            if ((weapon.weaponEnergy.Energy >= weapon.shaftEnergy.UnloadEnergyPerQuickShot) && ((cooldownTimer.CooldownTimerSec <= 0f) && weapon.Entity.HasComponent <ShootableComponent>()))
            {
                if (!weapon.Entity.HasComponent <BlinkMarkerComponent>())
                {
                    weapon.Entity.AddComponent <BlinkMarkerComponent>();
                    hud.component.EnergyBlink(true);
                }
            }
            else
            {
                if (weapon.Entity.HasComponent <BlinkMarkerComponent>())
                {
                    weapon.Entity.RemoveComponent <BlinkMarkerComponent>();
                }
                if (InputManager.GetActionKeyDown(ShotActions.SHOT))
                {
                    hud.component.EnergyBlink(false);
                }
            }
            hud.component.CurrentEnergyValue = weapon.weaponEnergy.Energy;
        }
 public void Init(NodeAddedEvent e, ShaftEnergyNode weapon, [JoinByTank, Context] HUDNodes.SelfTankNode tank, SingleNode <MainHUDComponent> hud)
 {
     hud.component.EnergyBarEnabled       = true;
     hud.component.MaxEnergyValue         = 1f;
     hud.component.CurrentEnergyValue     = 0f;
     hud.component.EnergyAmountPerSegment = 1f;
 }
Beispiel #3
0
 public void PlayLowEnergyForShaft(TimeUpdateEvent e, ShaftEnergyNode weapon, [JoinByTank] TankNode tank, [JoinAll] SoundListenerNode listener)
 {
     if (InputManager.GetActionKeyDown(ShotActions.SHOT))
     {
         CooldownTimerComponent cooldownTimer = weapon.cooldownTimer;
         if ((weapon.weaponEnergy.Energy < weapon.shaftEnergy.UnloadEnergyPerQuickShot) || ((cooldownTimer.CooldownTimerSec > 0f) || !weapon.Entity.HasComponent <ShootableComponent>()))
         {
             this.PlayLowEnergyFeedback(tank);
         }
     }
 }
Beispiel #4
0
        private void ReloadEnergy(TimeUpdateEvent evt, ShaftEnergyNode weapon)
        {
            float num = weapon.shaftEnergy.ReloadEnergyPerSec * evt.DeltaTime;

            weapon.weaponEnergy.Energy += num;
            if (weapon.weaponEnergy.Energy >= 1f)
            {
                weapon.weaponEnergy.Energy = 1f;
                weapon.weaponEnergyEsm.Esm.ChangeState <WeaponEnergyStates.WeaponEnergyFullState>();
            }
        }
Beispiel #5
0
 public void UnloadEnergyPerQuickShot(BaseShotEvent evt, ShaftEnergyNode weapon, [JoinByTank] SingleNode <ShaftIdleStateComponent> state)
 {
     this.UnloadEnergyByQuickShot(weapon);
 }
Beispiel #6
0
 public void UnloadEnergyPerAimingShot(BaseShotEvent evt, ShaftEnergyNode weapon, [JoinByTank] SingleNode <ShaftAimingWorkFinishStateComponent> state)
 {
     this.UnloadEnergyByAimingShot(weapon);
 }
Beispiel #7
0
 private void ApplyDeltaEnergy(float deltaEnergy, ShaftEnergyNode weapon)
 {
     weapon.weaponEnergy.Energy += deltaEnergy;
     weapon.weaponEnergy.Energy  = Mathf.Clamp01(weapon.weaponEnergy.Energy);
 }
Beispiel #8
0
        private void UnloadEnergyByQuickShot(ShaftEnergyNode weapon)
        {
            float deltaEnergy = -weapon.shaftEnergy.UnloadEnergyPerQuickShot;

            this.ApplyDeltaEnergy(deltaEnergy, weapon);
        }
Beispiel #9
0
 private void UnloadEnergyByAimingShot(ShaftEnergyNode weapon)
 {
     weapon.weaponEnergy.Energy = Mathf.Min(weapon.weaponEnergy.Energy, 1f - weapon.shaftEnergy.PossibleUnloadEnergyPerAimingShot);
     weapon.weaponEnergy.Energy = Mathf.Clamp01(weapon.weaponEnergy.Energy);
 }
Beispiel #10
0
 public void UnloadEnergy(TimeUpdateEvent evt, ShaftEnergyNode weapon, [JoinByTank] SingleNode <WeaponEnergyUnloadingStateComponent> unloading, [JoinByTank] ActiveTankNode tank)
 {
     this.UnloadEnergy(evt, weapon);
 }
Beispiel #11
0
        private void UnloadEnergy(TimeUpdateEvent evt, ShaftEnergyNode weapon)
        {
            float deltaEnergy = -weapon.shaftEnergy.UnloadAimingEnergyPerSec * evt.DeltaTime;

            this.ApplyDeltaEnergy(deltaEnergy, weapon);
        }
Beispiel #12
0
 public void StartUnloading(NodeAddedEvent evt, ShaftEnergyNode weapon, [Context, JoinByTank] SingleNode <ShaftAimingWorkingStateComponent> state, [Context, JoinByTank] ActiveTankNode tank)
 {
     weapon.weaponEnergyEsm.Esm.ChangeState <WeaponEnergyStates.WeaponEnergyUnloadingState>();
 }