예제 #1
0
        private BaseResponse Enter(int clientId, BasePacket packet)
        {
            PUserEnter pUserEnter = (PUserEnter)packet;

            PlayerDataEx playerData = World.PlayerDataGet(pUserEnter.SessionToken);

            if (playerData == null)
            {
                ThrowSessionError(packet.Type, packet.SessionToken);
                return(null);
            }

            int maxScreenSide = Math.Max(pUserEnter.ScreenRes.Width, pUserEnter.ScreenRes.Height);

            playerData.ScreenRes = new ShortSize(maxScreenSide, maxScreenSide);

            List <Player> nearestPlayers = World.PlayersGetNearest(playerData);

            ShortRect mapWindow;

            byte[]    mapData = World.MapWindowGet(playerData, out mapWindow);
            ShortSize mapSize = new ShortSize(playerData.Map.Width, playerData.Map.Height);

            ShortSize miniMapSize;

            byte[] miniMapData = World.MiniMapGet(playerData, out miniMapSize);

            RegisterWorldResponseForNearest(playerData, new RPlayerEnter
            {
                Player = playerData
            });

            return(new RUserEnter(pUserEnter)
            {
                MyPlayerId = playerData.Player.Id,
                PlayersOnLocation = nearestPlayers,

                MapSize = mapSize,
                MapData = mapData,
                MapWindow = mapWindow,

                MiniMapData = miniMapData,
                MiniMapSize = miniMapSize
            });
        }
예제 #2
0
 public RUserEnter(PUserEnter pUserEnter)
     : base(pUserEnter)
 {
 }