コード例 #1
0
    /*
     * public ServerPacketId ReLogin(DataPacket packet)
     * {
     *  Console.WriteLine(tcpPacket.client.RemoteEndPoint.ToString() + " 재로그인요청");
     *
     *  AccountPacket accountPacket = new AccountPacket(data);
     *  AccountData accountData = accountPacket.GetData();
     *
     *  Console.WriteLine("아이디 : " + accountData.Id);
     *
     *  try
     *  {
     *      if (database.AccountData.Contains(accountData.Id))
     *      {
     *          if (!loginUser.ContainsValue(accountData.Id))
     *          {
     *              msg[0] = (byte)Result.Success;
     *              Console.WriteLine("로그인 성공");
     *              loginUser.Add(tcpPacket.client, accountData.Id);
     *          }
     *          else
     *          {
     *              Console.WriteLine("현재 접속중인 아이디입니다.");
     *
     *              if (CompareIP(GetSocket(accountData.Id).RemoteEndPoint.ToString(), tcpPacket.client.RemoteEndPoint.ToString()))
     *              {
     *                  loginUser.Remove(GetSocket(accountData.Id));
     *                  Console.WriteLine("현재 접속중 해제");
     *              }
     *              msg[0] = (byte)Result.Fail;
     *          }
     *      }
     *  }
     *  catch
     *  {
     *      Console.WriteLine("DataHandler::ReLogin.ContainsValue 에러");
     *      msg[0] = (byte)Result.Fail;
     *  }
     *
     *  return ServerPacketId.LoginResult;
     * }
     */

    public void Logout(DataPacket packet)
    {
        Console.WriteLine(packet.client.RemoteEndPoint.ToString() + " 로그아웃요청");

        Result result = Result.Fail;

        if (RemoveUserData(packet.client))
        {
            result = Result.Success;
        }
        else
        {
            result = Result.Fail;
        }

        ResultData   resultData       = new ResultData((byte)result);
        ResultPacket resultDataPacket = new ResultPacket(resultData);

        resultDataPacket.SetPacketId((int)ServerPacketId.LogoutResult);

        byte[] msg = CreatePacket(resultDataPacket);
        packet = new DataPacket(msg, packet.client);

        lock (sendLock)
        {
            sendMsgs.Enqueue(packet);
        }
    }
コード例 #2
0
    //대기방 -> 캐릭터 선택
    public void ReturnToSelect(DataPacket packet)
    {
        Console.WriteLine(packet.client.RemoteEndPoint.ToString() + "캐릭터 선택창으로 돌아가기");

        string id = loginUser[packet.client];

        Result result = Result.Fail;

        if (userState.ContainsKey(id))
        {
            userState[id].characterId = -1;

            result = Result.Success;
        }
        else
        {
            Console.WriteLine("DataHandler::ReturnToSelect.ContainsKey 에러");

            result = Result.Fail;
        }

        ResultData   resultData   = new ResultData((byte)result);
        ResultPacket resultPacket = new ResultPacket(resultData);

        resultPacket.SetPacketId((int)ServerPacketId.ReturnToSelectResult);

        byte[] msg = CreatePacket(resultPacket);
        packet = new DataPacket(msg, packet.client);

        lock (sendLock)
        {
            sendMsgs.Enqueue(packet);
        }
    }
コード例 #3
0
    //게임 종료 -> Server
    public void GameClose()
    {
        Debug.Log("게임 종료");

        ResultData   resultData       = new ResultData();
        ResultPacket resultDataPacket = new ResultPacket(resultData);

        resultDataPacket.SetPacketId((int)ClientPacketId.GameClose);

        byte[] msg = CreatePacket(resultDataPacket);

        try
        {
            tcpSock.Send(msg, 0, msg.Length, SocketFlags.None);
        }
        catch
        {
            Debug.Log("GameClose.Send 에러");
        }

        try
        {
            tcpSock.Close();
            udpSock.Close();
        }
        catch
        {
            Debug.Log("이미 소켓이 닫혀있습니다.");
        }
    }
