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(); }
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); }