| System/Dungeon/TrialDungeonModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Dungeon/TrialExchangeBehaviour.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Dungeon/TrialExchangeCell.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Dungeon/TrialExchangeWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
System/Dungeon/TrialDungeonModel.cs
@@ -10,6 +10,7 @@ { Dictionary<int, List<TrialExchangeConfig>> trialTokenExchangeDict = new Dictionary<int, List<TrialExchangeConfig>>(); Dictionary<int, int> lineToTokenClassDict; public Dictionary<int, List<int>> trialClassTokens = new Dictionary<int, List<int>>(); public List<int> trialTokens = new List<int>(); PlayerPackModel packModel { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } } DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } } @@ -54,6 +55,16 @@ if (!trialTokens.Contains(configs[i].tokenId)) { trialTokens.Add(configs[i].tokenId); List<int> _tokens; if (!trialClassTokens.TryGetValue(itemConfig.LV, out _tokens)) { _tokens = new List<int>(); trialClassTokens.Add(itemConfig.LV, _tokens); } if (!_tokens.Contains(configs[i].tokenId)) { _tokens.Add(configs[i].tokenId); } } } var funcConfig = ConfigManager.Instance.GetTemplate<FuncConfigConfig>("LineToItemStage"); @@ -67,6 +78,10 @@ private void RefreshItemCountAct(PackType packType, int arg2, int itemId) { if (packType == PackType.rptItem && trialTokens.Contains(itemId)) { UpdateRedpoint(); } else if (packType == PackType.rptEquip) { UpdateRedpoint(); } @@ -144,9 +159,14 @@ { NewBieCenter.Instance.RemoveNewBieGuide(TRIALEXCHANGE_GUIDE); } CA32F_tagCMTrialExchange pak = new CA32F_tagCMTrialExchange(); pak.ID = (uint)_id; GameNetSystem.Instance.SendInfo(pak); var tokenConfig = ConfigManager.Instance.GetTemplate<ItemConfig>(config.tokenId); ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("TokenUseConfirm", config.tokenCount, tokenConfig.ItemName, config.description), (bool isOk) => { CA32F_tagCMTrialExchange pak = new CA32F_tagCMTrialExchange(); pak.ID = (uint)_id; GameNetSystem.Instance.SendInfo(pak); }); return true; } @@ -182,6 +202,44 @@ SysNotifyMgr.Instance.ShowTip("TrialExchangeLimit"); } public int EquipCompare(int _itemId) { var config = ConfigManager.Instance.GetTemplate<ItemConfig>(_itemId); var equipPlace = config.EquipPlace; if (equipPlace == 0) { return 0; } var singlepack = packModel.GetSinglePackModel(PackType.rptEquip); if (singlepack == null) { return 1; } var equipItem = singlepack.GetItemModelByIndex(equipPlace); if (equipItem == null) { return 1; } var compareConfig = ConfigManager.Instance.GetTemplate<ItemConfig>(equipItem.itemId); if (compareConfig == null) { return 1; } if (compareConfig.ItemColor != config.ItemColor) { return compareConfig.ItemColor > config.ItemColor ? -1 : 1; } if (compareConfig.StarLevel != config.StarLevel) { return compareConfig.StarLevel > config.StarLevel ? -1 : 1; } if (compareConfig.LV != config.LV) { return compareConfig.LV > config.LV ? -1 : 1; } return 0; } #region 红点 void UpdateRedpoint() { @@ -199,22 +257,77 @@ public bool TryGetSatisfyExchange(out int maxClass) { var configs = ConfigManager.Instance.GetAllValues<TrialExchangeConfig>(); maxClass = 0; for (int i = 0; i < configs.Count; i++) foreach (var _class in trialTokenExchangeDict.Keys) { var count = GetTrialTokenCount(configs[i].tokenId); if (count >= configs[i].tokenCount) List<TrialExchangeConfig> list; if (TryGetTrialExchanges(_class, out list)) { var itemConfig = ConfigManager.Instance.GetTemplate<ItemConfig>(configs[i].tokenId); if (itemConfig.LV > maxClass) for (int i = 0; i < list.Count; i++) { maxClass = itemConfig.LV; if (SatisfyExchangeBetter(list[i].id)) { var itemConfig = ConfigManager.Instance.GetTemplate<ItemConfig>(list[i].tokenId); if (itemConfig.LV > maxClass) { maxClass = itemConfig.LV; } break; } } } } return maxClass != 0; } public bool SatisfyExchangeBetter(int _id) { var config = ConfigManager.Instance.GetTemplate<TrialExchangeConfig>(_id); if (config == null) { return false; } var count = GetTrialTokenCount(config.tokenId); if (count < config.tokenCount) { return false; } var exchangeItemConfig = ConfigManager.Instance.GetTemplate<ItemConfig>(config.exchangeItemID); if (exchangeItemConfig.EquipPlace == 0) { return true; } if (EquipCompare(config.exchangeItemID) == 1) { return true; } return false; } public bool IsAnySatisfyExchangeBetterEquip(int _class, out int _id) { _id = -1; List<TrialExchangeConfig> list; if (TryGetTrialExchanges(_class, out list)) { for (int i = 0; i < list.Count; i++) { var itemConfig = ConfigManager.Instance.GetTemplate<ItemConfig>(list[i].exchangeItemID); if (SatisfyExchangeBetter(list[i].id) && itemConfig.EquipPlace != 0) { _id = list[i].id; return true; } } } return false; } public bool IsAnySatisfyExchangeBetter() { int _class = 0; return TryGetSatisfyExchange(out _class); } #endregion } } System/Dungeon/TrialExchangeBehaviour.cs
@@ -14,8 +14,12 @@ [SerializeField] ItemBehaviour m_Token; [SerializeField] Button m_Exchange; [SerializeField] Image m_Redpoint; [SerializeField] Image m_Up; [SerializeField] Image m_Down; TrialDungeonModel model { get { return ModelCenter.Instance.GetModel<TrialDungeonModel>(); } } DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } } PlayerPackModel packModel { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } } int trialExchangeId = 0; private void Awake() @@ -38,12 +42,11 @@ ModelCenter.Instance.GetModel<GetItemPathModel>().SetChinItemModel(config.tokenId); } } model.ProcessTrialError(error); } } } public void Display(int id) public void Display(int id, bool equipBetter = true) { trialExchangeId = id; var config = ConfigManager.Instance.GetTemplate<TrialExchangeConfig>(id); @@ -58,16 +61,19 @@ m_Item.Init(cellModel); m_Item.cellBtn.AddListener(() => { ItemAttrData itemAttrData = new ItemAttrData(config.exchangeItemID, true, (ulong)config.exchangeItemCount, -1, config.exchangeItemIsBind); ItemAttrData itemAttrData = new ItemAttrData(config.exchangeItemID, true, (ulong)config.exchangeItemCount, -1, config.exchangeItemIsBind, true); ModelCenter.Instance.GetModel<ItemTipsModel>().SetItemTipsModel(itemAttrData); }); m_Description.text = config.description; m_Token.SetItem(config.tokenId, config.tokenCount); var count = model.GetTrialTokenCount(config.tokenId); m_Token.count.color = UIHelper.GetUIColor(count >= config.tokenCount ? TextColType.Green : TextColType.Red, true); m_Token.count.color = UIHelper.GetUIColor(count >= config.tokenCount ? TextColType.Green : TextColType.NavyBrown, true); var equipCompare = model.EquipCompare(config.exchangeItemID); m_Up.gameObject.SetActive(equipCompare == 1); m_Down.gameObject.SetActive(equipCompare == -1); m_Redpoint.gameObject.SetActive(count >= config.tokenCount && dailyQuestModel.trialExchangeRedpoint.state == RedPointState.Simple); var exchangeItemConfig = ConfigManager.Instance.GetTemplate<ItemConfig>(config.exchangeItemID); m_Redpoint.gameObject.SetActive(count >= config.tokenCount && (equipBetter || exchangeItemConfig.EquipPlace == 0)); } } } System/Dungeon/TrialExchangeCell.cs
@@ -17,13 +17,15 @@ { return; } int _betterEquipId = -1; model.IsAnySatisfyExchangeBetterEquip(_class, out _betterEquipId); for (int i = 0; i < m_TrialExchanges.Length; i++) { var index = _line * 4 + i; if (index < list.Count) { m_TrialExchanges[i].gameObject.SetActive(true); m_TrialExchanges[i].Display(list[index].id); m_TrialExchanges[i].Display(list[index].id, _betterEquipId == list[index].id); } else { System/Dungeon/TrialExchangeWin.cs
@@ -18,6 +18,8 @@ [SerializeField] Text m_SelectClass; [SerializeField] Button m_SelectClassUp; [SerializeField] TrialSelectClassBehaviour m_SelectClassBehaviour; [SerializeField] ItemBehaviour[] m_Tokens; [SerializeField] Text[] m_TokenCounts; [SerializeField] Button m_Close; TrialDungeonModel model { get { return ModelCenter.Instance.GetModel<TrialDungeonModel>(); } } @@ -128,6 +130,7 @@ { DisplayTrialExchanges(); DisplaySelectClass(); DisplayTokens(); } void DisplayTrialExchanges() @@ -170,6 +173,11 @@ if (packtype == PackType.rptItem && model.trialTokens.Contains(itemId)) { m_Controller.m_Scorller.RefreshActiveCellViews(); DisplayTokens(); } else if (packtype == PackType.rptEquip) { m_Controller.m_Scorller.RefreshActiveCellViews(); } } @@ -179,10 +187,32 @@ Language.Get("EquipSuitLV", Language.Get(StringUtility.Contact("Num_CHS_", model.selectEquipClass))); } void DisplayTokens() { var list = model.trialClassTokens.ContainsKey(model.selectEquipClass) ? model.trialClassTokens[model.selectEquipClass] : null; for (int i = 0; i < m_Tokens.Length; i++) { if (list != null && i < list.Count) { m_Tokens[i].gameObject.SetActive(model.selectEquipClass != 1); if (model.selectEquipClass != 1) { m_Tokens[i].SetItem(list[i], 0); m_TokenCounts[i].text = model.GetTrialTokenCount(list[i]).ToString(); } } else { m_Tokens[i].gameObject.SetActive(false); } } } private void SelectEquipClassEvent() { DisplayTrialExchanges(); DisplaySelectClass(); DisplayTokens(); bool _up = m_SelectClassBehaviour.gameObject.activeSelf; m_SelectClassUp.transform.localEulerAngles = Vector3.zero.SetZ(_up ? 0 : 180); }