コード例 #4
0
    //방 퇴장
    public void ExitRoom(DataPacket packet)
    {
        Console.WriteLine(packet.client.RemoteEndPoint.ToString() + "방 퇴장");
        ExitRoomPacket exitRoomPacket = new ExitRoomPacket(packet.msg);
        ExitRoomData   exitRoomData   = exitRoomPacket.GetData();

        string id          = loginUser[packet.client];
        int    characterId = userState[id].characterId;

        Result result  = Result.Fail;
        int    roomNum = -1;
        bool   empty   = false;

        Console.WriteLine(userState[id].state);

        try
        {
            empty               = roomManager.ExitRoom(userState[id].state, packet.client);
            roomNum             = userState[id].state;
            userState[id].state = -1;
            result              = Result.Success;
        }
        catch
        {
            Console.WriteLine("DataHandler::ExitRoom.DeletePlayer 에러");
            result = Result.Fail;
            return;
        }

        ResultData   resultData       = new ResultData((byte)result);
        ResultPacket resultDataPacket = new ResultPacket(resultData);

        resultDataPacket.SetPacketId((int)ServerPacketId.ExitRoomNumber);

        byte[] msg = CreatePacket(resultDataPacket);
        packet = new DataPacket(msg, packet.client);

        lock (sendLock)
        {
            sendMsgs.Enqueue(packet);
        }

        Console.WriteLine(roomNum);

        if (roomNum != -1 && !empty)
        {
            for (int playerIndex = 0; playerIndex < RoomManager.maxPlayerNum; playerIndex++)
            {
                if (roomManager.Room[exitRoomData.RoomNum].Socket[playerIndex] != null)
                {
                    packet = new DataPacket(new byte[0], roomManager.Room[exitRoomData.RoomNum].Socket[playerIndex]);
                    RequestRoomUserData(packet);
                }
            }
        }
    }
        private void buttonS_Click(object sender, EventArgs e)
        {
            pictureR.Visible = false;
            pictureP.Visible = false;
            pictureS.Visible = true;
            string       r      = "SCISSORS";
            ResultPacket result = new ResultPacket(r);

            Send(result);
        }
コード例 #6
0
    //연결 확인 답장 -> Server
    public void ServerConnectionAnswer()
    {
        ResultData   resultData   = new ResultData();
        ResultPacket resultPacket = new ResultPacket(resultData);

        resultPacket.SetPacketId((int)ClientPacketId.ServerConnectionAnswer);

        DataPacket packet = new DataPacket(CreatePacket(resultPacket), null);

        sendMsgs.Enqueue(packet);
    }
コード例 #7
0
    //게임 시작
    public void StartGame(DataPacket packet)
    {
        Console.WriteLine(packet.client.RemoteEndPoint.ToString() + "게임 시작");

        string id      = loginUser[packet.client];
        int    roomNum = userState[id].state;

        if (roomNum < 0)
        {
            Console.WriteLine("방에 입장해있지 않습니다.");
            return;
        }

        roomManager.Room[roomNum].GameStart();

        byte result = (byte)Result.Success;

        ResultData   resultData   = new ResultData(result);
        ResultPacket resultPacket = new ResultPacket(resultData);

        bool setHost = false;

        for (int i = 0; i < RoomManager.maxPlayerNum; i++)
        {
            resultPacket.SetPacketId((int)ServerPacketId.StartGame);
            byte[] msg = CreatePacket(resultPacket);

            if (roomManager.Room[roomNum].Socket[i] != null)
            {
                Console.WriteLine(i + "번 유저 : " + roomManager.Room[roomNum].Socket[i].RemoteEndPoint.ToString());
                packet = new DataPacket(msg, roomManager.Room[roomNum].Socket[i]);

                lock (sendLock)
                {
                    sendMsgs.Enqueue(packet);
                }

                if (!setHost)
                {
                    setHost = true;
                    resultPacket.SetPacketId((int)ServerPacketId.SetHost);
                    msg = CreatePacket(resultPacket);

                    packet = new DataPacket(msg, roomManager.Room[roomNum].Socket[i]);

                    lock (sendLock)
                    {
                        sendMsgs.Enqueue(packet);
                    }
                }
            }
        }
    }
