//开始创建副本 public static IEnumerator AskEnterDungeonByTeamCoroutine(Coroutine co, List <ulong> characters, int serverId, FubenRecord tbFuben, ulong sceneGuid) { return(mImpl.AskEnterDungeonByTeamCoroutine(co, characters, serverId, tbFuben, sceneGuid)); }
private void SetChooseCell(int index) { if (index < 0 || index >= m_DataModel.BattleCells.Count) { return; } foreach (var battleCell in m_DataModel.BattleCells) { battleCell.IsSelect = battleCell.Index == index; } var _cellData = m_DataModel.BattleCells[index]; m_DataModel.SelectCell = _cellData; var _battleId = _cellData.Id; var _tbPvpBattle = Table.GetPVPBattle(_battleId); var _playerCount = 0; var _playerData = PlayerDataManager.Instance; FubenRecord tbDungeon = null; for (var i = _tbPvpBattle.Fuben.Length - 1; i >= 0; i--) { var _dungeonId = _tbPvpBattle.Fuben[i]; if (_dungeonId != -1) { tbDungeon = Table.GetFuben(_dungeonId); if (tbDungeon == null) { continue; } if (_playerData.CheckCondition(tbDungeon.EnterConditionId) == 0 || i == 0) { m_DataModel.DungeonId = _dungeonId; var _tbFuben = Table.GetFuben(_dungeonId); if (_tbFuben != null) { var _tbQueue = Table.GetQueue(_tbFuben.QueueParam); _playerCount = _tbQueue.CountLimit; m_DataModel.SceneId = _tbFuben.SceneId; } break; } } } m_DataModel.PlayerCount = _playerCount; m_DataModel.CanAccept = PlayerDataManager.Instance.GetFlag(tbDungeon.ScriptId); m_DataModel.HasAccept = PlayerDataManager.Instance.GetFlag(tbDungeon.FlagId); RenewalQueueMsg(); RenewalStateType(); RefreshRemuneration(); }
//开始创建副本 public IEnumerator AskEnterDungeonByTeamCoroutine(Coroutine co, List <ulong> characters, int serverId, FubenRecord tbFuben, ulong sceneGuid) { PlayerLog.WriteLog((int)LogType.QueueMessage, "NotifyCreateChangeSceneCoroutine Team={0}", characters.GetDataString()); //先把进入副本应扣除的材料,扣除掉 var co1 = CoroutineFactory.NewSubroutine(DeleteDungeonMaterialCoroutine, co, characters, tbFuben); if (co1.MoveNext()) { yield return(co1); } //组队进入副本时,根据合服ID进行 var serverLogicId = SceneExtension.GetServerLogicId(serverId); var sceneInfo = new ChangeSceneInfo { SceneId = tbFuben.SceneId, ServerId = serverLogicId, SceneGuid = sceneGuid, Type = (int)eScnenChangeType.EnterDungeon }; sceneInfo.Guids.AddRange(characters); if (sceneInfo.Pos == null) { var param = new SceneParam(); sceneInfo.Pos = param; if (tbFuben.OpenTime[0] != -1) { int hour; int min; if (Utils.GetDungeonOpenTime(tbFuben, out hour, out min)) { param.Param.Add(hour); param.Param.Add(min); } else { Logger.Warn("NotifyCreateChangeSceneCoroutine can't enter scene {0}", tbFuben.SceneId); yield break; } } } var msgChgScene = TeamServer.Instance.SceneAgent.SBChangeSceneByTeam(characters[0], sceneInfo); yield return(msgChgScene.SendAndWaitUntilDone(co, TimeSpan.FromSeconds(30))); }
public void RefreshData(UIInitArguments data) { DataModel.ViewState = 0; DataModel.QueueState = 0; FubenRecord fuben = Table.GetFuben(30000); SceneRecord scene = Table.GetScene(fuben.SceneId); var _queueUpData = PlayerDataManager.Instance.PlayerDataModel.QueueUpData; if (_queueUpData.QueueId != -1 && _queueUpData.QueueId == fuben.QueueParam) { DataModel.QueueState = 1; } if (DataModel.Reward.Count <= 0) { DataModel.NeedLevel = scene.LevelLimit; for (int i = 0; i < fuben.RewardId.Count && i < fuben.RewardCount.Count; i++) { if (fuben.RewardId[i] > 0 && fuben.RewardCount[i] > 0) { ItemIdDataModel model = new ItemIdDataModel(); model.ItemId = fuben.RewardId[i]; model.Count = fuben.RewardCount[i]; DataModel.Reward.Add(model); } } } if (DataModel.TotalRewardRank == null) { DataModel.TotalRewardRank = new System.Collections.ObjectModel.ObservableCollection <GongxianJianliItem>(); for (int i = 0; ; i++) { CheckenFinalRewardRecord dcrr = Table.GetCheckenFinalReward(i + 1); if (dcrr == null) { break; } string[] rank = dcrr.Rank.Split('|'); GongxianJianliItem jiangliItem = new GongxianJianliItem(); if (rank.Length > 0) { if (int.Parse(rank[0]) <= 3) { jiangliItem.NubIcon = dcrr.RankIcon; } else { jiangliItem.Numb = string.Format("{0} - {1}", dcrr.Rank[0], dcrr.Rank[dcrr.Rank.Length - 1]); } for (int j = 0; j < dcrr.RankItemCount.Length; j++) { if (dcrr.RankItemID[j] > 0) { GongxianJianliItem.JiangliItem item = new GongxianJianliItem.JiangliItem(); item.IconId = dcrr.RankItemID[j]; ItemBaseRecord dbd = Table.GetItemBase(dcrr.RankItemID[j]); item.Icon = dbd.Icon; item.count = dcrr.RankItemCount[j].ToString(); jiangliItem.Rewards.Add(item); } } } DataModel.TotalRewardRank.Add(jiangliItem); } } }
public ChickenFightController() { CleanUp(); fuben = Table.GetFuben(30000); EventDispatcher.Instance.AddEventListener(ChickenFightChoosePageEvent.EVENT_TYPE, OnChoosePageEvent); }
//扣除进入副本需要的材料,并从characters中,剔除材料不足的玩家 private IEnumerator DeleteDungeonMaterialCoroutine(Coroutine co, List <ulong> characters, FubenRecord tbFuben) { List <ulong> removes = new List <ulong>(); foreach (var character in characters) { var removeThisOne = false; //消耗 for (int i = 0, jmax = tbFuben.NeedItemId.Length; i != jmax; ++i) { var itemId = tbFuben.NeedItemId[i]; var itemCount = tbFuben.NeedItemCount[i]; if (itemId == -1) { break; } var delItemMsg = TeamServer.Instance.LogicAgent.DeleteItem(character, itemId, itemCount, (int)eDeleteItemType.EnterFuBen); yield return(delItemMsg.SendAndWaitUntilDone(co)); if (delItemMsg.State != MessageState.Reply) { removeThisOne = true; PlayerLog.WriteLog((ulong)LogType.TeamEnterDungeonDelItems, "delItemMsg not replied! playerId = {0}, itemId = {1}, itemCount = {2}", character, itemId, itemCount); break; } if (delItemMsg.ErrorCode != (int)ErrorCodes.OK) { removeThisOne = true; PlayerLog.WriteLog((ulong)LogType.TeamEnterDungeonDelItems, "delItemMsg return with ERROR[{3}]! playerId = {0}, itemId = {1}, itemCount = {2}", character, itemId, itemCount, delItemMsg.ErrorCode); break; } } if (removeThisOne) { removes.Add(character); } } characters.RemoveAll(id => removes.Contains(id)); }