示例#1
0
        private void Setup(MoveMessage setupMessage)
        {
            Log("Let's setup");

            var map      = Converter.Convert(setupMessage.map);
            var myPunter = setupMessage.punter;

            scorer.Init(map);
            punter.Init(map, setupMessage.punters, new Punter {
                Id = myPunter
            });

            var gameStateMessage = new GameStateMessage
            {
                MapContract = setupMessage.map,
                Moves       = new List <MoveCommand>(),
                Punters     = setupMessage.punters,
                MyPunter    = myPunter,
                ScorerState = scorer.State,
                PunterState = punter.State
            };

            transport.Send(new SetupCommand {
                ready = myPunter, state = gameStateMessage
            });
        }
 private void OnGameStateHandler(GameStateMessage gameStateMessage)
 {
     if (gameStateMessage.GameState == GameState.Playing && (GameManager.PreviousGameState == GameState.Menu || gameStateMessage.GameState == GameState.GameOver))
     {
         _Starfield.StarfieldSeed = Random.Range(0, int.MaxValue);
     }
 }
示例#3
0
 private void OnGameStatusChanged(GameStateMessage message)
 {
     TriggerPropertyChanged("IsPaused");
     TriggerPropertyChanged("RemainedMines");
     TriggerPropertyChanged("Flags");
     TriggerPropertyChanged("State");
     if (game.GameState == GameState.Failed)
     {
         IsMousePressed = false;
         Application.Current.Dispatcher.BeginInvoke(new Action(() =>
         {
             game.UpdateStatistics();
             ShowLostWindow();
         }));
     }
     else if (game.GameState == GameState.Success)
     {
         IsMousePressed = false;
         Application.Current.Dispatcher.BeginInvoke(new Action(() =>
         {
             game.UpdateStatistics();
             ShowWonWindow();
         }), DispatcherPriority.Input);
     }
 }
        private void Listener()
        {
            var tcpClient = new TcpClient(Host, Config.Port);

            Socket = tcpClient.Client;
            var secureMessage = Socket.Receive <SecureMessage>();
            var rsa           = Config.CreateRsa();

            rsa.ImportParameters(secureMessage.ToRsaParameters());

            symmetric = new TripleDESCryptoServiceProvider();
            symmetric.GenerateIV();
            symmetric.GenerateKey();

            Socket.SendRSA(new SecureReplyMessage(Nick, symmetric.Key, symmetric.IV), rsa);

            var res = true;

            while (res)
            {
                try
                {
                    lastStateMessage = Socket.ReceiveTripleDES <GameStateMessage>(symmetric);
                    if (GameStateChanged != null)
                    {
                        GameStateChanged(lastStateMessage);
                    }
                }
                catch (SocketException se)
                {
                    res = false;
                }
            }
        }
示例#5
0
        private void OnGameStateResponse(NetworkMessage msg)
        {
            GameStateMessage message = msg.ReadMessage <GameStateMessage>();

            _friendlyMonsterState       = JsonConvert.DeserializeObject <Dictionary <int, int> >(message.HostMonsterState);
            _enemyMonsterState          = JsonConvert.DeserializeObject <Dictionary <int, int> >(message.GuestMonsterState);
            _monstersWithAvailableMoves = _friendlyMonsterState.Keys.ToList();
        }
