private void SetOrderAux(SiegeWeaponOrderType order, SiegeWeapon weapon) { switch (order) { case SiegeWeaponOrderType.Stop: case SiegeWeaponOrderType.AIControlOff: weapon.ForcedUse = false; break; case SiegeWeaponOrderType.Attack: case SiegeWeaponOrderType.AIControlOn: weapon.ForcedUse = true; break; case SiegeWeaponOrderType.FireAtWalls: weapon.ForcedUse = true; if (!(weapon is RangedSiegeWeapon rangedSiegeWeapon5)) { break; } rangedSiegeWeapon5.Focus = RangedSiegeWeapon.FiringFocus.Walls; break; case SiegeWeaponOrderType.FireAtTroops: weapon.ForcedUse = true; if (!(weapon is RangedSiegeWeapon rangedSiegeWeapon6)) { break; } rangedSiegeWeapon6.Focus = RangedSiegeWeapon.FiringFocus.Troops; break; case SiegeWeaponOrderType.FireAtRangedSiegeWeapons: weapon.ForcedUse = true; if (!(weapon is RangedSiegeWeapon rangedSiegeWeapon7)) { break; } rangedSiegeWeapon7.Focus = RangedSiegeWeapon.FiringFocus.RangedSiegeWeapons; break; case SiegeWeaponOrderType.FireAtPrimarySiegeWeapons: weapon.ForcedUse = true; if (!(weapon is RangedSiegeWeapon rangedSiegeWeapon8)) { break; } rangedSiegeWeapon8.Focus = RangedSiegeWeapon.FiringFocus.PrimarySiegeWeapons; break; } }
public void SetOrder(SiegeWeaponOrderType order) { if (GameNetwork.IsClient) { GameNetwork.BeginModuleEventAsClient(); GameNetwork.WriteMessage((GameNetworkMessage) new ApplySiegeWeaponOrder(order)); GameNetwork.EndModuleEventAsClient(); } foreach (SiegeWeapon selectedWeapon in this.SelectedWeapons) { this.SetOrderAux(order, selectedWeapon); } Action <SiegeWeaponOrderType, IEnumerable <SiegeWeapon> > onOrderIssued = this.OnOrderIssued; if (onOrderIssued == null) { return; } onOrderIssued(order, (IEnumerable <SiegeWeapon>) this.SelectedWeapons); }
public ApplySiegeWeaponOrder(SiegeWeaponOrderType orderType) => this.OrderType = orderType;