コード例 #8
0
    //로그아웃 -> Server
    public void Logout()
    {
        Debug.Log("로그아웃");

        ResultData   resultData   = new ResultData();
        ResultPacket resultPacket = new ResultPacket(resultData);

        resultPacket.SetPacketId((int)ClientPacketId.Logout);

        DataPacket packet = new DataPacket(CreatePacket(resultPacket), null);

        sendMsgs.Enqueue(packet);
    }
コード例 #9
0
    //선택 창으로 돌아가기 -> Server
    public void ReturnToSelect()
    {
        Debug.Log("선택 창으로 돌아가기");

        ResultData   resultData   = new ResultData();
        ResultPacket resultPacket = new ResultPacket(resultData);

        resultPacket.SetPacketId((int)ClientPacketId.ReturnToSelect);

        DataPacket packet = new DataPacket(CreatePacket(resultPacket), null);

        sendMsgs.Enqueue(packet);
    }
コード例 #10
0
    //게임 시작 -> Server
    public void StartGame()
    {
        Debug.Log("게임 시작");

        ResultData   resultData   = new ResultData();
        ResultPacket resultPacket = new ResultPacket(resultData);

        resultPacket.SetPacketId((int)ClientPacketId.StartGame);

        DataPacket packet = new DataPacket(CreatePacket(resultPacket), null);

        sendMsgs.Enqueue(packet);
    }
コード例 #11
0
    //UDP 연결 요청 -> Server
    public void RequestUdpConnection()
    {
        Debug.Log("Udp 연결 요청");

        ResultData   resultData   = new ResultData();
        ResultPacket resultPacket = new ResultPacket(resultData);

        resultPacket.SetPacketId((int)ClientPacketId.RequestUdpConnection);

        DataPacket packet = new DataPacket(CreatePacket(resultPacket), null);

        sendMsgs.Enqueue(packet);
    }
コード例 #12
0
    //Udp 답신 -> Client
    public void UdpAnswer(EndPoint newEndPoint, int udpId)
    {
        Debug.Log(newEndPoint.ToString() + " Udp 답신 보냄 Id : " + udpId);

        ResultData   resultData       = new ResultData(new byte());
        ResultPacket resultDataPacket = new ResultPacket(resultData);

        resultDataPacket.SetPacketId((int)P2PPacketId.UdpAnswer);

        DataPacket packet = new DataPacket(CreateUdpPacket(resultDataPacket, udpId), newEndPoint);

        sendMsgs.Enqueue(packet);
    }
コード例 #13
0
    //연결 완료 -> Server
    public void LoadingComplete()
    {
        Debug.Log("Udp 연결 완료");

        ResultData   resultData   = new ResultData();
        ResultPacket resultPacket = new ResultPacket(resultData);

        resultPacket.SetPacketId((int)ClientPacketId.LoadingComplete);

        DataPacket packet = new DataPacket(CreatePacket(resultPacket), null);

        sendMsgs.Enqueue(packet);
    }
コード例 #14
0
    //캐릭터 정보 요청 -> Server
    public void RequestCharacterStatus()
    {
        Debug.Log("캐릭터 정보 요청");

        ResultData   resultData   = new ResultData();
        ResultPacket resultPacket = new ResultPacket(resultData);

        resultPacket.SetPacketId((int)ClientPacketId.RequestCharacterStatus);

        DataPacket packet = new DataPacket(CreatePacket(resultPacket), null);

        sendMsgs.Enqueue(packet);
    }
コード例 #15
0
    //방 목록 요청 -> Server
    public void RequestRoomList()
    {
        Debug.Log("방 목록 요청");

        ResultData   resultData   = new ResultData();
        ResultPacket resultPacket = new ResultPacket(resultData);

        resultPacket.SetPacketId((int)ClientPacketId.RequestRoomList);

        DataPacket packet = new DataPacket(CreatePacket(resultPacket), null);

        sendMsgs.Enqueue(packet);
    }
