/// <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()); } }
private void BuildTroopList(FactoryDetail targetFactory) { var troopToSend = BuildTroop(targetFactory); if (troopToSend != null) { TroopListToSend.Add(troopToSend); } }
private void BuildTroopList(IOrderedEnumerable <FactoryDetail> productiveFactories) { foreach (var productiveFactory in productiveFactories) { var troopToSend = BuildTroop(productiveFactory); if (troopToSend != null) { TroopListToSend.Add(troopToSend); } } }
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}"); } } }
private void AddTroopToSendList(FactoryDetail sourceFactory, FactoryDetail targetFactory) { TroopListToSend.Add(BuildTroop(sourceFactory, targetFactory)); }