少年修仙传客户端代码仓库
Client_PangDeRong
2019-01-03 e7f2e54a208c350a9ec27d01feb6014e44479910
5530  子 【开发】【1.4.100】高级守护合成 / 【前端】【1.4.100】高级守护合成
4个文件已修改
4个文件已添加
430 ■■■■■ 已修改文件
System/Compose/New/ComposeEquipWin.cs 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Compose/New/ComposeSelectItemCell.cs 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Compose/New/ComposeSelectItemCell.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Compose/New/ComposeWinModel.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Compose/New/GuardComposeConfirmWin.cs 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Compose/New/GuardComposeConfirmWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Compose/New/SelectEquipModel.cs 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Compose/New/SelectItemWin.cs 30 ●●●● 补丁 | 查看 | 原始文档 | 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()