示例#6
0
        void AnalyzeDiff(GameStateMessage gameStateMessage)
        {
            var priorityPlayer = gameStateMessage.turnInfo?.priorityPlayer;

            if (priorityPlayer.HasValue)
            {
                State.PriorityPlayer = priorityPlayer.Value;
            }

            if (gameStateMessage.players != null)
            {
                foreach (var p in gameStateMessage.players)
                {
                    // Update the players state
                    State.Players[p.systemSeatNumber] = p;
                }
            }

            var currentGameObjects = AddNewGameObjects(gameStateMessage.gameObjects);

            var annotationsByType = ParseAnnotations(gameStateMessage.annotations);

            Log.Debug("Annotations: {annotationsByType}", annotationsByType.Select(x => (x.Key, x.Count())));

            var objectIdChanges = ParseObjectIdChanges(annotationsByType);
            var zoneTransfers   = ParseZoneTransfers(annotationsByType, objectIdChanges);

            var scries = ParseScryAnnotations(annotationsByType);

            foreach (var(topIds, bottomIds) in scries)
            {
                State.HandleScryDone(topIds, bottomIds);
            }
            // Surveils should be handled by ZoneTransfers

            var shuffles = ParseShuffles(annotationsByType);

            // Clear the Mind draws in the same message with the shuffle
            // so we have to handle shuffles before moves
            State.HandleShuffles(shuffles);

            State.HandleMoves(zoneTransfers);

            var instanceIdsInZones = gameStateMessage.zones?.ToDictionary(z => zonesInfo[z.zoneId], z => z.objectInstanceIds);

            var mulliganCount = gameStateMessage.players
                                ?.FirstOrDefault(i => i.systemSeatNumber == State.MySeatId)
                                ?.mulliganCount ?? 0;

            if (mulliganCount > State.MyMulliganCount)
            {
                // Mulligan
                State.MyMulliganCount = mulliganCount;
                State.DrawHands(instanceIdsInZones, currentGameObjects);
            }

            State.SetGameObjects(instanceIdsInZones, currentGameObjects);
        }
        private void BroadcastGameState()
        {
            var newMsg = new GameStateMessage
            {
                SceneObjects = map.SceneObjects
            };

            this.ReplyToAll(newMsg);
        }
示例#8
0
    //Hook to receive & update game state
    public void OnStateUpdate(NetworkMessage netMsg)
    {
        GameStateMessage msg = netMsg.ReadMessage <GameStateMessage>();

        playerList = msg.playerList;
        teamScores = msg.teamScores;
        ((TeamDeathmatch)currentGamemode).timeRemaining = msg.gamemodeTimeLeft;
        SaveLoad.SaveGame();
    }
 private void OnGameStateHandler(GameStateMessage gameStateMessage)
 {
     if (gameStateMessage.GameState == GameState.Pause)
     {
         gameObject.SetActive(true);
     }
     else
     {
         gameObject.SetActive(false);
     }
 }
示例#10
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="Message"></param>
        protected void HandleGameStateMessage(GameStateMessage Message)
        {
            // set connection state
            connectionState = ConnectionState.Online;

            // log
            Logger.Log(MODULENAME, LogType.Info, "ConnectionState: Online");

            // start pinging
            timPing.Enabled = true;
        }
示例#11
0
        private void OnGameStateResponse(NetworkMessage msg)
        {
            GameStateMessage message = msg.ReadMessage <GameStateMessage>();

            message.ActionNumber = AdjustActionNumber(message.ActionNumber);

            //Convert json strings to objects
            Dictionary <int, int> friendlyMonsterState = IsHost ? JsonConvert.DeserializeObject <Dictionary <int, int> >(message.HostMonsterState) : JsonConvert.DeserializeObject <Dictionary <int, int> >(message.GuestMonsterState);
            Dictionary <int, int> enemyMonsterState    = IsHost ? JsonConvert.DeserializeObject <Dictionary <int, int> >(message.GuestMonsterState) : JsonConvert.DeserializeObject <Dictionary <int, int> >(message.HostMonsterState);


            GameState.UpdateGameState(message.ActionNumber, message.SubActionNumber, friendlyMonsterState, enemyMonsterState);
        }
示例#12
0
        private void BroadcastGameState(params GameHost[] games)
        {
            foreach (var game in games)
            {
                var newMsg = new GameStateMessage
                {
                    GameId       = game.Id,
                    SceneObjects = game.Map.SceneObjects
                };

                this.ReplyToAll(game.Id, newMsg);
            }
        }
示例#13
0
    public void OnGameStateChange(NetworkMessage netMsg)
    {
        GameStateMessage _msg = netMsg.ReadMessage <GameStateMessage>();

        Debug.Log("OnGameStateChange ");
        if (_msg.gamestate.Equals("pause"))
        {
            OnlineGameManager.Instance.m_state = OnlineGameManager.STATE.Pause;
            UIInterface.Instance.SetTextDisplay("Pause", true);
        }
        else
        {
            OnlineGameManager.Instance.m_state = OnlineGameManager.STATE.Playing;
            UIInterface.Instance.SetTextDisplay("Pause", false);
        }
    }
