Exemplo n.º 1
0
    //접속 종료 처리
    public bool RemoveUserData(Socket client)
    {
        string id = "";

        try
        {
            //로그인 했을 때
            if (loginUser.ContainsKey(client))
            {
                id = loginUser[client];

                //유저 상태 추가
                if (userState.ContainsKey(id))
                {
                    //캐릭터를 선택했을 때
                    if (userState[id].characterId >= 0)
                    {
                        //방에 입장했을 때
                        if (userState[id].state >= 0)
                        {
                            int roomNum = userState[id].state;

                            //게임에 입장했을 때
                            if (roomManager.Room[roomNum].State == (int)RoomState.inGame)
                            {
                            }
                            roomManager.ExitRoom(roomNum, client);

                            //방에서 퇴장 시킴
                            userState[id].state = -1;
                        }

                        //캐릭터 선택 안 한 상태
                        userState[id].characterId = -1;
                    }

                    // 유저 상태 제거
                    userState.Remove(id);
                }

                //유저 데이터 저장 후 리스트에서 삭제
                database.FileSave(id + ".data", database.GetUserData(id));
                database.UserData.Remove(id);

                //로그아웃 처리
                loginUser.Remove(client);
            }

            ConnectionChecker.RemoveClient(client);

            return(true);
        }
        catch (Exception e)
        {
            Console.WriteLine("DataHandler::RemoveUserData.에러 " + e.Message);
            return(false);
        }
    }