Ejemplo n.º 1
0
        public void EndGame()
        {
            isPlaying = false;
            s2ai.Dispose();
            stateChangeListener.GameEnded();
            var winner = FindWinner();

            RpcEndGame(winner);
            var result = new MatchResult {
                winner  = sPlayerData[winner].leaderboardPlayerId,
                players = sPlayerData.Select(d => new PlayerMatchInfo {
                    id     = d.leaderboardPlayerId,
                    kills  = d.player.sKills,
                    deaths = d.player.sDeaths,
                }).ToArray(),
            };

            foreach (var d in sPlayerData)
            {
                Destroy(d.playerGo);
            }
            StartCoroutine(TransitionToGameOver());
#if !UNITY_EDITOR
            if (TransitionParams.gameType == GameType.Multi)
            {
#endif
            StartCoroutine(ReportMatchResult(result));
#if !UNITY_EDITOR
        }
#endif
        }
Ejemplo n.º 2
0
        void OnStateChanged(NetworkMessage msg)
        {
            var type = (MessageType)msg.reader.ReadByte();

            switch (type)
            {
            case MessageType.GameStarted:
                listener.GameStarted();
                break;

            case MessageType.GameEnded:
                listener.GameEnded();
                break;

            case MessageType.BoolControlStateChanged: {
                uint control = msg.reader.ReadUInt32();
                bool active  = (control & (1 << 16)) != 0;
                control &= 0xFFFEFFFF;
                listener.ControlStateChanged((int)control, active);
                break;
            }

            case MessageType.AxisControlStateChanged: {
                int   control = msg.reader.ReadInt32();
                float axis    = msg.reader.ReadSingle();
                listener.ControlStateChanged(control, axis);
                break;
            }

            case MessageType.PlayerPositionChanged: {
                int     player   = msg.reader.ReadByte();
                Vector2 position = msg.reader.ReadVector2();
                listener.PlayerPositionChanged(player, position);
                break;
            }

            case MessageType.DamageChanged: {
                int player = msg.reader.ReadInt32();
                int damage = msg.reader.ReadInt32();
                listener.DamageChanged(player, damage);
                break;
            }

            case MessageType.LifeChanged: {
                int player = msg.reader.ReadInt32();
                int lives  = msg.reader.ReadInt32();
                listener.LifeChanged(player, lives);
                break;
            }

            case MessageType.ObjectCreated: {
                NetworkInstanceId id = msg.reader.ReadNetworkId();
                listener.ObjectCreated(ClientScene.FindLocalObject(id));
                break;
            }

            case MessageType.ObjectWillBeDestroyed: {
                NetworkInstanceId id = msg.reader.ReadNetworkId();
                listener.ObjectWillBeDestroyed(ClientScene.FindLocalObject(id));
                break;
            }
            }
        }