示例#14
0
        private static GameState InitGameState(GameStateMessage state, List <MoveCommand> moves, IScorer scorer, IPunter punter)
        {
            state.Moves.AddRange(moves);

            var map = Converter.Convert(state.MapContract, state.Moves);

            scorer.State = state.ScorerState;
            punter.State = state.PunterState;

            var gameState = new GameState {
                Map = map, CurrentPunter = new Punter {
                    Id = state.MyPunter
                }
            };

            return(gameState);
        }
示例#15
0
    void OnGameState(NetworkMessage message)
    {
        GameStateMessage newState = message.ReadMessage <GameStateMessage>();

        if (gameState == null || newState.gameTime >= gameState.gameTime)
        {
            gameState               = newState;
            score                   = gameState.score;
            Time.timeScale          = gameState.isPause?0:1;
            spaceship.nextDirection = gameState.playerDirection;
            AsteroidController asteroid;
            for (int i = 0; i < gameState.objects.Length; i++)
            {
                asteroid       = PoolManager.instance.GetObjectByID(i) as AsteroidController;
                asteroid.state = gameState.objects[i];
            }
        }
    }
示例#16
0
    // server call
    public void OnPauseGame()
    {
        isPause = !isPause;
        GameStateMessage msg = new GameStateMessage();

        msg.gamestate = (isPause) ? "pause" : "unpause";
        m_state       = (isPause) ? STATE.Pause : STATE.Playing;
        UIInterface.Instance.SetTextDisplay("Pause", isPause);

        if (isHost)
        {
            GameObject.Find("LobbyManager").GetComponent <LobbyManager>().ServerSendGameState(msg);
        }
        else
        {
            GameObject.Find("LobbyManager").GetComponent <LobbyManager>().ClientSendGameState(msg);
        }
    }
示例#17
0
    IEnumerator SendState()
    {
        while (isGameStarted)
        {
            gameState                 = new GameStateMessage();
            gameState.gameTime        = GameTimer.instance.GetGameTime();
            gameState.score           = score;
            gameState.isPause         = isPause;
            gameState.playerDirection = spaceship.direction;
            gameState.objects         = new AsteroidState[PoolManager.instance.ObjectsCount];
            for (int i = 0; i < PoolManager.instance.ObjectsCount; i++)
            {
                AsteroidController asteroid = PoolManager.instance.GetObjectByID(i) as AsteroidController;
                gameState.objects[i] = asteroid.state;
            }
            MultiplayerManager.instance.SendGameStateMessge(gameState);

            yield return(new WaitForSeconds(0.1f));
        }
    }
示例#18
0
        private void OnGameStateChanged(GameStateMessage message)
        {
            var game = message.Source as IClearMine;

            if (IsEnabled && game != null)
            {
                if (game.GameState == GameState.Failed)
                {
                    Player.Play(this["Lost"].Value as string);
                }
                else if (game.GameState == GameState.Success)
                {
                    Player.Play(this["Won"].Value as string);
                }
                else if (game.GameState == GameState.Initialized)
                {
                    Player.Play(this["New"].Value as string);
                }
                else
                {
                    // Play nothing.
                }
            }
        }
