コード例 #1
0
        private void RefreshEnergy()
        {
            if (this.IsDisposed ||
                !this.vehicle.ClientHasPrivateState)
            {
                return;
            }

            this.EnergyCurrent = VehicleEnergySystem.SharedCalculateTotalEnergyCharge(this.vehicle);
            ClientTimersSystem.AddAction(delaySeconds: 0.25, this.RefreshEnergy);
        }
コード例 #2
0
        // 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)));
        }
コード例 #3
0
        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);
        }