コード例 #16
0
ファイル: DataSender.cs プロジェクト: dds4120/Nightmare-Break
    //던전 몬스터 소환 데이터 요청 -> Server
    public void RequestMonsterSpawnList()
    {
        Debug.Log("몬스터 소환 데이터 요청");

        byte         result       = (byte)UIManager.Instance.RoomUIManager.DungeonId;
        ResultData   resultData   = new ResultData();
        ResultPacket resultPacket = new ResultPacket(resultData);

        resultPacket.SetPacketId((int)ClientPacketId.RequestMonsterSpawnList);

        DataPacket packet = new DataPacket(CreatePacket(resultPacket), null);

        sendMsgs.Enqueue(packet);
    }
コード例 #17
0
    //연결 체크
    public void ServerConnectionCheck(DataPacket packet)
    {
        ResultData   resultData   = new ResultData();
        ResultPacket resultPacket = new ResultPacket(resultData);

        resultPacket.SetPacketId((int)ServerPacketId.ServerConnectionCheck);

        byte[] msg = CreatePacket(resultPacket);
        packet = new DataPacket(msg, packet.client);

        lock (sendLock)
        {
            sendMsgs.Enqueue(packet);
        }
    }
コード例 #18
0
    //Server - 탈퇴 결과
    public void DeleteAccountResult(DataPacket packet)
    {
        Debug.Log("탈퇴 결과 수신");
        ResultPacket resultPacket = new ResultPacket(packet.msg);
        ResultData   resultData   = resultPacket.GetData();

        if (resultData.Result == (byte)Result.Success)
        {
            StartCoroutine(uiManager.Dialog(1.0f, "탈퇴 성공"));
        }
        else if (resultData.Result == (byte)Result.Fail)
        {
            StartCoroutine(uiManager.Dialog(1.0f, "탈퇴 실패"));
        }
    }
コード例 #19
0
    //Server - 가입 결과
    public void CreateAccountResult(DataPacket packet)
    {
        Debug.Log("가입 결과 수신");
        ResultPacket resultPacket = new ResultPacket(packet.msg);
        ResultData   resultData   = resultPacket.GetData();

        if (resultData.Result == (byte)Result.Success)
        {
            StartCoroutine(uiManager.Dialog(1.0f, "가입 성공"));
            uiManager.LoginUIManager.CreateAccountSuccess();
        }
        else if (resultData.Result == (byte)Result.Fail)
        {
            StartCoroutine(uiManager.Dialog(1.0f, "가입 실패"));
        }
    }
コード例 #20
0
    //Server - 게임 시작
    public void StartGame(DataPacket packet)
    {
        Debug.Log("게임 시작 결과");

        ResultPacket resultPacket = new ResultPacket(packet.msg);
        ResultData   resultData   = resultPacket.GetData();

        if (resultData.Result == (byte)Result.Success)
        {
            SceneChanger.Instance.SceneChange(SceneChanger.SceneName.TeddyBearStage1, true);
        }
        else if (resultData.Result == (byte)Result.Fail)
        {
            Debug.Log("게임 시작 실패");
        }
    }
コード例 #21
0
    //Server - 선택 창으로 돌아가기 결과 수신
    public void ReturnToSelectResult(DataPacket packet)
    {
        Debug.Log("선택 창으로 돌아가기 결과");

        ResultPacket resultPacket = new ResultPacket(packet.msg);
        ResultData   resultData   = resultPacket.GetData();

        if (resultData.Result == (byte)Result.Success)
        {
            SceneChanger.Instance.SceneChange(SceneChanger.SceneName.SelectScene, true);
        }
        else
        {
            Debug.Log("선택창으로 돌아가기 실패");
        }
    }
