// 로그인 확인.
    void OnLoginOk(PacketHeader header, C2PayloadVector payload, C2Session session)
    {
        sc_packet_login_ok loginOkPayload;

        payload.Read(out loginOkPayload);

        // user id
        C2Session.Instance.uniqueSessionId = (Int64)loginOkPayload.id;
        C2Client.Instance.serverID         = loginOkPayload.id;

        LoadedPlayerData playerData = new LoadedPlayerData();

        playerData.y     = loginOkPayload.y;
        playerData.x     = loginOkPayload.x;
        playerData.level = loginOkPayload.level;
        playerData.hp    = loginOkPayload.hp;
        playerData.exp   = loginOkPayload.exp;

        C2Client.Instance.PlayerData = playerData;
        //C2Client.Instance.PlayerData.y = .MoveCharacterUsingServerPosition(loginOkPayload.y, loginOkPayload.x);
        //C2Client.Instance.Player.Level = loginOkPayload.level;
        //C2Client.Instance.Player.SetHP(loginOkPayload.hp, loginOkPayload.level * 2);
        //C2Client.Instance.Player.Exp = loginOkPayload.exp;

        UIManager.Instance.CurrentState = UIState.Play;

        SceneManager.LoadSceneAsync("1_Game_mmo", LoadSceneMode.Single);

        // 핸들러 변경후
        C2Session.Instance.SetHandler(new InGamePacketHandler());
        //C2Session.Instance.gameObject.SetActive(false);
    }
    // 이동
    void OnMove(PacketHeader header, C2PayloadVector payload, C2Session session)
    {
        sc_packet_move movePayload;

        payload.Read(out movePayload);

        // 네트웥크 아이디 찾아서
        //var go;//NetworkManager.Instance. movePayload.id;

        if (C2Client.Instance.serverID == movePayload.id)
        {
            C2Client.Instance.Player.MoveCharacterUsingServerPosition(-movePayload.y, movePayload.x);

            LocalDBManager.Instance.UpdateSchema(C2Client.Instance.Nickname, -1, -1, -1, movePayload.x, movePayload.y);
        }
        else
        {
            NetMonoBehaviour go = NetworkManager.Instance.TryGet(movePayload.id);
            if (go != null)
            {
                go.MoveToPositionUsingServerPostion(-movePayload.y, movePayload.x);
                //UnityEngine.Debug.Log($"id : {movePayload.id}, x : {movePayload.x}, y :{movePayload.y}");
            }
            else
            {
                UnityEngine.Debug.Log($"id : {movePayload.id}, x : {movePayload.x}, y :{movePayload.y}");
            }
        }
    }
    // 로그인 씬에서 나감. 사실상 연결 끊기.
    void OnLeave(PacketHeader header, C2PayloadVector payload, C2Session session)
    {
        sc_packet_leave leavePayload;

        payload.Read(out leavePayload);

        NetworkManager.Instance.Remove(leavePayload.id); // 제거 함.
    }
    void OnLoginFail(PacketHeader header, C2PayloadVector payload, C2Session session)
    {
        sc_packet_login_fail loginFailPayload;

        payload.Read(out loginFailPayload);

        //C2Session.Instance.uniqueSessionId = (Int64)loginOkPayload.id;
    }
    private void Chat(PacketHeader header, C2PayloadVector payload, C2Session session)
    {
        throw new NotImplementedException();

        sc_packet_chat chatPayload;

        payload.Read(out chatPayload);
    }
    unsafe void OnChat(PacketHeader header, C2PayloadVector payload, C2Session session)
    {
        sc_packet_chat chatPayload;

        payload.Read(out chatPayload);

        short *chatPtr = chatPayload.chat;

        var chatString = new String((char *)chatPtr);

        ChatManager.Instance.AddChat(chatString, MessageType.User);
    }
Ejemplo n.º 7
0
    public void OnInit()
    {
        socket     = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        sendBuffer = new C2PayloadVector();
        recvBuffer = new C2PayloadVector();
        handler    = new InitialiPacketHandler();
        socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.DontLinger, true);
        socket.Blocking = true;
        socket.NoDelay  = true;

        this.state = SessionState.Initialized;
    }
    private void OnStatChange(PacketHeader header, C2PayloadVector payload, C2Session session)
    {
        sc_packet_stat_change statChangePayload;

        payload.Read(out statChangePayload);

        // 스탯 업데이트 해줌.
        MainPlayer.Instance.SetStat(statChangePayload.level, statChangePayload.hp, statChangePayload.exp);

        LocalDBManager.Instance.UpdateSchema(C2Client.Instance.Nickname, statChangePayload.level, statChangePayload.exp, statChangePayload.hp);

        UnityEngine.Debug.Log("stat change!");
    }
    // 로그인 확인.
    void OnLoginOk(PacketHeader header, C2PayloadVector payload, C2Session session)
    {
        sc_packet_login_ok loginOkPayload;

        payload.Read(out loginOkPayload);

        C2Session.Instance.uniqueSessionId = (Int64)loginOkPayload.id;

        C2Client.Instance.Player.MoveCharacterUsingServerPostion(loginOkPayload.y, loginOkPayload.x);
        C2Client.Instance.Player.Level = loginOkPayload.level;
        C2Client.Instance.Player.SetHP(loginOkPayload.hp, loginOkPayload.level * 2);
        C2Client.Instance.Player.Exp = loginOkPayload.exp;
    }
    unsafe void OnEnter(PacketHeader header, C2PayloadVector payload, C2Session session)
    {
        sc_packet_enter enterPayload;

        payload.Read(out enterPayload);

        //UnityEngine.Debug.Log($"{enterPayload.id} enter payload : o type: {enterPayload.o_type} , y: {enterPayload.y}, x: {enterPayload.x}");

        if (C2Client.Instance.serverID == enterPayload.id)
        {
            MainPlayer.Instance.ResetWhenResapwn();

            C2Client.Instance.Player.MoveCharacterUsingServerPosition(-enterPayload.y, enterPayload.x);

            LocalDBManager.Instance.UpdateSchema(C2Client.Instance.Nickname, -1, -1, -1, enterPayload.x, enterPayload.y);
        }
        else
        {
            string nickname = new string((char *)enterPayload.name);

            NetworkManager.Instance.Add(enterPayload.id, enterPayload.o_type, nickname, enterPayload.y, enterPayload.x); // 제거 함.
        }
    }
Ejemplo n.º 11
0
 void DoDefualutHandler(PacketHeader header, C2PayloadVector payload, C2Session session)
 {
     UnityEngine.Debug.Log($"DoDefualutHandler : {header}");
     throw new NotImplementedException();
 }
Ejemplo n.º 12
0
 void DoDefualutHandler(PacketHeader header, C2PayloadVector payload, C2Session session)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 13
0
 // 로그인 씬에서 나감.
 void ResponseExitLogin(PacketHeader header, C2PayloadVector payload, C2Session session)
 {
 }
Ejemplo n.º 14
0
 // 회원가입
 void ResponseRegistration(PacketHeader header, C2PayloadVector payload, C2Session session)
 {
 }
Ejemplo n.º 15
0
    // 로그인 씬에서 나감. 사실상 연결 끊기.
    void Leave(PacketHeader header, C2PayloadVector payload, C2Session session)
    {
        sc_packet_leave leavePayload;

        payload.Read(out leavePayload);
    }
Ejemplo n.º 16
0
    void Enter(PacketHeader header, C2PayloadVector payload, C2Session session)
    {
        sc_packet_enter enterPayload;

        payload.Read(out enterPayload);
    }