private void AddJoinData(int channel, CoupleArenaJoinData joinData)
 {
     if (joinData != null)
     {
         this.GetJoinDataList(channel).Add(joinData);
     }
 }
示例#2
0
        public CoupleArenaJoinData Create()
        {
            CoupleArenaJoinData joinData = new CoupleArenaJoinData();

            joinData.JoinSeq  = this.CurrJoinSeq;
            this.CurrJoinSeq += 1U;
            return(joinData);
        }
示例#3
0
 private void AddJoinData(int channel, CoupleArenaJoinData joinData)
 {
     if (joinData == null)
     {
         return;
     }
     GetJoinDataList(channel).Add(joinData);
 }
示例#4
0
        public CoupleArenaJoinData Create()
        {
            CoupleArenaJoinData joinData = new CoupleArenaJoinData();

            joinData.JoinSeq = CurrJoinSeq;
            CurrJoinSeq++;
            return(joinData);
        }
示例#5
0
 public void AddJoinData(CoupleArenaJoinData joinData)
 {
     if (joinData != null)
     {
         this.JoinDataDict.Add(joinData.JoinSeq, joinData);
         this.RoleJoinSeqDict[joinData.RoleId1] = joinData.JoinSeq;
         this.RoleJoinSeqDict[joinData.RoleId2] = joinData.JoinSeq;
     }
 }
示例#6
0
 public void DelJoinData(CoupleArenaJoinData joinData)
 {
     if (joinData != null)
     {
         if (this.JoinDataDict.Remove(joinData.JoinSeq))
         {
             this.RoleJoinSeqDict.Remove(joinData.RoleId1);
             this.RoleJoinSeqDict.Remove(joinData.RoleId2);
         }
     }
 }
示例#7
0
        /// <summary>
        /// 跨服竞技匹配
        /// </summary>
        /// <param name="req"></param>
        /// <returns></returns>
        public int CoupleArenaJoin(int roleId1, int roleId2, int serverId)
        {
            lock (Mutex)
            {
                // 此处严格的判断夫妻是否有效
                if (!IsValidCoupleIfExist(roleId1, roleId2))
                {
                    return(StdErrorCode.Error_Server_Internal_Error);
                }

                if (JoinDataUtil.GetJoinData(roleId1) != null || JoinDataUtil.GetJoinData(roleId2) != null)
                {
                    return(StdErrorCode.Error_Operation_Denied);
                }

                CoupleArenaJoinData joinData = JoinDataUtil.Create();
                joinData.ServerId  = serverId;
                joinData.RoleId1   = roleId1;
                joinData.RoleId2   = roleId2;
                joinData.StartTime = TimeUtil.NowDateTime();

                CoupleArenaCoupleDataK coupleData1;
                if (SyncData.RoleDict.TryGetValue(roleId1, out coupleData1))
                {
                    joinData.DuanWeiLevel = coupleData1.DuanWeiLevel;
                    joinData.DuanWeiType  = coupleData1.DuanWeiType;
                }
                else
                {
                    // 夫妻二人首次参加
                    joinData.DuanWeiLevel = _DuanWeiCfgList[0].DuanWeiLevel;
                    joinData.DuanWeiType  = _DuanWeiCfgList[0].DuanWeiType;
                }

                JoinDataUtil.AddJoinData(joinData);

                return(StdErrorCode.Error_Success);
            }
        }
示例#8
0
        public int CoupleArenaJoin(int roleId1, int roleId2, int serverId)
        {
            int result;

            lock (this.Mutex)
            {
                if (!this.IsValidCoupleIfExist(roleId1, roleId2))
                {
                    result = -11003;
                }
                else if (this.JoinDataUtil.GetJoinData(roleId1) != null || this.JoinDataUtil.GetJoinData(roleId2) != null)
                {
                    result = -12;
                }
                else
                {
                    CoupleArenaJoinData joinData = this.JoinDataUtil.Create();
                    joinData.ServerId  = serverId;
                    joinData.RoleId1   = roleId1;
                    joinData.RoleId2   = roleId2;
                    joinData.StartTime = TimeUtil.NowDateTime();
                    CoupleArenaCoupleDataK coupleData;
                    if (this.SyncData.RoleDict.TryGetValue(roleId1, out coupleData))
                    {
                        joinData.DuanWeiLevel = coupleData.DuanWeiLevel;
                        joinData.DuanWeiType  = coupleData.DuanWeiType;
                    }
                    else
                    {
                        joinData.DuanWeiLevel = this._DuanWeiCfgList[0].DuanWeiLevel;
                        joinData.DuanWeiType  = this._DuanWeiCfgList[0].DuanWeiType;
                    }
                    this.JoinDataUtil.AddJoinData(joinData);
                    result = 1;
                }
            }
            return(result);
        }
示例#9
0
 public void AddGlobalJoinData(CoupleArenaJoinData joinData)
 {
     AddJoinData(GlobalChannel, joinData);
 }
示例#10
0
 public void AddJoinData(int duanweiType, int duanWeiLevel, CoupleArenaJoinData joinData)
 {
     AddJoinData(MakeChannel(duanweiType, duanWeiLevel), joinData);
 }
 public void AddGlobalJoinData(CoupleArenaJoinData joinData)
 {
     this.AddJoinData(this.GlobalChannel, joinData);
 }
示例#12
0
 private void CheckRoleMatch(DateTime now)
 {
     lock (this.Mutex)
     {
         List <CoupleArenaJoinData> joinDatas = this.JoinDataUtil.GetJoinList();
         if (joinDatas != null && joinDatas.Count > 0)
         {
             CoupleArenaJoinMatcher joinMatcher = new CoupleArenaJoinMatcher();
             foreach (CoupleArenaJoinData joinData in joinDatas)
             {
                 if ((now - joinData.StartTime).TotalSeconds >= 60.0 || joinData.ToKfServerId > 0)
                 {
                     this.JoinDataUtil.DelJoinData(joinData);
                 }
                 else if ((now - joinData.StartTime).TotalSeconds >= 30.0)
                 {
                     joinMatcher.AddGlobalJoinData(joinData);
                 }
                 else
                 {
                     joinMatcher.AddJoinData(joinData.DuanWeiType, joinData.DuanWeiLevel, joinData);
                 }
             }
             foreach (List <CoupleArenaJoinData> list in joinMatcher.GetAllMatch())
             {
                 int i = 0;
                 while (i < list.Count - 1)
                 {
                     CoupleArenaJoinData one = list[i];
                     CoupleArenaJoinData two = list[i + 1];
                     if (this.MatchTimeLimiter.GetMatchTimes(one.RoleId1, one.RoleId2, two.RoleId1, two.RoleId2) >= TianTiPersistence.Instance.MaxRolePairFightCount)
                     {
                         i++;
                     }
                     else
                     {
                         CoupleArenaFuBenData fubenData = new CoupleArenaFuBenData();
                         fubenData.GameId    = this.Persistence.GetNextGameId();
                         fubenData.StartTime = now;
                         fubenData.RoleList  = new List <KuaFuFuBenRoleData>();
                         fubenData.RoleList.Add(new KuaFuFuBenRoleData
                         {
                             ServerId = one.ServerId,
                             RoleId   = one.RoleId1,
                             Side     = 1
                         });
                         fubenData.RoleList.Add(new KuaFuFuBenRoleData
                         {
                             ServerId = one.ServerId,
                             RoleId   = one.RoleId2,
                             Side     = 1
                         });
                         fubenData.RoleList.Add(new KuaFuFuBenRoleData
                         {
                             ServerId = two.ServerId,
                             RoleId   = two.RoleId1,
                             Side     = 2
                         });
                         fubenData.RoleList.Add(new KuaFuFuBenRoleData
                         {
                             ServerId = two.ServerId,
                             RoleId   = two.RoleId2,
                             Side     = 2
                         });
                         if (!ClientAgentManager.Instance().AssginKfFuben(this.GameType, fubenData.GameId, 4, out fubenData.KfServerId))
                         {
                             LogManager.WriteLog(LogTypes.Error, "CoupleArena 没有跨服可以分配", null, true);
                             return;
                         }
                         this.MatchTimeLimiter.AddMatchTimes(one.RoleId1, one.RoleId2, two.RoleId1, two.RoleId2, 1);
                         this.GameFuBenDict[fubenData.GameId] = fubenData;
                         i += 2;
                         one.ToKfServerId = fubenData.KfServerId;
                         two.ToKfServerId = fubenData.KfServerId;
                         CoupleArenaCanEnterData enterData = new CoupleArenaCanEnterData
                         {
                             GameId     = fubenData.GameId,
                             KfServerId = fubenData.KfServerId,
                             RoleId1    = one.RoleId1,
                             RoleId2    = one.RoleId2
                         };
                         ClientAgentManager.Instance().PostAsyncEvent(one.ServerId, this.EvItemGameType, new AsyncDataItem(KuaFuEventTypes.CoupleArenaCanEnter, new object[]
                         {
                             enterData
                         }));
                         CoupleArenaCanEnterData enterData2 = new CoupleArenaCanEnterData
                         {
                             GameId     = fubenData.GameId,
                             KfServerId = fubenData.KfServerId,
                             RoleId1    = two.RoleId1,
                             RoleId2    = two.RoleId2
                         };
                         AsyncDataItem evItem2 = new AsyncDataItem(KuaFuEventTypes.CoupleArenaCanEnter, new object[]
                         {
                             fubenData.GameId,
                             fubenData.KfServerId,
                             two.RoleId1,
                             two.RoleId2
                         });
                         ClientAgentManager.Instance().PostAsyncEvent(two.ServerId, this.EvItemGameType, new AsyncDataItem(KuaFuEventTypes.CoupleArenaCanEnter, new object[]
                         {
                             enterData2
                         }));
                     }
                 }
             }
         }
     }
 }