コード例 #22
0
    //Server - 캐릭터 삭제 결과
    public void DeleteCharacterResult(DataPacket packet)
    {
        Debug.Log("캐릭터 삭제 결과 수신");

        ResultPacket resultPacket = new ResultPacket(packet.msg);
        ResultData   resultData   = resultPacket.GetData();

        if (resultData.Result == (byte)Result.Success)
        {
            StartCoroutine(UIManager.Instance.Dialog(1.0f, "캐릭터 삭제 성공"));
        }
        else if (resultData.Result == (byte)Result.Fail)
        {
            StartCoroutine(UIManager.Instance.Dialog(1.0f, "캐릭터 삭제 실패"));
        }
    }
コード例 #23
0
    //Server - 캐릭터 선택 결과
    public void SelectCharacterResult(DataPacket packet)
    {
        Debug.Log("캐릭터 선택 결과 수신");

        ResultPacket resultPacket = new ResultPacket(packet.msg);
        ResultData   resultData   = resultPacket.GetData();

        if (resultData.Result == (byte)Result.Success)
        {
            StartCoroutine(uiManager.Dialog(1.0f, "캐릭터 선택 성공"));
        }
        else if (resultData.Result == (byte)Result.Fail)
        {
            StartCoroutine(uiManager.Dialog(1.0f, "캐릭터 선택 실패"));
        }
    }
コード例 #24
0
    //캐릭터 삭제
    public void DeleteCharacter(DataPacket packet)
    {
        Console.WriteLine(packet.client.RemoteEndPoint.ToString() + "캐릭터 삭제");

        DeleteCharacterPacket deleteCharacterPacket = new DeleteCharacterPacket(packet.msg);
        DeleteCharacterData   deleteCharacterData   = deleteCharacterPacket.GetData();

        string id = "";

        try
        {
            id = loginUser[packet.client];
        }
        catch
        {
            Console.WriteLine("Datahandler::DeleteCharacter.loginUser 에러");
        }

        UserData userData = database.GetUserData(id);
        Result   result   = Result.Fail;

        try
        {
            userData.DeleteHero(deleteCharacterData.Index);
            result = Result.Success;
        }
        catch
        {
            Console.WriteLine("DataHandler::DeleteCharacter.DeleteHero에러");
            result = Result.Fail;
        }

        database.FileSave(id + ".data", userData);

        ResultData   resultData       = new ResultData((byte)result);
        ResultPacket resultDataPacket = new ResultPacket(resultData);

        resultDataPacket.SetPacketId((int)ServerPacketId.DeleteChracterResult);

        byte[] msg = CreatePacket(resultDataPacket);
        packet = new DataPacket(msg, packet.client);

        lock (sendLock)
        {
            sendMsgs.Enqueue(packet);
        }
    }
コード例 #25
0
    //Server - 게임 시작
    public void StartGame(DataPacket packet)
    {
        Debug.Log("게임 시작");

        ResultPacket resultPacket = new ResultPacket(packet.msg);
        ResultData   resultData   = resultPacket.GetData();

        if (resultData.Result == (byte)Result.Success)
        {
            Debug.Log("게임 시작");
            DataSender.Instance.RequestUdpConnection();
        }
        else if (resultData.Result == (byte)Result.Fail)
        {
            Debug.Log("게임 시작 실패");
        }
    }
コード例 #26
0
    //Server - 로그인 결과
    public void LoginResult(DataPacket packet)
    {
        Debug.Log("로그인 결과 수신");

        ResultPacket resultPacket = new ResultPacket(packet.msg);
        ResultData   resultData   = resultPacket.GetData();

        if (resultData.Result == (byte)Result.Success)
        {
            StartCoroutine(uiManager.Dialog(1.0f, "로그인 성공"));
            SceneChanger.Instance.SceneChange(SceneChanger.SceneName.SelectScene, true);
        }
        else if (resultData.Result == (byte)Result.Fail)
        {
            StartCoroutine(uiManager.Dialog(1.0f, "로그인 실패"));
        }
    }
