// -------- void SelectWeapon(int idx) { if (!LocalPlayer.CanChangeWeapon()) { return; } if (Weapons[idx] != LocalPlayer.Owner.WeaponComponent.CurrentWeapon) { LocalPlayer.Controls.ChangeWeaponDelegate(Weapons[idx]); } }
// -------- void CycleWeapons() { if (!LocalPlayer.CanChangeWeapon()) { return; } int idx = Weapons.FindIndex(obj => obj == CurrentWeapon); int last = Weapons.Count - 1; int ammo = 0; do { idx += 1; idx = idx == last ? 0 : idx; var weapon = LocalPlayer.Owner.WeaponComponent.GetWeapon(Weapons[idx]); ammo = weapon != null ? weapon.WeaponAmmo + weapon.ClipAmmo : 0; } while (Weapons[idx] != CurrentWeapon && ammo == 0); SelectWeapon(idx); }