public void InterruptReload() { cancelReload = true; var reloadingWeapon = ReloadingWeapon.Create(GlobalTargets.OnlyServer, ReliabilityModes.ReliableOrdered); reloadingWeapon.Player = player.entity; reloadingWeapon.WeaponId = weapon.Id; reloadingWeapon.WeaponReloadState = false; reloadingWeapon.Send(); //Send a command to set the ammo in magazine. var weaponReloaded = WeaponReloaded.Create(GlobalTargets.OnlyServer, ReliabilityModes.ReliableOrdered); weaponReloaded.Player = weapon.Player; weaponReloaded.WeaponId = weapon.Id; weaponReloaded.NewCurrentAmount = BeforeReload; weaponReloaded.Send(); }
public IEnumerator Reload() { if (weapon.CurrentAmmoInMagazine == weapon.MagazineSize || weapon.EntireAmmo <= 0 || weapon.IsReloading) { yield break; } BeforeReload = weapon.CurrentAmmoInMagazine; cancelReload = false; if (cancelReload) { yield break; } //Send a command to notify that this weapon is reloading. var reloadingWeapon = ReloadingWeapon.Create(GlobalTargets.OnlyServer, ReliabilityModes.ReliableOrdered); reloadingWeapon.Player = weapon.Player; reloadingWeapon.WeaponReloadState = true; reloadingWeapon.WeaponId = weapon.Id; reloadingWeapon.Send(); if (cancelReload) { yield break; } //Wait yield return(new WaitForSeconds(weapon.ReloadTime - .25f)); if (cancelReload) { yield break; } //Send a command to notify that this weapon has reloaded. reloadingWeapon = ReloadingWeapon.Create(GlobalTargets.OnlyServer, ReliabilityModes.ReliableOrdered); reloadingWeapon.Player = weapon.Player; reloadingWeapon.WeaponReloadState = false; reloadingWeapon.WeaponId = weapon.Id; reloadingWeapon.Send(); if (cancelReload) { yield break; } //Wait yield return(new WaitForSeconds(.25f)); if (cancelReload) { yield break; } //Send a command to set the ammo in magazine. var weaponReloaded = WeaponReloaded.Create(GlobalTargets.OnlyServer, ReliabilityModes.ReliableOrdered); weaponReloaded.Player = weapon.Player; weaponReloaded.WeaponId = weapon.Id; weaponReloaded.NewCurrentAmount = weapon.EntireAmmo >= weapon.MagazineSize ? weapon.MagazineSize : weapon.EntireAmmo; weaponReloaded.Send(); }