private void ClientMessenger_OnGameOver(BasePacket packet)
        {
            LeaderboardPacket leaderBoard = (LeaderboardPacket)packet;

            var scene = new LeaderboardScene(_client, _width, _height, leaderBoard);

            scene.Initalise(_contentManager, _graphicsDevice);
            SetNewScene(scene);
        }
Пример #2
0
        public LeaderboardPacket MakeLeaderboardPacket(int playerCount, string[] playerNames, int[] playerScores, PlayerColour[] playerColours)
        {
            LeaderboardPacket packet = new LeaderboardPacket
            {
                PlayerCount   = playerCount,
                PlayerNames   = playerNames,
                PlayerScores  = playerScores,
                PlayerColours = playerColours
            };

            return(packet);
        }
        public LeaderboardScene(Client client, int width, int height, LeaderboardPacket leaderboardPacket)
        {
            Client = client;

            _width       = width;
            _height      = height;
            _leaderboard = leaderboardPacket;
            _sceneState  = LeaderboardSceneState.WaitingForSelection;

            _readyRematchCount     = 0;
            _isReadyRematch        = false;
            _playersLeftInInstance = leaderboardPacket.PlayerCount;
        }
Пример #4
0
        private void CheckGameOver()
        {
            foreach (KeyValuePair <string, int> player in _playerScores)
            {
                if (player.Value >= Application.SCORE_TO_WIN)
                {
                    Logger.Instance.Info(_playerNames[player.Key] + " has reached the score limit");

                    int      playerCount  = ComponentClients.Count;
                    int[]    playerScores = new int[playerCount];
                    string[] playerNames  = new string[playerCount];

                    int index = 0;
                    foreach (KeyValuePair <string, int> playerScore in _playerScores)
                    {
                        playerScores[index] = playerScore.Value;
                        playerNames[index]  = _playerNames[playerScore.Key];
                        index++;
                    }

                    PlayerColour[] playerColours = new PlayerColour[_playerColours.Count];
                    index = 0;
                    foreach (KeyValuePair <string, Color> playerColour in _playerColours)
                    {
                        playerColours[index] = NetworkPacketFactory.Instance.MakePlayerColour(playerColour.Value.R, playerColour.Value.G, playerColour.Value.B);
                        index++;
                    }

                    LeaderboardPacket packet = NetworkPacketFactory.Instance.MakeLeaderboardPacket(playerCount, playerNames, playerScores, playerColours);
                    for (int iClient = 0; iClient < ComponentClients.Count; iClient++)
                    {
                        ComponentClients[iClient].SendPacketToClient(packet, MessageType.GI_ServerSend_GameOver);
                    }

                    OnGameCompleted(packet);

                    return;
                }
            }
        }