public EnergyUpdateEvent(ModuleEnergy module) { if (module == null) { throw new ArgumentNullException(nameof(module)); } Module = module; GeneratingEnergy = module.IsGenerating; EnergyOutput = module.m_OutputPerSecond; }
public void OnPool() { //WeaponWrapper = GetComponent<ModuleWeaponWrapper>(); //if (WeaponWrapper == null) WeaponWrapper = gameObject.AddComponent<ModuleWeaponWrapper>(); // Just in case... WeaponWrapper = GetComponent <ModuleWeaponWrapper>(); EnergyStore = GetComponent <ModuleEnergyStore>(); Energy = GetComponent <ModuleEnergy>(); Energy.UpdateConsumeEvent.Subscribe(ConsumeFire); WeaponWrapper.CanFireEvent += CheckIfCanFire; WeaponWrapper.FireEvent += OnFire; WeaponWrapper.LockFiring(this, true); block.DetachEvent.Subscribe(OnDetach); }
//Hook by replacing method body of ModuleEnergy.OnUpdateSupplyEnergy() internal static void OnUpdateSupplyEnergy(ModuleEnergy module, int dummy) { module.IsGenerating = (module.m_OutputPerSecond != 0f && module.CheckOutputConditions()); EnergyUpdateEvent update = new EnergyUpdateEvent(module); update.GeneratingEnergy = module.IsGenerating; update.EnergyOutput = module.m_OutputPerSecond * Time.deltaTime; OnUpdateEnergy?.Invoke(update); if (module.IsGenerating) { module.Supply(module.m_OutputEnergyType, update.EnergyOutput); } if (module.m_AnimatorController != null) { module.m_AnimatorController.Set(module.m_GeneratingEnergyBool, module.IsGenerating); } }
public void PrePool() { _EnergyStore = GetComponent <ModuleEnergyStore>(); _Energy = GetComponent <ModuleEnergy>(); _EnergyStore.m_Capacity = Capacity; }