示例#1
0
 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;
 }
示例#2
0
        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;
        }
示例#3
0
        /// <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();
            }
        }
示例#4
0
        /// <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);
            }
        }