コード例 #27
0
    //Server - 캐릭터 생성 결과
    public void CreateCharacterResult(DataPacket packet)
    {
        Debug.Log("캐릭터 생성 결과 수신");

        ResultPacket resultPacket = new ResultPacket(packet.msg);
        ResultData   resultData   = resultPacket.GetData();

        if (resultData.Result == (byte)Result.Success)
        {
            StartCoroutine(uiManager.Dialog(1.0f, "캐릭터 생성 성공"));
            SceneChanger.Instance.SceneChange(SceneChanger.SceneName.SelectScene, false);
        }
        else if (resultData.Result == (byte)Result.Fail)
        {
            StartCoroutine(uiManager.Dialog(1.0f, "캐릭터 생성 실패"));
        }
    }
コード例 #28
0
    public void DeleteAccount(DataPacket packet)
    {
        Console.WriteLine(packet.client.RemoteEndPoint.ToString() + " 탈퇴요청");

        AccountPacket accountPacket = new AccountPacket(packet.msg);
        AccountData   accountData   = accountPacket.GetData();

        Console.WriteLine("아이디 : " + accountData.Id + "패스워드 : " + accountData.Id);

        Result result = Result.Fail;

        try
        {
            if (database.DeleteAccountData(accountData.Id, accountData.Password) == Result.Success)
            {
                result = Result.Success;
                Console.WriteLine("탈퇴 성공");
            }
            else
            {
                result = Result.Fail;
                Console.WriteLine("탈퇴 실패");
            }
        }
        catch
        {
            Console.WriteLine("DataHandler::DeleteAccount.RemovePlayerData 에러");
            result = Result.Fail;
        }

        ResultData   resultData       = new ResultData((byte)result);
        ResultPacket resultDataPacket = new ResultPacket(resultData);

        resultDataPacket.SetPacketId((int)ServerPacketId.DeleteAccountResult);

        byte[] msg = CreatePacket(resultDataPacket);
        packet = new DataPacket(msg, packet.client);

        lock (sendLock)
        {
            sendMsgs.Enqueue(packet);
        }
    }
コード例 #29
0
    //캐릭터 생성
    public void CreateCharacter(DataPacket packet)
    {
        Console.WriteLine(packet.client.RemoteEndPoint.ToString() + "캐릭터 생성");

        CreateCharacterPacket createCharacterPacket = new CreateCharacterPacket(packet.msg);
        CreateCharacterData   createCharacterData   = createCharacterPacket.GetData();

        Console.WriteLine("이름 : " + createCharacterData.HName);
        Console.WriteLine("직업 : " + createCharacterData.HClass);
        Console.WriteLine("성별 : " + createCharacterData.Gender);

        string   id       = loginUser[packet.client];
        UserData userData = database.GetUserData(id);

        Result result = Result.Fail;

        try
        {
            userData.CreateHero(createCharacterData);
            database.FileSave(id + ".data", userData);

            result = Result.Success;
        }
        catch
        {
            Console.WriteLine("DataHandler::CreateCharacter.CreateHero 에러");
            result = Result.Fail;
        }

        ResultData   resultData       = new ResultData((byte)result);
        ResultPacket resultDataPacket = new ResultPacket(resultData);

        resultDataPacket.SetPacketId((int)ServerPacketId.CreateCharacterResult);

        byte[] msg = CreatePacket(resultDataPacket);
        packet = new DataPacket(msg, packet.client);

        lock (sendLock)
        {
            sendMsgs.Enqueue(packet);
        }
    }
コード例 #30
0
    //UDP 연결 확인 요청 -> Client
    public void RequestConnectionCheck(EndPoint endPoint)
    {
        Debug.Log(endPoint.ToString() + " 연결 체크 요청");

        int index = NetworkManager.Instance.GetUserIndex(endPoint);

        ResultData   resultData       = new ResultData(new byte());
        ResultPacket resultDataPacket = new ResultPacket(resultData);

        resultDataPacket.SetPacketId((int)P2PPacketId.RequestConnectionCheck);

        DataPacket packet = new DataPacket(CreateUdpPacket(resultDataPacket, udpId[index]), endPoint);

        sendMsgs.Enqueue(packet);

        SendData sendData = new SendData(udpId[index], endPoint, packet.msg);

        NetworkManager.Instance.ReSendManager.AddReSendData(sendData, index);
        udpId[index]++;
    }