private static List <TCPCommand> extractMsgCommands(string msg) { List <TCPCommand> newCommands = new List <TCPCommand> (); msg = msg.ToLower(); string[] soldierCommands = msg.Split(':'); for (int i = 1; i < soldierCommands.Length; i++) { string[] words = soldierCommands[i].Split(new char[] { ',', ' ' }); int id; if (int.TryParse(words [0], out id) == false) { continue; } int followDataCounter = 0; TCPCommand lastCommand = null; foreach (string w in words) { if (followDataCounter > 0) { followDataCounter--;; if (lastCommand.enterFollowData(w) == false) { newCommands.Remove(lastCommand); followDataCounter = 0; } continue; } if (prefabCommands.ContainsKey(w) == false) { followDataCounter = 0; continue; } TCPCommandPrefab prefab = prefabCommands [w]; followDataCounter = prefab.amountOfFollowData; lastCommand = new TCPCommand(id, prefab.type, prefab.amountOfFollowData); newCommands.Add(lastCommand); } } return(newCommands); }
private static void activateCommand(TCPCommand command, int team) { List <Soldier> aliveSoldiers = GameOverlord.getEnemyList(team == 1 ? 2 : 1); //Could be optimized using dicts Soldier s = aliveSoldiers.Find(x => x.id == command.soldierId); if (s == null) { return; } switch (command.type) { case TCPCommandType.attack: activateAttack(s, command.followData[0], team); break; case TCPCommandType.autoAttack: s.startAutoAttack(); break; case TCPCommandType.move: activateMove(s, command.followData[0], command.followData[1]); break; } }