//获得某个类型的排队 public QueueLogic GetMatching(QueueRecord tbQueue) { QueueLogic matching; if (!QueueManager.Matchings.TryGetValue(tbQueue.Id, out matching)) { switch ((eQueueType)tbQueue.AppType) { case eQueueType.Dungeon: matching = new FubenQueue(tbQueue.Id); break; case eQueueType.BattleField: matching = new FightQueue(tbQueue.Id); break; case eQueueType.ActivityDungeon: matching = new ActivityFubenQueue(tbQueue.Id); break; } QueueManager.Matchings.Add(tbQueue.Id, matching); QueueManager.RefreshMatchRelation(); } return(matching); }
public void DealWithTeamChange(ActivityFubenQueue _this, TeamChangedType type, QueueCharacter character, List <ulong> teamList, ulong characterId) { switch (type) { case TeamChangedType.Request: break; case TeamChangedType.AcceptRequest: case TeamChangedType.AcceptJoin: { var queueCharacter = QueueManager.GetMatchingCharacter(characterId); if (queueCharacter != null) { if (queueCharacter.result == null) { QueueManager.Pop(characterId, eLeaveMatchingType.TeamChange); } else { return; } } QueueManager.PushOneCharacter(characterId, character); } break; case TeamChangedType.Kick: case TeamChangedType.Leave: { //characterId离队的情况 if (character.result == null) { var characterData = character.mDatas.Find(data => data.Id == characterId); if (characterData != null) { character.mDatas.Remove(characterData); } else { Logger.Error("Can't find character data for character[{0}]", characterId); } QueueManager.Remove(characterId, eLeaveMatchingType.TeamChange); } } break; case TeamChangedType.Disband: break; } }
//通知匹配成功 public void MatchOver(ActivityFubenQueue _this) { foreach (var queueCharacter in _this.mCharacters) { var result = new QueueResult(_this); result.PushOneCharacter(queueCharacter); result.StartTrigger(); } #if DEBUG PlayerLog.WriteLog((int)LogType.QueueMessage, "MatchOver mCharacters.Clear()"); #endif _this.mCharacters.Clear(); }
public void StartTrigger(ActivityFubenQueue _this) { if (_this.mTrigger != null) { Logger.Error("StartTrigger! mTrigger != null"); return; } var fubenId = _this.tbQueue.Param; var tbFuben = Table.GetFuben(fubenId); if (tbFuben == null) { Logger.Error("StartTrigger! tbFuben == null"); return; } var time = Utils.GetNextDungeonOpenTime(tbFuben); _this.mTrigger = TeamServerControl.tm.CreateTrigger(time, _this.MatchOver); }
public void Construct(ActivityFubenQueue _this, int queueId) { }