예제 #1
0
        public void Assign(SessionInterface defaultInterface)
        {
            MatchmakeUser matchedUser = defaultInterface as MatchmakeUser;

            GameObject newPlayer = gameObjectManager.CreateGameObject(matchedUser.Nickname, false);

            newPlayer.Tag = TAG.Character;
            UserGameObjectIndexes.Add(newPlayer.id);
            Scoreboard.AddNewEmptyPlayerScore(newPlayer.Name);

            UserSession userSession = new UserSession();

            userSession.UserNickname = matchedUser.Nickname;
            userSession.TakeOver(matchedUser);
            userMediator.Add(userSession);

            UserInputProcess userInputProcess = newPlayer.AddComponent <UserInputProcess>();

            userInputProcess.SetFence(this.mapCenter, this.mapHeight, this.mapWidth);
            //Console.WriteLine(matchedUser.Nickname + "이가 게임에 참가했습니다.");

            if (userMediator.GetSessionsCount() == Config.USER_COUNT_PER_ONE_GAME)
            {
                Start();
            }
        }
        public void Assign(SessionInterface defaultInterface)
        {
            LoginUser     src  = defaultInterface as LoginUser;
            MatchmakeUser user = new MatchmakeUser();

            user.TakeOver(defaultInterface);
            user.Nickname = src.Nickname;
            Console.WriteLine("새로운 유저가 매치메이킹에 등록됨. " + user.Nickname);
        }
 public void RemoveMatchingList(MatchmakeUser user, bool flagLock)
 {
     if (flagLock)
     {
         lock (lockMatchingList)
         {
             matchingUserList[user.Index] = null;
             matchingUserIndexPool.Push(user.Index);
             user.Index = -1;
             Console.WriteLine(user.Nickname + " 가 매치 검색을 취소했습니다.");
         }
     }
     else
     {
         matchingUserList[user.Index] = null;
         matchingUserIndexPool.Push(user.Index);
         user.Index = -1;
         Console.WriteLine(user.Nickname + " 가 매치 검색을 취소했습니다.");
     }
 }
        public bool AddMatchingList(MatchmakeUser user, bool flagLock)
        {
            if (flagLock)
            {
                lock (lockMatchingList)
                {
                    if (matchingUserIndexPool.Count > 0)
                    {
                        int index = matchingUserIndexPool.Pop();
                        matchingUserList[index] = user;
                        user.Index = index;
                        Console.WriteLine(user.Nickname + " 가 매치 검색을 시작했습니다.");
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            else
            {
                if (matchingUserIndexPool.Count > 0)
                {
                    int index = matchingUserIndexPool.Pop();
                    matchingUserList[index] = user;
                    user.Index = index;
                    Console.WriteLine(user.Nickname + " 가 매치 검색을 시작했습니다.");
                }
                else
                {
                    return(false);
                }
            }

            return(true);
        }
 public void CancelMatching(MatchmakeUser user)
 {
     RemoveMatchingList(user, true);
     user.Send(allow_cancel_matchmake);
 }
 public void StartMatching(MatchmakeUser user)
 {
     AddMatchingList(user, true);
     user.Send(allow_matchmake);
 }