コード例 #1
0
    void PlayerManager_RequestUpdateInfo(NetworkPlayer _requestor, string _playerInfoSerial)
    {
        PlayerInfo _player;

        NetworkSerializer.Deserialize(_playerInfoSerial, out _player);

        var _playerLocal = Get(_player.guid);

        if (_playerLocal == null)
        {
            _playerLocal           = _player;
            _playerLocal.connected = false;
            Add(_playerLocal);
            Connect(_playerLocal);
        }
        else
        {
            Copy(_playerLocal, _player);
            if (!_playerLocal.connected)
            {
                Connect(_playerLocal);
            }
        }

        if (postInfoChanged != null)
        {
            postInfoChanged(_player);
        }

        if (Global.Server().server == Network.player.guid)
        {
            networkView.RPC("PlayerManager_ResponseUpdateInfo", _requestor);
        }
    }
コード例 #2
0
    void TransitionManager_RequestStartGame(string _transitionSerial)
    {
        var _transition = new GameTransition();

        NetworkSerializer.Deserialize(_transitionSerial, out _transition);
        StartGameLocal(_transition);
    }
コード例 #3
0
    void PlayerManager_InformPlayerInfoChanged(string _playerInfoSerial)
    {
        PlayerInfo _playerInfo;

        NetworkSerializer.Deserialize(_playerInfoSerial, out _playerInfo);
        InformPlayerInfoChangedLocal(_playerInfo);
    }
コード例 #4
0
    public static AttackData Deserialize(string _serial)
    {
        Vector2 _velocity;

        _serial = _serial.Substring(0, Serializer.deserialize(_serial, out _velocity));

        AttackData _attackData;

        NetworkSerializer.Deserialize(_serial, out _attackData);

        _attackData.velocity = _velocity;
        return(_attackData);
    }
コード例 #5
0
    void PlayerManager_ResponseRefreshPlayerInfo(string _playerInfosStr)
    {
        var _newPlayerInfos = new Dictionary <string, PlayerInfo>();

        NetworkSerializer.Deserialize(_playerInfosStr, out _newPlayerInfos);

        foreach (var _playerKV in players)
        {
            if (Network.player.guid == _playerKV.Key)
            {
                continue;
            }

            if (!_newPlayerInfos.ContainsKey(_playerKV.Key))
            {
                if (postConnected != null)
                {
                    postConnected(_playerKV.Value, false);
                }
                _playerKV.Value.postChanged -= ListenInfoChanged;
                players.Remove(_playerKV.Key);
            }
        }

        foreach (var _newPlayerKV in _newPlayerInfos)
        {
            if (Network.player.guid == _newPlayerKV.Value.guid)
            {
                continue;
            }

            var _player = players.ContainsKey(_newPlayerKV.Key)
                                ? players[_newPlayerKV.Key]
                                : null;

            if (_player == null)
            {
                _player             = _newPlayerKV.Value;
                _player.postChanged = ListenInfoChanged;
                players.Add(_player.guid, _player);
                if (postConnected != null)
                {
                    postConnected(_player, true);
                }
            }
            else
            {
                _player.name = _newPlayerKV.Value.name;
            }
        }
    }
コード例 #6
0
    void PlayerManager_ResponseRefreshPlayerInfo(string _playerInfoStr)
    {
        PlayerInfo _newPlayerInfo;

        NetworkSerializer.Deserialize(_playerInfoStr, out _newPlayerInfo);

        if (_newPlayerInfo.guid == Network.player.guid)
        {
            Debug.LogWarning("Trying to refresh self. Ignore.");
            return;
        }

        PlayerInfo _player;

        if (!players.TryGetValue(_newPlayerInfo.guid, out _player))
        {
            _player = _newPlayerInfo;
            players.Add(_player.guid, _player);

            if (_player.connected)
            {
                _player.connected = false;
                Connect(_player);
            }
        }
        else
        {
            Copy(_player, _newPlayerInfo);

            if (_player.connected != _newPlayerInfo.connected)
            {
                if (_newPlayerInfo.connected)
                {
                    Connect(_player);
                }
                else
                {
                    Disconnect(_player);
                }
            }
        }

        if (postSetuped != null)
        {
            postSetuped(_player);
        }
    }
コード例 #7
0
    private void GameResult_Propagate(int _gameID, string _resultsSerial)
    {
        if (gameID != _gameID)
        {
            Debug.LogError("Received result of wrong game id. Ignore.");
            results = null;
            return;
        }

        results = new Dictionary <string, PlayerResult> ();
        NetworkSerializer.Deserialize(_resultsSerial, out results);

        if (postPropagated != null)
        {
            postPropagated();
        }
    }
コード例 #8
0
    private void GameResult_Propagate(int _gameID, string _resultsSerial)
    {
        results = new Dictionary <string, PlayerResult> ();

        if (m_GameID != _gameID)
        {
            Debug.LogError("Received result of wrong game id. Ignore.");
            return;
        }

        NetworkSerializer.Deserialize(_resultsSerial, out results);

        foreach (var _result in results.Where(_result => !CheckResult(_result.Key, _result.Value)))
        {
            Debug.LogError("Result of player " + _result.Key + " is not valid. Continue anyway.");
        }

        if (postPropagated != null)
        {
            postPropagated();
        }
    }
コード例 #9
0
    private void ReadyManager_PollReadyInfoResponse(string _readyInfoStr)
    {
        CancelInvoke("AbortPoll");

        m_IsPolling = false;

        var _oldReadyInfo = m_ReadyInfo;
        var _newReadyInfo = new List <string>();

        NetworkSerializer.Deserialize(_readyInfoStr, out _newReadyInfo);
        m_ReadyInfo = new HashSet <string>(_newReadyInfo);

        if (postPoll != null)
        {
            postPoll();
        }

        if (postReady != null)
        {
            var _oldExclusiveReadyInfo = new HashSet <string>(_oldReadyInfo);
            _oldExclusiveReadyInfo.ExceptWith(m_ReadyInfo);

            var _newExclusiveReadyInfo = new HashSet <string>(m_ReadyInfo);
            _newExclusiveReadyInfo.ExceptWith(_oldReadyInfo);

            foreach (var _readyInfo in _oldExclusiveReadyInfo)
            {
                postReady(_readyInfo, false);
            }

            foreach (var _readyInfo in _newExclusiveReadyInfo)
            {
                postReady(_readyInfo, true);
            }
        }
    }