public FightConfig(string tactic, string placement, int cells) { switch (tactic) { case "Fuyard": this.m_Tactic = TacticEnum.Fuyard; break; case "Barbare": this.m_Tactic = TacticEnum.Barbare; break; case "Immobile": this.m_Tactic = TacticEnum.Immobile; break; } switch (placement) { case "Immobile": this.Placement = PlacementEnum.Immobile; break; case "Rapproché": this.Placement = PlacementEnum.Rapproché; break; case "Eloigné": this.Placement = PlacementEnum.Eloigné; break; } this.m_FarCells = cells; }
/// <summary> /// Perform the correct move according to the tactic and end the turn. /// </summary> private void PerformMove() { BFighter NearMonster = m_Data.NearestMonster(); if (NearMonster == null) { EndTurn(); return; } TacticEnum tactic = m_AI.GetStrategy(); // EndMove if (m_Data.Fighter.MovementPoints > 0 && tactic != TacticEnum.Immobile) { int distance = m_Data.DistanceFrom(NearMonster); if (tactic == TacticEnum.Fuyard) { MoveToCell(m_Data.FurthestCellFrom(NearMonster)); } else if (tactic == TacticEnum.Barbare) { if (!m_Data.IsHandToHand()) { MoveToCell(m_Data.NearestCellFrom(NearMonster)); } else { EndTurn(); } } flag = -1; m_Account.Log(new BotTextInformation("EndMove"), 5); } else { EndTurn(); } }
/// <summary> /// Parse a line and fill the differents fields /// </summary> private void ParseLine(string line) { int i = -1; try { line = line.Trim(); switch (m_flag) { case "<Spells>": i = line.IndexOf('='); if (i != -1) { string[] splitted = line.Split('='); i = Int32.Parse(splitted[1]); line = splitted[0]; } BSpell spell = new BSpell(GetSpellIdFromName(line), line); spells.Add(spell, i); SpellsCondition.Add(spell, m_cond); break; case "<Targets>": i = line.IndexOf('='); if (i != -1) { string[] splitted = line.Split('='); i = Int32.Parse(splitted[1]); line = splitted[0]; } targets.Add(line, i); TargetsCondition.Add(line, m_cond); break; case "<Strategy>": i = line.IndexOf('='); if (i != -1) { string[] splitted = line.Split('='); i = Int32.Parse(splitted[1]); line = splitted[0]; } TacticEnum tactic = (TacticEnum)Enum.Parse(typeof(TacticEnum), line); if (Enum.IsDefined(typeof(TacticEnum), tactic) | tactic.ToString().Contains(",")) { strategy.Add(tactic, i); } else { throw new Exception("AI Script : Invalid strategy at line : " + line); } break; case "<Position>": PlacementEnum position = (PlacementEnum)Enum.Parse(typeof(PlacementEnum), line); if (Enum.IsDefined(typeof(PlacementEnum), position) | position.ToString().Contains(",")) { positions.Add(position); } else { throw new Exception("AI Script : Invalid position at line : " + line); } break; case "<Challenges>": ChallengeEnum challenge = (ChallengeEnum)Enum.Parse(typeof(ChallengeEnum), line); if (Enum.IsDefined(typeof(ChallengeEnum), challenge) | challenge.ToString().Contains(",")) { challenges.Add(challenge); } else { throw new Exception("AI Script : Invalid challenge at line : " + line); } break; } } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } }