Example #1
0
        internal bool Join(Protos.GC2CS_BeginMatch.Types.EMode mode, CSUser user)
        {
            if (this._userIDToRoomUser.ContainsKey(user.gcNID))
            {
                return(false);
            }

            byte mode2;

            switch (mode)
            {
            case Protos.GC2CS_BeginMatch.Types.EMode.T1P1:
                mode2 = (1 << 4) | 1;
                break;

            case Protos.GC2CS_BeginMatch.Types.EMode.T2P1:
                mode2 = (2 << 4) | 1;
                break;

            case Protos.GC2CS_BeginMatch.Types.EMode.T2P2:
                mode2 = (2 << 4) | 2;
                break;

            case Protos.GC2CS_BeginMatch.Types.EMode.T4P1:
                mode2 = (4 << 4) | 1;
                break;

            default:
                Logger.Warn($"not support mode:{mode}");
                return(false);
            }
            if (!this._matchingSystems.TryGetValue(mode2, out MatchSystem matchingSystem))
            {
                return(false);
            }

            MatchRoomUser roomUser = new MatchRoomUser(user.gcNID, user.rank);

            this._userIDToRoomUser[user.gcNID] = roomUser;
            if (!matchingSystem.Join(roomUser))
            {
                this._userIDToRoomUser.Remove(user.gcNID);
                return(false);
            }
            return(true);
        }
Example #2
0
        /// <summary>
        /// 创建匹配玩家
        /// </summary>
        /// <param name="mode">模式(高4位代表队伍数量,低4位代表每个队伍的玩家数量)</param>
        /// <param name="user">玩家实例</param>
        /// <param name="matchParams">匹配参数</param>
        /// <returns>是否创建成功</returns>
        internal bool CreateUser(Protos.GC2CS_BeginMatch.Types.EMode mode, CSUser user, BattleUserData matchParams)
        {
            if (this._userToMatchUser.ContainsKey(user))
            {
                return(false);
            }

            byte mode2;

            switch (mode)
            {
            case Protos.GC2CS_BeginMatch.Types.EMode.T1P1:
                mode2 = (1 << 4) | 1;
                break;

            case Protos.GC2CS_BeginMatch.Types.EMode.T2P1:
                mode2 = (2 << 4) | 1;
                break;

            case Protos.GC2CS_BeginMatch.Types.EMode.T2P2:
                mode2 = (2 << 4) | 2;
                break;

            default:
                Logger.Warn($"not support mode:{mode}");
                return(false);
            }
            this._matchingSystems.TryGetValue(mode2, out MatchSystem3 matchingSystem);
            MatchUser matchUser = matchingSystem?.CreateUser(user.gcNID, user.rank);

            if (matchUser == null)
            {
                return(false);
            }

            this._userToMatchUser[user] = matchUser;
            return(true);
        }