Ejemplo n.º 1
0
        protected ClientBase(string serverAddr, int serverPort, string teamname, int unum)
        {
            if (String.IsNullOrEmpty(teamname))
            {
                throw new Exception("Invalid team name", null);
            }

            m_socket = new TcpClient(serverAddr, serverPort)
            {
                NoDelay = true
            };

            Send(String.Format("(init {0} {1})", teamname, unum));

            string       msg = Read();
            IMessageInfo mi  = ServerMessageParser.ParseInputMessage(msg);

            if (mi.MessageType != MessageTypes.InitOK)
            {
                throw new Exception("expected init-ok but received " + mi.MessageType);
            }

            var okmi = mi as InitOKMessage;

            Debug.Assert(okmi != null);
            this.MySide     = okmi.Side;
            this.MyTeamName = teamname;
            this.MyUnum     = unum;

            msg = Read();
            mi  = ServerMessageParser.ParseInputMessage(msg);
            if (mi.MessageType != MessageTypes.Settings)
            {
                throw new Exception("expected settings but received " + mi.MessageType);
            }
            ParseSettings(((SettingsMessage)mi).SettingsMsgTokens);

            BallPosition   = new Position();
            LastSeePlayers = new int[2 * EnvMaxPlayers];

            PlayerPositions = new Position[2 * EnvMaxPlayers];
            for (int i = 0; i < PlayerPositions.Length; ++i)
            {
                PlayerPositions[i] = new Position();
            }

            PlayerAvailabilities = new bool[2 * EnvMaxPlayers];

            m_myIndex      = GetPlayerIndex(MySide, MyUnum);
            m_goalUpperRow = CalculateGoalUpperRow();
            m_goalLowerRow = CalculateGoalLowerRow();
        }
Ejemplo n.º 2
0
        private bool UpdateFromServer()
        {
            //if (DataAvailable())
            //{
            string       msg = Read();
            IMessageInfo imi = ServerMessageParser.ParseInputMessage(msg);

            switch (imi.MessageType)
            {
            case MessageTypes.Error:
                Console.WriteLine("Error: " + msg);
                return(false);

            case MessageTypes.See:
                ParseSeeMessage(((SeeMessage)imi).SeeMsgTokens);
                return(true);

            case MessageTypes.Start:
                IsGameStarted = true;
                return(false);

            case MessageTypes.Stop:
                m_gameIsNotStoped = false;
                return(false);

            case MessageTypes.Cycle:
                CycleLength = ((CycleMessage)imi).CycleLength;
                return(false);

            case MessageTypes.Turbo:
                TurboMode = ((TurboMessage)imi).TurboOn;
                return(false);
            }
            //}
            return(false);
        }