示例#19
0
 public void ClientSendGameState(GameStateMessage _msg)
 {
     Debug.Log("ClientSendGameState");
     m_client.Send(SendMsgType.GameState, _msg);
 }
 public static void OnGameStateChanged(GameStateMessage arg) => GameStateChanged?.Invoke(arg);
    private void Start()
    {
        _currentUserId = PreferencesFactory.GetString(Constants.ProfileUserId);

        if (ShouldGetChallengesList)
        {
            RefreshChallengesList();
        }

        GS.GameSparksAuthenticated = (playerId) => {
            _currentUserId = playerId;

            // connection was interupted
            // user now reconnect but challenge was canceled
            if (GameSparksManager.Instance.GetCurrentChallengeId() != null)
            {
                if (_onChallengeDetected != null)
                {
                    _onChallengeDetected.OnErrorReceived(LocaliseText.Get("Challenge.NotAvailable"));
                }
            }
        };

        ChallengeIssuedMessage.Listener = (listener) =>
        {
            _currentChallengeId = listener.Challenge.ChallengeId;
            GameSparksManager.Instance.SetCurrentChallengeId(_currentChallengeId);

            var challengerId = listener.Challenge.Challenger.Id;
            if (_currentUserId != challengerId)
            {
                var username = listener.Challenge.Challenger.Name;

                if (_onChallengeDetected != null)
                {
                    if (!_isRematch)
                    {
                        _onChallengeDetected.OnChallengeIssued(_currentChallengeId, username);
                    }
                    else
                    {
                        new AcceptChallengeRequest()
                        .SetChallengeInstanceId(_currentChallengeId)
                        .Send((response) => { });
                    }
                }
            }
        };

        ChallengeStartedMessage.Listener = (listener) =>
        {
            if (!listener.HasErrors)
            {
                var challenge = listener.Challenge;
                if (challenge != null)
                {
                    if (_currentUserId == null)
                    {
                        _currentUserId = PreferencesFactory.GetString(Constants.ProfileUserId);
                    }

                    _currentChallengeId = challenge.ChallengeId;

                    GameSparksManager.Instance.SetCurrentChallengeId(_currentChallengeId);

                    var acceptedPlayersEnumerator = challenge.Accepted.GetEnumerator();
                    var challengedEnumerator      = challenge.Challenged.GetEnumerator();

                    var challenger = new Challenge
                    {
                        ChallengeId    = challenge.ChallengeId,
                        UserName       = challenge.Challenger.Name,
                        UserId         = challenge.Challenger.Id,
                        AvatarUploadId = challenge.ScriptData.GetGSData(challenge.Challenger.Id).GetString("avatarUploadId"),
                        ExternalIds    = challenge.ScriptData.GetGSData(challenge.Challenger.Id).GetGSData("externalIds")
                    };

                    GameSparksManager.Instance.Challenger = challenger;

                    while (challengedEnumerator.MoveNext())
                    {
                        var playerDetail = challengedEnumerator.Current;
                        if (playerDetail != null)
                        {
                            var challenged = new Challenge
                            {
                                ChallengeId    = challenge.ChallengeId,
                                UserName       = playerDetail.Name,
                                UserId         = playerDetail.Id,
                                AvatarUploadId = challenge.ScriptData.GetGSData(playerDetail.Id).GetString("avatarUploadId"),
                                ExternalIds    = challenge.ScriptData.GetGSData(playerDetail.Id).GetGSData("externalIds")
                            };

                            GameSparksManager.Instance.Challenged = challenged;
                        }
                    }
                    challengedEnumerator.Dispose();

                    while (acceptedPlayersEnumerator.MoveNext())
                    {
                        var playerDetail = acceptedPlayersEnumerator.Current;
                        if (playerDetail != null)
                        {
                            if (playerDetail.Id != _currentUserId)
                            {
                                var opponent = new Challenge
                                {
                                    ChallengeId    = challenge.ChallengeId,
                                    UserName       = playerDetail.Name,
                                    UserId         = playerDetail.Id,
                                    AvatarUploadId = challenge.ScriptData.GetGSData(playerDetail.Id).GetString("avatarUploadId"),
                                    ExternalIds    = challenge.ScriptData.GetGSData(playerDetail.Id).GetGSData("externalIds")
                                };

                                GameSparksManager.Instance.Opponent = opponent;
                            }
                        }
                    }

                    acceptedPlayersEnumerator.Dispose();

                    var nextPlayerId = challenge.NextPlayer;

                    var isMyTurn = nextPlayerId == _currentUserId;
                    GameSparksManager.Instance.SetIsMyTurn(isMyTurn);
                    List <GSData> words = null;

                    var gsData = listener.Challenge.ScriptData;

                    _isRematch = false;

                    GameSparksManager.Instance.SetGameMode(GameMode.Multi);

                    if (gsData != null)
                    {
                        words = gsData.GetGSDataList("words");

                        GameSparksManager.Instance.SetWords(words);

                        if (_onChallengeDetected != null)
                        {
                            _onChallengeDetected.OnChallengeStarted(isMyTurn, GameSparksManager.Instance.Challenger.UserName, GameSparksManager.Instance.Challenged.UserName);
                        }
                    }

                    if (words == null)
                    {
                        DialogManager.Instance.ShowError(LocaliseText.Get("Game.ChallengerNotCreated"), doneCallback: (DialogInstance dialogInstance) => {
                            if (_onChallengeDetected != null)
                            {
                                _onChallengeDetected.OnErrorReceived("REJOIN_LOBBY");
                            }
                        });

                        return;
                    }

                    if (SceneManager.GetActiveScene().name != "Game")
                    {
                        GameManager.LoadSceneWithTransitions("Game");
                    }
                }
            }
            else
            {
                MyDebug.Log("Challenge Started Error: " + listener.Errors.JSON.ToString());
            }
        };

        ChallengeTurnTakenMessage.Listener = (listener) =>
        {
            if (!listener.HasErrors)
            {
                var challenge = listener.Challenge;
                _currentChallengeId = challenge.ChallengeId;

                var nextPlayerId = challenge.ScriptData.GetString("nextPlayer");
                var isMyTurn     = nextPlayerId == _currentUserId;

                GameSparksManager.Instance.SetIsMyTurn(isMyTurn);

                var scriptData = challenge.ScriptData;

                if (scriptData != null)
                {
                    var eventKey = scriptData.GetString("EventKey");

                    if (eventKey == "WordFound" && scriptData != null &&
                        scriptData.GetString("SenderPlayerId") != _currentUserId &&
                        scriptData.ContainsKey("WordFound"))
                    {
                        GSData wordFound = scriptData.GetGSData("WordFound");

                        if (wordFound.ContainsKey("state"))
                        {
                            WordState state = (WordState)wordFound.GetInt("state");
                            string    word  = wordFound.GetString("word");

                            if (_onChallengeDetected != null)
                            {
                                _onChallengeDetected.OnWordFound(word, state);
                            }
                        }
                        else     // backward compability
                        {
                            if (scriptData.ContainsKey("found_words"))
                            {
                                List <GSData> found_words = scriptData.GetGSDataList("found_words");

                                foreach (GSData _w in found_words)
                                {
                                    string word      = _w.GetString("word");
                                    string player_id = _w.GetString("player_id");

                                    if (_onChallengeDetected != null && player_id != _currentUserId)
                                    {
                                        _onChallengeDetected.OnWordFound(word, WordState.Found);
                                    }
                                }
                            }
                        }
                    }

                    var wordDrag = scriptData.GetGSData("WordDrag");

                    if (eventKey == "WordDrag" && wordDrag != null &&
                        wordDrag.ContainsKey("positions"))
                    {
                        if (scriptData.GetString("SenderPlayerId") != _currentUserId)
                        {
                            List <DrawQueueItem> _positions = new List <DrawQueueItem>();
                            var center = Vector3.zero;

                            if (wordDrag.ContainsKey("positions"))
                            {
                                List <GSData> _l = wordDrag.GetGSDataList("positions");

                                foreach (GSData _d in _l)
                                {
                                    string json = _d.GetString("item");

                                    _positions.Add(new DrawQueueItem(json));
                                }
                            }

                            if (wordDrag.ContainsKey("center_x") && wordDrag.ContainsKey("center_y"))
                            {
                                float cx = (float)wordDrag.GetFloat("center_x");
                                float cy = (float)wordDrag.GetFloat("center_y");
                                float cz = (float)wordDrag.GetFloat("center_z");

                                center = new Vector3(cx, cy, cz);
                            }

                            if (_onChallengeDetected != null)
                            {
                                _onChallengeDetected.OnPositionDetected(_positions, center);
                            }
                        }
                    }

                    if (((eventKey == "takeTurn" || eventKey == null) &&
                         scriptData.GetString("SenderPlayerId") != _currentUserId &&
                         scriptData.GetString("SenderPlayerId") != nextPlayerId) ||
                        scriptData.GetBoolean("TimeOut") != null)
                    {
                        if (_onChallengeDetected != null)
                        {
                            _onChallengeDetected.OnTurnEnd(Vector3.zero, "word");
                        }
                    }
                }
            }
            else
            {
                MyDebug.Log("Challenge Turn Taken Error: " + listener.Errors.JSON.ToString());
            }
        };

        ChallengeDeclinedMessage.Listener = (listener) =>
        {
            if (!listener.HasErrors)
            {
                var challenge = listener.Challenge;
                if (challenge != null)
                {
                    var declined   = challenge.Declined;
                    var enumerator = declined.GetEnumerator();
                    while (enumerator.MoveNext())
                    {
                        var playerDetail = enumerator.Current;
                        var playerName   = playerDetail.Name;
                        if (_onChallengeDetected != null)
                        {
                            _onChallengeDetected.OnChallengeDeclined(playerName);
                        }
                    }
                    enumerator.Dispose();
                }
            }
        };

        ChallengeExpiredMessage.Listener = (listener) => { RefreshChallengesList(); };

        ScriptMessage.Listener = (listener) =>
        {
            if (!listener.HasErrors)
            {
                var extCode = listener.ExtCode;
                if (extCode == "userLeaved")
                {
                    var gameStateMessage = new GameStateMessage
                    {
                        Message = listener.Summary,
                        Points  = 0
                    };
                    if (_onChallengeDetected != null)
                    {
                        _onChallengeDetected.OnChallengeFinishedEvent(GameStates.Leaved, gameStateMessage);
                    }
                }

                if (extCode == "userTurn")
                {
                }
            }
        };

        ChallengeWonMessage.Listener = (listener) =>
        {
            if (listener.HasErrors)
            {
                return;
            }

            if (StringUtils.IsNullOrWhiteSpace(_currentChallengeId))
            {
                _currentChallengeId = GameSparksManager.Instance.GetCurrentChallengeId();
            }
            if (_currentChallengeId != null && _currentChallengeId.Equals(listener.Challenge.ChallengeId))
            {
                var scriptData = listener.Challenge.ScriptData;
                if (scriptData != null)
                {
                    var points = 0;
                    var point  = scriptData.GetInt("winPoints");
                    if (point != null)
                    {
                        points = (int)point;
                    }

                    var message = LocaliseText.Get("Game.CongratsYouWon");

                    if (_onChallengeDetected != null)
                    {
                        var gameStateMessage = new GameStateMessage
                        {
                            Message = message,
                            Points  = points
                        };
                        _onChallengeDetected.OnChallengeFinishedEvent(GameStates.Won,
                                                                      gameStateMessage);
                    }
                }
            }
        };
        ChallengeDrawnMessage.Listener = (listener) =>
        {
            if (listener.HasErrors)
            {
                return;
            }
            if (StringUtils.IsNullOrWhiteSpace(_currentChallengeId))
            {
                _currentChallengeId = GameSparksManager.Instance.GetCurrentChallengeId();
            }
            if (_currentChallengeId.Equals(listener.Challenge.ChallengeId))
            {
                var scriptData = listener.Challenge.ScriptData;
                if (scriptData != null && scriptData.GetNumber("drawPoints") != null)
                {
                    int points  = (int)scriptData.GetNumber("drawPoints");
                    var message = "It's a draw game!";

                    if (_onChallengeDetected != null)
                    {
                        var gameStateMessage = new GameStateMessage
                        {
                            Message = message,
                            Points  = points
                        };
                        _onChallengeDetected.OnChallengeFinishedEvent(GameStates.Draw,
                                                                      gameStateMessage);
                    }
                }
            }
        };
        ChallengeLostMessage.Listener = (listener) =>
        {
            if (listener.HasErrors)
            {
                return;
            }

            if (StringUtils.IsNullOrWhiteSpace(_currentChallengeId))
            {
                _currentChallengeId = GameSparksManager.Instance.GetCurrentChallengeId();
            }
            if (_currentChallengeId.Equals(listener.Challenge.ChallengeId))
            {
                var scriptData = listener.Challenge.ScriptData;
                if (scriptData != null)
                {
                    var points = 0;
                    var point  = scriptData.GetInt("losePoints");
                    if (point != null)
                    {
                        points = (int)point;
                    }

                    var message = "You Lost. Better luck next time!";

                    if (_onChallengeDetected != null)
                    {
                        var gameStateMessage = new GameStateMessage
                        {
                            Message = message,
                            Points  = points
                        };
                        _onChallengeDetected.OnChallengeFinishedEvent(GameStates.Lost,
                                                                      gameStateMessage);
                    }
                }
            }
        };

        AchievementEarnedMessage.Listener = (listener) =>
        {
            if (listener.HasErrors)
            {
                return;
            }
            var achievementName = listener.AchievementName;
            if (_onAchievementDetected != null)
            {
                _onAchievementDetected.OnAchievmentEarned(achievementName);
            }
        };
    }
示例#22
0
 public void ServerSendGameState(GameStateMessage _msg)
 {
     Debug.Log("ServerSendGameState");
     NetworkServer.SendToAll(SendMsgType.GameState, _msg);
 }
示例#23
0
 public void SendGameStateMessge(GameStateMessage message)
 {
     NetworkServer.SendToAll(GameMsgType.GameState, message);
 }