コード例 #1
0
    // 이동
    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}");
            }
        }
    }
コード例 #2
0
    // 로그인 확인.
    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);
    }
コード例 #3
0
    void OnLoginFail(PacketHeader header, C2PayloadVector payload, C2Session session)
    {
        sc_packet_login_fail loginFailPayload;

        payload.Read(out loginFailPayload);

        //C2Session.Instance.uniqueSessionId = (Int64)loginOkPayload.id;
    }
コード例 #4
0
    // 로그인 씬에서 나감. 사실상 연결 끊기.
    void OnLeave(PacketHeader header, C2PayloadVector payload, C2Session session)
    {
        sc_packet_leave leavePayload;

        payload.Read(out leavePayload);

        NetworkManager.Instance.Remove(leavePayload.id); // 제거 함.
    }
コード例 #5
0
    private void Chat(PacketHeader header, C2PayloadVector payload, C2Session session)
    {
        throw new NotImplementedException();

        sc_packet_chat chatPayload;

        payload.Read(out chatPayload);
    }
コード例 #6
0
 public void Start()
 {
     DontDestroyOnLoad(this);
     if (session == null)
     {
         session        = C2Session.Instance;
         session.Client = this;
     }
 }
コード例 #7
0
    public unsafe void SendAttackPacket()
    {
        C2Session c2Session = C2Session.Instance;

        cs_packet_attack attackPayload;

        attackPayload.header.type = PacketType.C2S_ATTACK;
        attackPayload.header.size = (byte)Marshal.SizeOf(typeof(cs_packet_attack));

        c2Session.SendPacket(attackPayload);
    }
コード例 #8
0
ファイル: C2Client.cs プロジェクト: chargednag/game_engine
    public void Start()
    {
        if (session == null)
        {
            session        = C2Session.Instance;
            session.Client = this;
        }


        nickname = "default";
    }
コード例 #9
0
    public unsafe void SendLogoutPacket()
    {
        C2Session c2Session = C2Session.Instance;

        cs_packet_logout logoutPayload;

        logoutPayload.header.type = PacketType.C2S_LOGOUT;
        logoutPayload.header.size = (byte)Marshal.SizeOf(typeof(cs_packet_logout));

        c2Session.SendPacket(logoutPayload);
    }
コード例 #10
0
    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);
    }
コード例 #11
0
    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!");
    }
コード例 #12
0
    // 로그인 확인.
    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;
    }
コード例 #13
0
    public unsafe void SendMovePacket(sbyte direction)
    {
        C2Session c2Session = C2Session.Instance;

        cs_packet_move movePayload;

        movePayload.header.type = PacketType.C2S_MOVE;
        movePayload.header.size = (byte)Marshal.SizeOf(typeof(cs_packet_move));
        movePayload.direction   = direction;
        movePayload.move_time   = 0;

        c2Session.SendPacket(movePayload);
    }
コード例 #14
0
    public unsafe void SendChatPacket(string msg)
    {
        C2Session c2Session = C2Session.Instance;

        cs_packet_chat chatPayload;

        chatPayload.header.type = PacketType.C2S_CHAT;
        chatPayload.header.size = (byte)Marshal.SizeOf(typeof(cs_packet_chat));


        byte[] chatBytes  = System.Text.Encoding.Unicode.GetBytes(msg);
        int    chatLength = chatBytes.Length > (int)Protocol.MAX_CHAT_LEN ? (int)Protocol.MAX_CHAT_LEN : chatBytes.Length;

        Marshal.Copy(chatBytes, 0, (IntPtr)chatPayload.chat, chatLength);

        chatPayload.id = C2Client.Instance.serverID;

        c2Session.SendPacket(chatPayload);
    }
コード例 #15
0
    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); // 제거 함.
        }
    }
コード例 #16
0
    /// <summary>
    //
    /// </summary>
    public unsafe void SendLoginPacket(int level, int exp, int hp, int x, int y)
    {
        C2Session c2Session = C2Session.Instance;

        cs_packet_login loginPacket;

        loginPacket.header.type = PacketType.C2S_LOGIN;
        loginPacket.header.size = (byte)Marshal.SizeOf(typeof(cs_packet_login));

        byte[] unicodeByte = System.Text.Encoding.Unicode.GetBytes(C2Client.Instance.Nickname);
        //byte[] unicodeByte = System.Text.Encoding.Unicode.GetBytes(C2Client.Instance.Nickname);

        int nicknameLength = unicodeByte.Length > (int)Protocol.MAX_ID_LEN ? (int)Protocol.MAX_ID_LEN : unicodeByte.Length;

        Marshal.Copy(unicodeByte, 0, (IntPtr)loginPacket.name, nicknameLength);

        loginPacket.exp   = exp;
        loginPacket.level = level;
        loginPacket.hp    = hp;
        loginPacket.x     = x;
        loginPacket.y     = y;

        c2Session.SendPacket(loginPacket);
    }
コード例 #17
0
    void Enter(PacketHeader header, C2PayloadVector payload, C2Session session)
    {
        sc_packet_enter enterPayload;

        payload.Read(out enterPayload);
    }
コード例 #18
0
 void DoDefualutHandler(PacketHeader header, C2PayloadVector payload, C2Session session)
 {
     UnityEngine.Debug.Log($"DoDefualutHandler : {header}");
     throw new NotImplementedException();
 }
コード例 #19
0
 void DoDefualutHandler(PacketHeader header, C2PayloadVector payload, C2Session session)
 {
     throw new NotImplementedException();
 }
コード例 #20
0
    // 로그인 씬에서 나감. 사실상 연결 끊기.
    void Leave(PacketHeader header, C2PayloadVector payload, C2Session session)
    {
        sc_packet_leave leavePayload;

        payload.Read(out leavePayload);
    }
コード例 #21
0
 public C2Client(MainPlayer playerMovement)
 {
     session        = C2Session.Instance;
     session.Client = this;
     player         = playerMovement;
 }
コード例 #22
0
 // 회원가입
 void ResponseRegistration(PacketHeader header, C2PayloadVector payload, C2Session session)
 {
 }
コード例 #23
0
 // 로그인 씬에서 나감.
 void ResponseExitLogin(PacketHeader header, C2PayloadVector payload, C2Session session)
 {
 }