Esempio n. 1
0
    /// <summary>
    /// creates the string command
    /// </summary>
    public void SendCommand()
    {
        //todo:: need to update this.right now if NO SEND TROOP then NO SEND BOMB, NO INCREASE PROD which might be bad
        // Any valid action, such as "WAIT" or "MOVE source destination cyborgs"
        if (TroopListToSend == null || !TroopListToSend.Any())
        {
            Console.WriteLine("WAIT");
        }
        else
        {
            var sb = new StringBuilder();

            foreach (var troopToSend in TroopListToSend)
            {
                sb.AppendFormat("MOVE {0} {1} {2};", troopToSend.SourceFactory, troopToSend.TargetFactory, troopToSend.NumberOfCyborg);
            }

            SendBomb(sb);

            IncreaseProduction(sb);

            sb.Length -= 1;
            Console.WriteLine(sb.ToString());
        }
    }
Esempio n. 2
0
    private void BuildTroopList(FactoryDetail targetFactory)
    {
        var troopToSend = BuildTroop(targetFactory);

        if (troopToSend != null)
        {
            TroopListToSend.Add(troopToSend);
        }
    }
Esempio n. 3
0
    private void BuildTroopList(IOrderedEnumerable <FactoryDetail> productiveFactories)
    {
        foreach (var productiveFactory in productiveFactories)
        {
            var troopToSend = BuildTroop(productiveFactory);

            if (troopToSend != null)
            {
                TroopListToSend.Add(troopToSend);
            }
        }
    }
Esempio n. 4
0
    private void DefendFactory()
    {
        foreach (var enemyTroop in EnRouteTroopList.Where(x => x.Attacker == Owner.Enemy))
        {
            var attackedFactory = FactoryDetailList.Single(x => x.EntityId == enemyTroop.TargetFactory);

            if (!IsFactorySafeAfterAttack(attackedFactory.EntityId) && FactoryDetailList.Count(x => x.Owner == Owner.Me) > 1 && attackedFactory.ProductionRate > 0)
            {
                // send troop from another factory
                var sourceFactory = FindClosestFactoryWithBiggerArmy(attackedFactory);

                // find a source factory; if that's under attak find the next best one.
                // then calculate how many troop needs to be sent to defend that factory
            }

            var tr = TroopListToSend.FirstOrDefault(myTroop => myTroop.SourceFactory == enemyTroop.TargetFactory);

            if (tr != null)
            {
                TroopListToSend.Remove(tr);
                DebugMessage($"Troop removed: {tr.SourceFactory} target: {tr.TargetFactory}");
            }
        }
    }
Esempio n. 5
0
 private void AddTroopToSendList(FactoryDetail sourceFactory, FactoryDetail targetFactory)
 {
     TroopListToSend.Add(BuildTroop(sourceFactory, targetFactory));
 }