Beispiel #1
0
    // Step 3
    public static void S_CreatePlayerHandler(PacketSession session, IMessage packet)// 플레이어 생성
    {
        S_CreatePlayer createOkPacket = packet as S_CreatePlayer;
        ServerSession  serverSession  = session as ServerSession;

        if (createOkPacket.Player == null)
        {
            // 겹치는 더미클라는 없다
        }
        else
        {
            C_EnterGame enterGamePacket = new C_EnterGame();
            enterGamePacket.Name = createOkPacket.Player.Name;
            serverSession.Send(enterGamePacket);
        }
    }
Beispiel #2
0
    // Step3
    public static void S_CreatePlayerHandler(PacketSession session, IMessage packet)
    {
        S_CreatePlayer createOkPacket = (S_CreatePlayer)packet;
        ServerSession  serverSession  = (ServerSession)session;

        if (createOkPacket.Player == null)
        {
            // 생략
        }
        else
        {
            C_EnterGame enterGamePacket = new C_EnterGame();
            enterGamePacket.Name = createOkPacket.Player.Name;
            serverSession.Send(enterGamePacket);
        }
    }
Beispiel #3
0
    public static void S_CreatePlayerHandler(PacketSession session, IMessage packet)
    {
        S_CreatePlayer createOkPacket = (S_CreatePlayer)packet;

        if (createOkPacket.Player == null)
        {
            C_CreatePlayer createPacket = new C_CreatePlayer();
            createPacket.Name = $"Player_{Random.Range(0, 10000).ToString("0000")}";
            Managers.Network.Send(createPacket);
        }
        else
        {
            C_EnterGame enterGamePacket = new C_EnterGame();
            enterGamePacket.Name = createOkPacket.Player.Name;
            Managers.Network.Send(enterGamePacket);
        }
    }
Beispiel #4
0
    public static void S_CreatePlayerHandler(PacketSession session, IMessage packet)// 플레이어 생성
    {
        S_CreatePlayer createOkPacket = packet as S_CreatePlayer;

        Debug.Log("CreatePlayer");
        if (createOkPacket.Player == null)
        {
            // 플레이어 만들기 실패
            C_CreatePlayer createPacket = new C_CreatePlayer();
            createPacket.Name = $"Player_{Random.Range(0, 10000).ToString("0000")}";
            Managers.Network.Send(createPacket);
        }
        else
        {
            C_EnterGame enterGamePacket = new C_EnterGame();
            enterGamePacket.Name = createOkPacket.Player.Name;
            Managers.Network.Send(enterGamePacket);
        }
    }
Beispiel #5
0
        public void HandleCreatePlayer(C_CreatePlayer createPacket)
        {
            // 로비에서만 가능
            if (ServerState != PlayerServerState.ServerStateLobby)
            {
                return;
            }

            using (AppDbContext db = new AppDbContext())
            {
                // 찾는거 딱히 의미없음.. 동시에 같은 이름 올 수 도있음
                PlayerDb findPlayer = db.Players
                                      .Where(p => p.PlayerName == createPacket.Name)
                                      .FirstOrDefault();

                if (findPlayer != null)
                {
                    // 겹치니 못만든다는 뜻으로 null 패킷 보냄
                    Send(new S_CreatePlayer());
                }

                else
                {
                    // 기획상의 1렙 스텟
                    StatInfo stat = null;
                    DataManager.StatDict.TryGetValue(1, out stat);

                    // DB에 플레이어 추가
                    PlayerDb newPlayerDb = new PlayerDb()
                    {
                        AccountId  = AccountDbId,
                        PlayerName = createPacket.Name,
                        Level      = stat.Level,
                        Hp         = stat.Hp,
                        MaxHp      = stat.MaxHp,
                        Attack     = stat.Attack,
                        Speed      = stat.Speed,
                        TotalExp   = 0
                    };

                    db.Players.Add(newPlayerDb);
                    bool success = db.SaveChangesEx();
                    if (success == false)
                    {
                        return;
                    }

                    // 메모리에 추가
                    LobbyPlayerInfo lobbyPlayer = new LobbyPlayerInfo()
                    {
                        PlayerDbId = newPlayerDb.PlayerDbId,
                        Name       = newPlayerDb.PlayerName,
                        StatInfo   = new StatInfo()
                        {
                            Level    = newPlayerDb.Level,
                            Hp       = newPlayerDb.Hp,
                            MaxHp    = newPlayerDb.MaxHp,
                            Attack   = newPlayerDb.Attack,
                            Speed    = newPlayerDb.Speed,
                            TotalExp = newPlayerDb.TotalExp
                        }
                    };

                    LobbyPlayers.Add(lobbyPlayer);

                    // 성공 전송
                    S_CreatePlayer newPlayerPacket = new S_CreatePlayer()
                    {
                        Player = new LobbyPlayerInfo()
                    };
                    newPlayerPacket.Player.MergeFrom(lobbyPlayer);
                    Send(newPlayerPacket);
                }
            }
        }
Beispiel #6
0
        public void HandleCreatePlayer(C_CreatePlayer createPacket)
        {
            // TODO : 이런 저런 보안 체크
            if (ServerState != PlayerServerState.ServerStateLobby)
            {
                return;
            }

            using (AppDbContext db = new AppDbContext())
            {
                PlayerDb findPlayer = db.Players
                                      .Where(p => p.PlayerName == createPacket.Name).FirstOrDefault();

                if (findPlayer != null)
                {
                    // 이름이 겹친다
                    Send(new S_CreatePlayer());
                }
                else
                {
                    // 1레벨 스탯 정보 추출
                    StatInfo stat = null;
                    DataManager.StatDict.TryGetValue(1, out stat);

                    // DB에 플레이어 만들어줘야 함
                    PlayerDb newPlayerDb = new PlayerDb()
                    {
                        PlayerName  = createPacket.Name,
                        Level       = stat.Level,
                        Hp          = stat.Hp,
                        MaxHp       = stat.MaxHp,
                        Attack      = stat.Attack,
                        Speed       = stat.Speed,
                        TotalExp    = 0,
                        AccountDbId = AccountDbId
                    };

                    db.Players.Add(newPlayerDb);
                    bool success = db.SaveChangesEx();
                    if (success == false)
                    {
                        return;
                    }

                    // 메모리에 추가
                    LobbyPlayerInfo lobbyPlayer = new LobbyPlayerInfo()
                    {
                        PlayerDbId = newPlayerDb.PlayerDbId,
                        Name       = createPacket.Name,
                        StatInfo   = new StatInfo()
                        {
                            Level    = stat.Level,
                            Hp       = stat.Hp,
                            MaxHp    = stat.MaxHp,
                            Attack   = stat.Attack,
                            Speed    = stat.Speed,
                            TotalExp = 0
                        }
                    };

                    // 메모리에도 들고 있다
                    LobbyPlayers.Add(lobbyPlayer);

                    // 클라에 전송
                    S_CreatePlayer newPlayer = new S_CreatePlayer()
                    {
                        Player = new LobbyPlayerInfo()
                    };
                    newPlayer.Player.MergeFrom(lobbyPlayer);

                    Send(newPlayer);
                }
            }
        }