public List <ModuleMech> GetMechByType(MechTypes mechType) { List <ModuleMech> mechs; switch (mechType) { case MechTypes.All: mechs = Mechs; break; case MechTypes.Soldier: mechs = Soldiers; break; case MechTypes.Hero: mechs = Heroes; break; default: mechs = Mechs; break; } return(mechs); }
public void KillMechs(int count, List <int> mechIds, BattlePlayer callerPlayer, TargetRange targetRange, TargetSelect targetSelect, int exceptMechId = -1) { List <BattlePlayer> battlePlayers = GetMechsPlayerByTargetRange(targetRange, callerPlayer); MechTypes mechType = GetMechTypeByTargetRange(targetRange); switch (targetSelect) { case TargetSelect.All: { KillMechs(GetMechsByType(battlePlayers, mechType)); break; } case TargetSelect.Multiple: { List <ModuleMech> mechs = new List <ModuleMech>(); foreach (int mechId in mechIds) { mechs.Add(GetMech(mechId)); } KillMechs(mechs); break; } case TargetSelect.MultipleRandom: { List <ModuleMech> mechs = new List <ModuleMech>(); foreach (ModuleMech mech in Utils.GetRandomFromList(GetMechsByType(battlePlayers, mechType), count)) { mechs.Add(mech); } KillMechs(mechs); break; } case TargetSelect.Single: { KillMechs(new List <ModuleMech> { GetMech(mechIds[0]) }); break; } case TargetSelect.SingleRandom: { KillMechs(new List <ModuleMech> { GetRandomMech(battlePlayers, mechType, exceptMechId) }); break; } } }
public int CountAliveMechExcept(List <BattlePlayer> players, MechTypes mechType, int exceptMechId) { int count = 0; foreach (BattlePlayer battlePlayer in players) { count += battlePlayer.BattleGroundManager.CountAliveMechExcept(mechType, exceptMechId); } return(count); }
public void SideEffect_MechAction(Action <ModuleMech> action, BattlePlayer callerPlayer, int count, List <int> mechIds, TargetRange targetRange, TargetSelect targetSelect, int exceptMechId = -1) { List <BattlePlayer> battlePlayers = GetMechsPlayerByTargetRange(targetRange, callerPlayer); MechTypes mechType = GetMechTypeByTargetRange(targetRange); switch (targetSelect) { case TargetSelect.All: { foreach (ModuleMech mech in GetMechsByType(battlePlayers, mechType).ToArray()) { action(mech); } break; } case TargetSelect.Multiple: { foreach (int mechId in mechIds) { action(GetMech(mechId)); } break; } case TargetSelect.MultipleRandom: { foreach (ModuleMech mech in Utils.GetRandomFromList(GetMechsByType(battlePlayers, mechType), count)) { action(mech); } break; } case TargetSelect.Single: { if (mechIds.Count > 0) { action(GetMech(mechIds[0])); } break; } case TargetSelect.SingleRandom: { action(GetRandomMech(battlePlayers, mechType, exceptMechId)); break; } } }
public ModuleMech GetRandomMech(List <BattlePlayer> players, MechTypes mechType, int exceptMechId) { List <ModuleMech> mechs = GetMechsByType(players, mechType); if (mechs.Count == 0) { return(null); } else { int aliveCount = CountAliveMechExcept(players, mechType, exceptMechId); Random rd = new Random(); return(GetAliveMechExcept(rd.Next(0, aliveCount), mechs, exceptMechId)); } }
public ModuleMech GetRandomAliveMechExcept(MechTypes mechType, int exceptMechId) { int count = CountAliveMechExcept(mechType, exceptMechId); Random rd = new Random(); int ranResult = rd.Next(0, count); if (ranResult < count) { return(GetRandomMech(mechType, exceptMechId)); } else { return(GetRandomMech(mechType, exceptMechId)); } }
public ModuleMech GetRandomMech(MechTypes mechType, int exceptMechId) { List <ModuleMech> mechs = GetMechByType(mechType); if (mechs.Count == 0) { return(null); } else { int aliveCount = CountAliveMechExcept(mechType, exceptMechId); Random rd = new Random(); return(GameManager.GetAliveMechExcept(rd.Next(0, aliveCount), mechs, exceptMechId)); } }
public ModuleMech GetRandomAliveMechExcept(MechTypes mechType, int exceptMechId) { int countA = PlayerA.BattleGroundManager.CountAliveMechExcept(mechType, exceptMechId); int countB = PlayerB.BattleGroundManager.CountAliveMechExcept(mechType, exceptMechId); Random rd = new Random(); int ranResult = rd.Next(0, countA + countB); if (ranResult < countA) { return(PlayerA.BattleGroundManager.GetRandomMech(mechType, exceptMechId)); } else { return(PlayerB.BattleGroundManager.GetRandomMech(mechType, exceptMechId)); } }
public int CountAliveMechExcept(MechTypes mechType, int exceptMechId) { List <ModuleMech> mechs = GetMechByType(mechType); int count = 0; foreach (ModuleMech mech in mechs) { if (!mech.M_IsDead && mech.M_MechID != exceptMechId) { count++; } } return(count); }
public static MechTypes GetMechTypeByTargetRange(TargetRange targetRange) { MechTypes mechType = MechTypes.None; if ((targetRange & TargetRange.Heroes) == targetRange) // 若是Heroes子集 { mechType = MechTypes.Hero; } if ((targetRange & TargetRange.Soldiers) == targetRange) // 若是Soldiers子集 { mechType = MechTypes.Soldier; } else { mechType = MechTypes.All; } return(mechType); }
private void SetMechTypes(Asn1Element sequence) { for (var i = 0; i < sequence.Count; i++) { var element = sequence[i]; for (var j = 0; j < element.Count; j++) { var childNode = element[j]; if (childNode.ContextSpecificTag == MechType.ContextTag) { MechTypes.Add(new MechType(childNode.AsString())); } } } if (MechTypes.Count == 1 && MechTypes.Any(m => m.Oid == MechType.NTLM)) { throw new NotSupportedException("NTLM is not supported"); } }
public List <ModuleMech> GetMechsByType(List <BattlePlayer> players, MechTypes mechType) { List <ModuleMech> mechs = new List <ModuleMech>(); foreach (BattlePlayer BattlePlayer in players) { switch (mechType) { case MechTypes.All: mechs.AddRange(BattlePlayer.BattleGroundManager.Mechs.ToArray()); break; case MechTypes.Soldier: mechs.AddRange(BattlePlayer.BattleGroundManager.Soldiers.ToArray()); break; case MechTypes.Hero: mechs.AddRange(BattlePlayer.BattleGroundManager.Heroes.ToArray()); break; } } return(mechs); }