private void RefreshEnergy() { if (this.IsDisposed || !this.vehicle.ClientHasPrivateState) { return; } this.EnergyCurrent = VehicleEnergySystem.SharedCalculateTotalEnergyCharge(this.vehicle); ClientTimersSystem.AddAction(delaySeconds: 0.25, this.RefreshEnergy); }
// Please note: the check SharedCanFire() has been already passed public override bool SharedOnFire(ICharacter character, WeaponState weaponState) { if (IsClient) { // on client we cannot consume energy return(true); } var requiredEnergyAmount = this.EnergyUsePerShot; var vehicle = character.SharedGetCurrentVehicle(); return(VehicleEnergySystem.ServerDeductEnergyCharge(vehicle, Convert.ToUInt16(requiredEnergyAmount))); }
public override bool SharedCanFire(ICharacter character, WeaponState weaponState) { var requiredEnergyAmount = this.EnergyUsePerShot; var vehicle = character.SharedGetCurrentVehicle(); if (VehicleEnergySystem.SharedHasEnergyCharge(vehicle, Convert.ToUInt16(requiredEnergyAmount))) { return(true); } if (IsClient && weaponState.SharedGetInputIsFiring()) { VehicleEnergyConsumptionSystem.ClientShowNotificationNotEnoughEnergy( (IProtoVehicle)vehicle.ProtoGameObject); // stop using weapon item! weaponState.ProtoWeapon.ClientItemUseFinish(weaponState.ItemWeapon); } return(false); }