private void GameHostResponse(BaseResponse e) { switch (e.Type) { case PacketType.UserEnter: Connected = true; _changingConnection = false; break; case PacketType.UserLogin: RUserLogin userLogin = (RUserLogin)e; _sessionToken = userLogin.SessionToken; ShortSize screenRes = new ShortSize ( Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height ); TCPClientDataSend(new PUserEnter { SessionToken = _sessionToken, ScreenRes = screenRes }); break; } }
/// <summary> /// 跟新单个可以登陆用户 /// </summary> /// <param name="userLogin"></param> public static void UpdateLoginUser(RUserLogin userLogin) { try { var db = RedisLib.Config.RedisDbs.AuditFrameDb(); RedisLib.Config.RedisHelper.SetHash(db, RedisLib.Model.Frame.Tables.UserLogin, userLogin.Name, userLogin); } catch (Exception e) { throw new Exception(e.Message); } }
private void GameHostResponse(BaseResponse e) { if (e.HasError) { ReconnectToHost(); return; } switch (e.Type) { case PacketType.UserLogin: RUserLogin userLogin = (RUserLogin)e; _sessionToken = userLogin.SessionToken; ShortSize screenRes = new ShortSize ( Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height ); TCPClientDataSend(new PUserEnter { SessionToken = _sessionToken, ScreenRes = screenRes }); break; case PacketType.UserEnter: lock (_playersData) { RUserEnter userEnter = (RUserEnter)e; //!!! _map.Setup(userEnter.MapSize); _map.AppendMapData(userEnter.MapData, userEnter.MapWindow); _map.AppendMiniMapData(userEnter.MiniMapData, userEnter.MiniMapSize); OnMapChanged(); foreach (Player p in userEnter.PlayersOnLocation) { if (!_playersData.ContainsKey(p.Id)) { _playersData.Add(p.Id, new PlayerDataEx(p)); } } _myPlayerData = _playersData[userEnter.MyPlayerId]; _playersRo = new ReadOnlyCollection <PlayerDataEx>(_playersData.Values.ToArray()); } CenterTo((int)(_myPlayerData.Player.Position.X * _scaleFactor), //!!! (int)(_myPlayerData.Player.Position.Y * _scaleFactor), true); break; case PacketType.PlayerEnter: lock (_playersData) { RPlayerEnter playerEnter = (RPlayerEnter)e; if (!_playersData.ContainsKey(playerEnter.Player.Id) && _myPlayerData != null && playerEnter.Player.Id != _myPlayerData.Player.Id) { _playersData.Add(playerEnter.Player.Id, new PlayerDataEx(playerEnter.Player)); _playersRo = new ReadOnlyCollection <PlayerDataEx>(_playersData.Values.ToArray()); _somethingChanged = true; //!!! } } break; case PacketType.PlayerExit: lock (_playersData) { RPlayerExit playerExit = (RPlayerExit)e; if (_playersData.ContainsKey(playerExit.PlayerId) && _myPlayerData != null && playerExit.PlayerId != _myPlayerData.Player.Id) { _playersData.Remove(playerExit.PlayerId); _playersRo = new ReadOnlyCollection <PlayerDataEx>(_playersData.Values.ToArray()); _somethingChanged = true; //!!! } } break; case PacketType.PlayerRotate: lock (_playersData) { PlayerDataEx playerData; RPlayerRotate playerRotate = (RPlayerRotate)e; if (_playersData.TryGetValue(playerRotate.PlayerId, out playerData)) { playerData.Player.Angle = playerRotate.Angle; } } break; case PacketType.PlayerMove: lock (_playersData) { PlayerDataEx playerData; RPlayerMove playerMove = (RPlayerMove)e; if (_playersData.TryGetValue(playerMove.PlayerId, out playerData)) { if (playerMove.Direction == Direction.None) { playerData.StopMoving(playerMove.Position); } else { playerData.StartMoving(playerMove.Position, playerMove.Direction); } } } break; case PacketType.MapData: RMapData mapData = (RMapData)e; _map.AppendMapData(mapData.MapData, mapData.MapWindow); //!!! _myPlayerData.GettingMapWindow = false; break; } }