Beispiel #1
0
        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);
        }
Beispiel #2
0
        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;
            }
        }