| System/Compose/New/ComposeEquipWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Compose/New/ComposeSelectItemCell.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Compose/New/ComposeSelectItemCell.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Compose/New/ComposeWinModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Compose/New/GuardComposeConfirmWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Compose/New/GuardComposeConfirmWin.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Compose/New/SelectEquipModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Compose/New/SelectItemWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
System/Compose/New/ComposeEquipWin.cs
@@ -106,7 +106,7 @@ protected override void OnPreOpen() { composeWinModel.UpdateSendComposeEvent += UpdateSendCompose; composeWinModel.UpdateSecondTypeEvent += UpdateSecondType; composeWinModel.UpdateThirdTypeEvent += UpdateThirdType; composeWinModel.UpdateReduceEvent += UpdateReduce; @@ -125,6 +125,7 @@ protected override void OnPreClose() { composeWinModel.UpdateSendComposeEvent -= UpdateSendCompose; composeWinModel.UpdateReduceEvent -= UpdateReduce; DTCA814_tagMCMakeItemAnswer.MakeItemAnswerEvent -= OnComposeAnswer; composeWinModel.UpdateSecondTypeEvent -= UpdateSecondType; @@ -624,6 +625,8 @@ var unfixeAddDict = selectModel.GetHaveUnfixedSelectItem(); int[] unfixedDisplays = compoundModel.unfixedItemDisplay; var fixedAndUnfixeds = compoundModel.unfixedItemCount > 3 ? five_FixedAndUnfixeds : three_FixedAndUnfixeds; List<ItemModel> unSelectItems = unfixedSelectItemDict.Values.ToList(); unSelectItems.Sort(CompareByOverdueTime); for (int i = 0; i < unfixedDisplays.Length; i++) { @@ -633,18 +636,60 @@ var matCell = fixedAndUnfixeds[unfixedDisplay - 1]; if (matCell.itemModel == null) { foreach (var index in unfixedSelectItemDict.Keys) for(int j = 0; j < unSelectItems.Count; j++) { if (!unfixeAddDict.ContainsKey(index)) ItemModel _model = unSelectItems[i]; if (!unfixeAddDict.ContainsKey(_model.itemInfo.ItemPlace)) { selectModel.AddHaveUnfixedSelectItem(index); UpdateSelect(matCell, index, SelectItemType.unfixed); selectModel.AddHaveUnfixedSelectItem(_model.itemInfo.ItemPlace); UpdateSelect(matCell, _model.itemInfo.ItemPlace, SelectItemType.unfixed); break; } } } } } } private int CompareByOverdueTime(ItemModel start,ItemModel end) { int remainTime1 = 0; int remainTime2 = 0; bool isRemain1 = TryGetRemainTime(start,out remainTime1); bool isRemain2 = TryGetRemainTime(end,out remainTime2); if (isRemain1.CompareTo(isRemain2) != 0) return -isRemain1.CompareTo(isRemain2); if (remainTime1.CompareTo(remainTime2) != 0) return -remainTime1.CompareTo(remainTime2); return 0; } private bool TryGetRemainTime(ItemModel model,out int seconds) { seconds = 0; if (model.chinItemModel.EquipPlace != (int)RoleEquipType.retSpiritAnimal || model.chinItemModel.ExpireTime <= 0) return false; ItemCDCool cool = KnapsackTimeCDMgr.Instance.GetItemCoolById(model.itemInfo.ItemGUID); bool isShow = model.chinItemModel.ExpireTime > 0; if (isShow) { List<int> itemEffectTime = model.GetUseDataModel((int)ItemUseDataKey.Def_IudetCreateTime); seconds = model.chinItemModel.ExpireTime; if (itemEffectTime != null && itemEffectTime[0] != 0 && model.itemInfo.ItemGUID != "") { seconds = cool == null ? 0 : (int)cool.GetRemainTime(); } return true; } return false; } private void UpdateSendCompose() { if (compoundModel == null) return; SetFixedItemIndexDic(); composeWinModel.SendComposeRequest(compoundModel, fixedItemIndexDict, GetPlayUIEffct(), 1, 10000, isIncreaseRate); } private void OnClickComposeBtn() @@ -658,8 +703,17 @@ return; } } SetFixedItemIndexDic(); composeWinModel.SendComposeRequest(compoundModel,fixedItemIndexDict, GetPlayUIEffct(), 1,10000,isIncreaseRate); ItemConfig itemConfig = Config.Instance.Get<ItemConfig>(compoundModel.makeID[0]); switch((RoleEquipType)itemConfig.EquipPlace) { case RoleEquipType.retSpiritAnimal: WindowCenter.Instance.Open<GuardComposeConfirmWin>(); break; default: SetFixedItemIndexDic(); composeWinModel.SendComposeRequest(compoundModel, fixedItemIndexDict, GetPlayUIEffct(), 1, 10000, isIncreaseRate); break; } } private void SetFixedItemIndexDic() System/Compose/New/ComposeSelectItemCell.cs
New file @@ -0,0 +1,115 @@ using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class ComposeSelectItemCell : MonoBehaviour { [SerializeField] Text nameText; [SerializeField] ItemCell itemCell; [SerializeField] Text remainTimeText; [SerializeField] Button selectBtn; SelectEquipModel _selectModel; SelectEquipModel selectModel { get { return _selectModel ?? (_selectModel = ModelCenter.Instance.GetModel<SelectEquipModel>()); } } ItemModel itemModel = null; private void OnEnable() { KnapsackTimeCDMgr.Instance.RefreshItemOverdueTimeAct += UpdateRemainTime; } private void OnDisable() { KnapsackTimeCDMgr.Instance.RefreshItemOverdueTimeAct -= UpdateRemainTime; } public void SetDisplay(ItemModel _itemModel) { itemModel = _itemModel; selectBtn.RemoveAllListeners(); if (itemModel == null) return; itemCell.Init(itemModel); nameText.color = UIHelper.GetUIColor(itemModel.chinItemModel.ItemColor, true); nameText.text = itemModel.chinItemModel.ItemName; selectBtn.onClick.RemoveAllListeners(); selectBtn.onClick.AddListener(() => { OnClickSelectItem(itemModel); }); UpdateRemainTime(); } private void UpdateRemainTime(string guid) { if (itemModel == null || guid != itemModel.itemInfo.ItemGUID) return; UpdateRemainTime(); } private void UpdateRemainTime() { remainTimeText.gameObject.SetActive(false); if (itemModel == null || itemModel.chinItemModel.EquipPlace != (int)RoleEquipType.retSpiritAnimal) return; ItemCDCool cool = KnapsackTimeCDMgr.Instance.GetItemCoolById(itemModel.itemInfo.ItemGUID); bool isShow = itemModel.chinItemModel.ExpireTime > 0; remainTimeText.gameObject.SetActive(isShow); if (isShow) { List<int> itemEffectTime = itemModel.GetUseDataModel((int)ItemUseDataKey.Def_IudetCreateTime); double remianTime = itemModel.chinItemModel.ExpireTime; if (itemEffectTime != null && itemEffectTime[0] != 0 && itemModel.itemInfo.ItemGUID != "") { remianTime = cool == null ? 0 : cool.GetRemainTime(); } if (remianTime > 0) { remainTimeText.text = Language.Get("Remaining_Z", SecondsToHM((int)remianTime)); } else { selectModel.UpdateSelectItems(); } } } public string SecondsToHM(int _seconds) { string timeStr = string.Empty; int hours = _seconds / 3600; int mins = _seconds % 3600 / 60; if (hours > 0) { timeStr = StringUtility.Contact(hours, Language.Get("Hour")); } if (mins > 0) { timeStr = StringUtility.Contact(timeStr,mins, Language.Get("Minute")); } return timeStr; } public void OnClickSelectItem(ItemModel itemModel) { switch (selectModel.selectItem) { case SelectItemType.unfixed: selectModel.AddHaveUnfixedSelectItem(itemModel.itemInfo.ItemPlace); break; case SelectItemType.addons: selectModel.AddHaveAddSelectItem(itemModel.itemInfo.ItemPlace); break; } selectModel.UpdateSelectItem(itemModel.itemInfo.ItemPlace); WindowCenter.Instance.CloseImmediately<SelectItemWin>(); } } } System/Compose/New/ComposeSelectItemCell.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: c89b658ca99d9cd498b10278bafa571a timeCreated: 1546484174 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/Compose/New/ComposeWinModel.cs
@@ -9,7 +9,7 @@ [XLua.LuaCallCSharp] public class ComposeWinModel : Model, IBeforePlayerDataInitialize,IPlayerLoginOk { public event Action UpdateSendComposeEvent; public event Action ResetModelEvent; SelectEquipModel _selectModel; SelectEquipModel selectModel @@ -403,6 +403,14 @@ } #endregion public void SetUpdateSendComposeEvent() { if(UpdateSendComposeEvent != null) { UpdateSendComposeEvent(); } } public bool IsComposeJobLimit(int composeId) { int playerJob = PlayerDatas.Instance.baseData.Job; System/Compose/New/GuardComposeConfirmWin.cs
New file @@ -0,0 +1,145 @@ using System; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; using TableConfig; namespace Snxxz.UI { public class GuardComposeConfirmWin : Window { [SerializeField] Button popConfirmBtn; [SerializeField] RichText popConfirmInfo; [SerializeField] Text popConfirmTitle; [SerializeField] Button closeBtn; SelectEquipModel _selectModel; SelectEquipModel selectModel { get { return _selectModel ?? (_selectModel = ModelCenter.Instance.GetModel<SelectEquipModel>()); } } ComposeWinModel _composeWinModel; ComposeWinModel composeWinModel { get { return _composeWinModel ?? (_composeWinModel = ModelCenter.Instance.GetModel<ComposeWinModel>()); } } ItemModel itemModel = null; #region Built-in protected override void BindController() { } protected override void AddListeners() { closeBtn.AddListener(CloseClick); popConfirmBtn.AddListener(ClickGuardCompose); } protected override void OnPreOpen() { KnapsackTimeCDMgr.Instance.RefreshItemOverdueTimeAct += UpdateRemainTime; SetDisplay(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { KnapsackTimeCDMgr.Instance.RefreshItemOverdueTimeAct -= UpdateRemainTime; } protected override void OnAfterClose() { } #endregion private void SetDisplay() { var unfixeAddDict = selectModel.GetHaveUnfixedSelectItem(); var modellist = unfixeAddDict.Values.ToList(); modellist.Sort(CompareByOverdueTime); itemModel = modellist.Count > 0 ? modellist[0] : null; if(itemModel != null) { UpdateRemainTime(itemModel.itemInfo.ItemGUID); } } private void UpdateRemainTime(string guid) { if (composeWinModel.CurComposeModel == null || itemModel == null) return; if (itemModel.itemInfo.ItemGUID == guid) { int remainTime = 0; bool isRemain = TryGetRemainTime(itemModel, out remainTime); if (isRemain) { ItemConfig itemConfig = Config.Instance.Get<ItemConfig>(composeWinModel.CurComposeModel.makeID[0]); popConfirmInfo.text = Language.Get("Compose111", SecondsToHM(remainTime), itemConfig.ItemName); } } } public string SecondsToHM(int _seconds) { string timeStr = string.Empty; int hours = _seconds / 3600; int mins = _seconds % 3600 / 60; if (hours > 0) { timeStr = StringUtility.Contact(hours, Language.Get("Hour")); } if (mins > 0) { timeStr = StringUtility.Contact(timeStr, mins, Language.Get("Minute")); } return timeStr; } private int CompareByOverdueTime(ItemModel start, ItemModel end) { int remainTime1 = 0; int remainTime2 = 0; bool isRemain1 = TryGetRemainTime(start, out remainTime1); bool isRemain2 = TryGetRemainTime(end, out remainTime2); if (isRemain1.CompareTo(isRemain2) != 0) return -isRemain1.CompareTo(isRemain2); if (remainTime1.CompareTo(remainTime2) != 0) return remainTime1.CompareTo(remainTime2); return 0; } private bool TryGetRemainTime(ItemModel model, out int seconds) { seconds = 0; if (model.chinItemModel.EquipPlace != (int)RoleEquipType.retSpiritAnimal || model.chinItemModel.ExpireTime <= 0) return false; ItemCDCool cool = KnapsackTimeCDMgr.Instance.GetItemCoolById(model.itemInfo.ItemGUID); bool isShow = model.chinItemModel.ExpireTime > 0; if (isShow) { List<int> itemEffectTime = model.GetUseDataModel((int)ItemUseDataKey.Def_IudetCreateTime); seconds = model.chinItemModel.ExpireTime; if (itemEffectTime != null && itemEffectTime[0] != 0 && model.itemInfo.ItemGUID != "") { seconds = cool == null ? 0 : (int)cool.GetRemainTime(); } return true; } return false; } private void ClickGuardCompose() { composeWinModel.SetUpdateSendComposeEvent(); CloseClick(); } } } System/Compose/New/GuardComposeConfirmWin.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: d28ed3c88bfa90740871bdc83017b0f2 timeCreated: 1546501468 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/Compose/New/SelectEquipModel.cs
@@ -27,7 +27,7 @@ private Dictionary<int, ItemModel> haveAddSelectItemDic = new Dictionary<int, ItemModel>();//用于存储已选择添加的道具 public SelectItemType selectItem = SelectItemType.Nomral; public event Action UpdateSelectItemsEvent; PlayerPackModel _playerPack; PlayerPackModel playerPack { @@ -65,8 +65,20 @@ _unfixedItemDict.Clear(); foreach (int key in allBagItemInfo.Keys) { ItemModel itemModel = allBagItemInfo[key]; if (!haveUnfixedSelectItemDic.ContainsKey(key)) { switch((RoleEquipType)itemModel.chinItemModel.EquipPlace) { case RoleEquipType.retSpiritAnimal: bool isOverdue = modelInterface.IsOverdue(itemModel.itemInfo.ItemGUID, itemModel.itemId, itemModel.useDataDict); if(isOverdue) { continue; } break; } int i = 0; for (i = 0; i < unfixedIds.Length; i++) { @@ -82,8 +94,6 @@ return _unfixedItemDict; } public Dictionary<int, ItemModel> GetAddItemModel() { SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptItem); @@ -97,9 +107,20 @@ for(int i= 0; i < modellist.Count; i++) { int index = modellist[i].itemInfo.ItemPlace; ItemModel itemModel = modellist[i]; int index = itemModel.itemInfo.ItemPlace; if (!haveAddSelectItemDic.ContainsKey(index)) { switch ((RoleEquipType)itemModel.chinItemModel.EquipPlace) { case RoleEquipType.retSpiritAnimal: bool isOverdue = modelInterface.IsOverdue(itemModel.itemInfo.ItemGUID, itemModel.itemId, itemModel.useDataDict); if (isOverdue) { continue; } break; } int j = 0; for (j = 0; j < _addonsTypelist.Length; j++) { @@ -240,6 +261,15 @@ } } public void UpdateSelectItems() { if (UpdateSelectItemsEvent != null) { UpdateSelectItemsEvent(); } } public void ClearSelectModel() { selectMatCell = null; System/Compose/New/SelectItemWin.cs
@@ -33,6 +33,7 @@ protected override void OnPreOpen() { selectModel.UpdateSelectItemsEvent += OnInitPanel; selectItemDict = null; OnInitPanel(); } @@ -44,7 +45,7 @@ protected override void OnPreClose() { selectModel.UpdateSelectItemsEvent -= OnInitPanel; } protected override void OnAfterClose() @@ -78,31 +79,8 @@ private void OnRefreshSelectCell(ScrollerDataType type, CellView cell) { ItemModel itemModel = selectItemDict[cell.index]; ItemCell itemCell = cell.transform.Find("ItemCell").GetComponent<ItemCell>(); Text itemName = cell.transform.Find("NameText").GetComponent<Text>(); itemCell.Init(itemModel); itemName.color = UIHelper.GetUIColor(itemModel.chinItemModel.ItemColor,true); itemName.text = itemModel.chinItemModel.ItemName; Button selectBtn = cell.GetComponent<Button>(); selectBtn.onClick.RemoveAllListeners(); selectBtn.onClick.AddListener(() => { OnClickSelectItem(itemModel); }); } public void OnClickSelectItem(ItemModel itemModel) { switch (selectModel.selectItem) { case SelectItemType.unfixed: selectModel.AddHaveUnfixedSelectItem(itemModel.itemInfo.ItemPlace); break; case SelectItemType.addons: selectModel.AddHaveAddSelectItem(itemModel.itemInfo.ItemPlace); break; } selectModel.UpdateSelectItem(itemModel.itemInfo.ItemPlace); CloseWin(); ComposeSelectItemCell itemCell = cell.GetComponent<ComposeSelectItemCell>(); itemCell.SetDisplay(itemModel); } public void CloseWin()