private void ClientActivity(List <GameObject> gameObjects) { //SEND INPUT if (mAgent.IsPlayerConnected) { if (PlayerList.Count > PlayerID) { if (!(PlayerList[PlayerID].keycount == PlayerList[PlayerID].oldkeycount) || LastTick + ticktime < TimeManager.CurrentTime) { mAgent.WriteMessage(PlayerID); mAgent.WriteMessage((byte)PlayerList[PlayerID].keycount); if ((PlayerList[PlayerID].keycount & 64) == 64 || (PlayerList[PlayerID].keycount & 32) == 32 || (PlayerList[PlayerID].keycount & 128) == 128) { mAgent.WriteMessage(PlayerList[PlayerID].MouseX); mAgent.WriteMessage(PlayerList[PlayerID].MouseY); } mAgent.SendMessage(mAgent.Connections[0]); } if (LastTick + ticktime < TimeManager.CurrentTime) { LastTick = TimeManager.CurrentTime; } } } //RECEIVE MESSAGE AND UPDATE POSITIONS List <NetIncomingMessage> incomingMessages; incomingMessages = mAgent.CheckForMessages(); foreach (NetIncomingMessage incomingMessage in incomingMessages) { if (incomingMessage.MessageType == NetIncomingMessageType.Data) { // server sent a data message byte type = incomingMessage.ReadByte(); for (byte i = 0; i < PlayerList.Count; i++) { if (type == i && i != PlayerID) { PlayerList[i].keycount = incomingMessage.ReadByte(); if ((PlayerList[i].keycount & 64) == 64 || (PlayerList[i].keycount & 32) == 32 || (PlayerList[i].keycount & 128) == 128) { PlayerList[i].MouseX = incomingMessage.ReadFloat(); PlayerList[i].MouseY = incomingMessage.ReadFloat(); } } } switch (type) { case (byte)MessageType.Action: switch (incomingMessage.ReadByte()) { case (byte)ActionType.ServerRestart: Playercount = incomingMessage.ReadByte(); StartNewRound(gameObjects); break; } break; case (byte)MessageType.Spellpicks: Player pl = PlayerList[incomingMessage.ReadByte()]; pl.PickedSpell[0] = incomingMessage.ReadByte(); pl.PickedSpell[1] = incomingMessage.ReadByte(); pl.PickedSpell[2] = incomingMessage.ReadByte(); pl.Playerskin = incomingMessage.ReadByte(); break; case (byte)MessageType.Tick: ReadActor(incomingMessage); break; //case (byte)MessageType.Scores: // ScoreHudInstance.Score1 = incomingMessage.ReadByte(); // ScoreHudInstance.Score2 = incomingMessage.ReadByte(); // break; //case (byte)MessageType.Puck: // PuckInstance.X = incomingMessage.ReadFloat(); // PuckInstance.Y = incomingMessage.ReadFloat(); // break; case (byte)MessageType.PlayerID: PlayerID = incomingMessage.ReadByte(); break; } } } }