少年修仙传客户端代码仓库
client_Wu Xijin
2018-08-20 396aec28d436a55673011f09f7282a9fda91f84b
Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
3个文件已修改
4个文件已添加
405 ■■■■■ 已修改文件
System/BetterItemGet/RealmBetterEquipModel .cs 221 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BetterItemGet/RealmBetterEquipModel .cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/PackModelInterface.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/RealmBetterEquipBehaviour.cs 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/RealmBetterEquipBehaviour.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/InGamePushContainer.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/ModelCenter.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BetterItemGet/RealmBetterEquipModel .cs
New file
@@ -0,0 +1,221 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Saturday, January 20, 2018
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;
using TableConfig;
namespace Snxxz.UI
{
    public class RealmBetterEquipModel : Model, IBeforePlayerDataInitialize, ISwitchAccount,IPlayerLoginOk
    {
        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        PackModelInterface modelInterface { get { return ModelCenter.Instance.GetModel<PackModelInterface>(); } }
        public string currentEquipGuid { get; private set; }
        Dictionary<string, ItemModel> betterEquipModels = new Dictionary<string, ItemModel>();
        public event Action showEquipRefreshEvent;
        public const string RealmRecordKey = "RealmRecord";
        public override void Init()
        {
            playerPack.RefreshPackAct += OnPackageRefresh;
            playerPack.RefreshItemCountAct += OnPackageItemRefresh;
        }
        public override void UnInit()
        {;
            playerPack.RefreshPackAct -= OnPackageRefresh;
            playerPack.RefreshItemCountAct -= OnPackageItemRefresh;
        }
        public void OnBeforePlayerDataInitialize()
        {
            currentEquipGuid = string.Empty;
            betterEquipModels.Clear();
        }
        public void OnPlayerLoginOk()
        {
            LocalSave.SetInt(RealmRecordKey,PlayerDatas.Instance.baseData.realmLevel);
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= RefreshRealm;
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += RefreshRealm;
        }
        public void OnSwitchAccount()
        {
            currentEquipGuid = string.Empty;
        }
        private void RefreshRealm(PlayerDataRefresh type)
        {
            int realmLv = PlayerDatas.Instance.baseData.realmLevel;
            if (type != PlayerDataRefresh.OfficialRank
                || LocalSave.GetInt(RealmRecordKey) == realmLv
                || NewBieCenter.Instance.inGuiding)
            {
                return;
            }
            LocalSave.SetInt(RealmRecordKey,realmLv);
            Dictionary<int, ItemModel> pairs = modelInterface.CheckBetterEquipByRealm();
            betterEquipModels.Clear();
            currentEquipGuid = string.Empty;
            foreach (var model in pairs.Values)
            {
                betterEquipModels[model.itemInfo.ItemGUID] = model;
                currentEquipGuid = model.itemInfo.ItemGUID;
            }
            if (showEquipRefreshEvent != null)
            {
                showEquipRefreshEvent();
            }
        }
        public bool TryGetBetterEquip(string _guid, out ItemModel _equip)
        {
            return betterEquipModels.TryGetValue(_guid, out _equip);
        }
        public void ReportConfirmBetterEquip(string _guid)
        {
            betterEquipModels.Remove(_guid);
            var tempGuid = GetOneEquip();
            if (tempGuid != currentEquipGuid)
            {
                currentEquipGuid = tempGuid;
                if (showEquipRefreshEvent != null)
                {
                    showEquipRefreshEvent();
                }
            }
        }
        private void OnPackageRefresh(PackType _packType)
        {
            if (_packType != PackType.rptItem)
            {
                return;
            }
            var keys = new List<string>(betterEquipModels.Keys);
            for (int i = keys.Count - 1; i >= 0; i--)
            {
                var guid = keys[i];
                var itemModel = playerPack.GetItemModelByGUID(guid);
                if (itemModel == null || itemModel.packType != PackType.rptItem)
                {
                    betterEquipModels.Remove(guid);
                }
            }
            var tempGuid = GetOneEquip();
            if (tempGuid != currentEquipGuid)
            {
                if (!string.IsNullOrEmpty(tempGuid))
                {
                    currentEquipGuid = tempGuid;
                    if (showEquipRefreshEvent != null)
                    {
                        showEquipRefreshEvent();
                    }
                }
                else
                {
                    currentEquipGuid = tempGuid;
                    if (showEquipRefreshEvent != null)
                    {
                        showEquipRefreshEvent();
                    }
                }
            }
        }
        private void OnPackageItemRefresh(PackType _packType, int _index, int _itemId)
        {
            if (_packType == PackType.rptEquip)
            {
                //穿上装备的时候的处理
                var item = playerPack.GetItemModelByIndex(_packType, _index);
                if (item != null)
                {
                    RemoveLowGradeItemByEquipPlace(_index, item.equipScore);
                }
                OnPackageRefresh(PackType.rptItem);
            }
            else if (_packType == PackType.rptItem)
            {
                OnPackageRefresh(_packType);
            }
        }
        private string GetOneEquip()
        {
            var guid = string.Empty;
            foreach (var key in betterEquipModels.Keys)
            {
                guid = key;
                break;
            }
            return guid;
        }
        private void RemoveItemByEquipPlace(int _place)
        {
            var place = _place == 10 ? 9 : _place;
            var keys = new List<string>(betterEquipModels.Keys);
            for (int i = keys.Count - 1; i >= 0; i--)
            {
                var item = betterEquipModels[keys[i]];
                if (item != null && item.chinItemModel.EquipPlace == place)
                {
                    betterEquipModels.Remove(keys[i]);
                }
            }
        }
        private void RemoveLowGradeItemByEquipPlace(int _place, int _score)
        {
            var place = _place == 10 ? 9 : _place;
            var keys = new List<string>(betterEquipModels.Keys);
            for (int i = keys.Count - 1; i >= 0; i--)
            {
                var item = betterEquipModels[keys[i]];
                if (item != null && item.chinItemModel.EquipPlace == place && item.equipScore <= _score)
                {
                    betterEquipModels.Remove(keys[i]);
                }
            }
        }
        private bool TryGetEquipByPlace(int _place, out ItemModel _itemModel)
        {
            var place = _place == 10 ? 9 : _place;
            var keys = new List<string>(betterEquipModels.Keys);
            for (int i = keys.Count - 1; i >= 0; i--)
            {
                var item = betterEquipModels[keys[i]];
                if (item != null && item.chinItemModel.EquipPlace == place)
                {
                    _itemModel = item;
                    return true;
                }
            }
            _itemModel = null;
            return false;
        }
    }
}
System/BetterItemGet/RealmBetterEquipModel .cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 368f012abd3595c419a67d33f44153ea
timeCreated: 1534755541
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/KnapSack/Logic/PackModelInterface.cs
@@ -7,7 +7,7 @@
namespace Snxxz.UI
{
    public class PackModelInterface : Model, IBeforePlayerDataInitialize
    public class PackModelInterface : Model, IBeforePlayerDataInitialize,IPlayerLoginOk
    {
        private ItemConfig tagChinModel;
        private FuncConfigConfig _equipGSFormula;
@@ -88,6 +88,12 @@
            itemEffectCDDict.Clear();
            itemEffectTimelist.Clear();
        }
        public void OnPlayerLoginOk()
        {
        }
        public override void UnInit()
        {
@@ -736,6 +742,39 @@
                RefreshPickItemEvent(type,guid);
            }
        }
        Dictionary<int, ItemModel> RealmBetterDict = new Dictionary<int, ItemModel>();
        public Dictionary<int, ItemModel> CheckBetterEquipByRealm()
        {
            RealmBetterDict.Clear();
            SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptItem);
            if (singlePack == null) return RealmBetterDict;
            int realmLv = PlayerDatas.Instance.baseData.realmLevel;
            Dictionary<int,ItemModel> pairs = singlePack.GetPackModelIndexDict();
            foreach(var model in pairs.Values)
            {
                if(model.chinItemModel.EquipPlace > 0
                    && model.chinItemModel.EquipPlace != (int)RoleEquipType.retSpiritAnimal
                    && model.chinItemModel.RealmLimit <= realmLv
                    && !IsOverdue(model.itemInfo.ItemGUID,model.itemId,model.useDataDict)
                    && IsFightUp(model.itemId,model.equipScore) == 1)
                {
                    if(!RealmBetterDict.ContainsKey(model.EquipPlace))
                    {
                        RealmBetterDict.Add(model.EquipPlace,model);
                    }
                    else
                    {
                        if(model.equipScore > RealmBetterDict[model.EquipPlace].equipScore)
                        {
                            RealmBetterDict[model.EquipPlace] = model;
                        }
                    }
                }
            }
            return RealmBetterDict;
        }
        #endregion
        #region 解锁格子
System/KnapSack/RealmBetterEquipBehaviour.cs
New file
@@ -0,0 +1,92 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, December 05, 2017
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TableConfig;
using Snxxz.UI;
namespace Snxxz.UI
{
    public class RealmBetterEquipBehaviour : MonoBehaviour
    {
        [SerializeField] RectTransform m_ContainerBetterEquip;
        [SerializeField] ItemCell m_EquipBehaviour;
        [SerializeField] Text m_EquipName;
        [SerializeField] Button m_Close;
        [SerializeField] Button m_Puton;
        [SerializeField] Button m_BetterEquipDetail;
        ItemTipsModel itemTipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        RealmBetterEquipModel model { get { return ModelCenter.Instance.GetModel<RealmBetterEquipModel>(); } }
        private void OnEnable()
        {
            m_Close.AddListener(CloseBetterEquip);
            m_Puton.AddListener(PutOnBetterEquip);
            m_BetterEquipDetail.AddListener(ShowBetterEquipDetails);
        }
        private void OnDisable()
        {
            m_Close.RemoveAllListeners();
            m_Puton.RemoveAllListeners();
            m_BetterEquipDetail.RemoveAllListeners();
        }
        public void ShowBetterEquip()
        {
            m_ContainerBetterEquip.gameObject.SetActive(false);
            if (!string.IsNullOrEmpty(model.currentEquipGuid))
            {
                ItemModel betterEquip;
                if (model.TryGetBetterEquip(model.currentEquipGuid, out betterEquip))
                {
                    DrawBetterEquip(betterEquip);
                    m_ContainerBetterEquip.gameObject.SetActive(true);
                }
            }
        }
        private void PutOnBetterEquip()
        {
            PackSendQuestMgr.Instance.SendPutOnQuest(ItemWinBtnType.putOn, model.currentEquipGuid);
            model.ReportConfirmBetterEquip(model.currentEquipGuid);
        }
        private void ShowBetterEquipDetails()
        {
            ItemModel betterEquip;
            if (model.TryGetBetterEquip(model.currentEquipGuid, out betterEquip))
            {
                var itemConfig = ConfigManager.Instance.GetTemplate<ItemConfig>(betterEquip.itemInfo.ItemID);
                itemTipsModel.SetItemTipsModel(PackType.rptItem, betterEquip.itemInfo.ItemGUID);
            }
        }
        private void CloseBetterEquip()
        {
            model.ReportConfirmBetterEquip(model.currentEquipGuid);
        }
        private void DrawBetterEquip(ItemModel betterModel)
        {
            var itemConfig = ConfigManager.Instance.GetTemplate<ItemConfig>(betterModel.itemInfo.ItemID);
            m_EquipName.text = itemConfig.ItemName;
            m_EquipName.color = UIHelper.GetUIColor(itemConfig.ItemColor, true);
            m_EquipBehaviour.Init(betterModel, true);
        }
    }
}
System/KnapSack/RealmBetterEquipBehaviour.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: c8eb21cc504d5514b950ab4d60ef9814
timeCreated: 1534753740
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/MainInterfacePanel/InGamePushContainer.cs
@@ -14,6 +14,7 @@
    public class InGamePushContainer : MonoBehaviour
    {
        [SerializeField] BetterItemGetBehaviour m_BetterEquipPusher;
        [SerializeField] RealmBetterEquipBehaviour m_RealmBetterEquipPusher;
        [SerializeField] PreciousItemGetBehaviour m_PreciousItemPusher;
        [SerializeField] FindPreciousBossRebornBehaviour m_BossRebornPusher;
        [SerializeField] ItemUseBehaviour m_itemUsePusher;
@@ -26,6 +27,7 @@
        FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
        BetterEquipGetModel betterEquipGetModel { get { return ModelCenter.Instance.GetModel<BetterEquipGetModel>(); } }
        RealmBetterEquipModel realmEquipModel { get { return ModelCenter.Instance.GetModel<RealmBetterEquipModel>(); } }
        PreciousItemGetModel preciousItemGetModel { get { return ModelCenter.Instance.GetModel<PreciousItemGetModel>(); } }
        ItemUseModel itemUseModel { get { return ModelCenter.Instance.GetModel<ItemUseModel>(); } }
        ItemOverdueModel itemOverdue { get { return ModelCenter.Instance.GetModel<ItemOverdueModel>(); } }
@@ -38,6 +40,7 @@
        public void Init()
        {
            CheckBetterEquip();
            CheckRealmBetterEquip();
            CheckPreciousItem();
            CheckBossReborn();
            CheckItemUse();
@@ -49,6 +52,7 @@
            FirstChargeTrialShow();
            playerPack.RefreshDecomAttrAct += CheckEquipDecompose;
            betterEquipGetModel.showEquipRefreshEvent += CheckBetterEquip;
            realmEquipModel.showEquipRefreshEvent += CheckRealmBetterEquip;
            preciousItemGetModel.showItemRefreshEvent += CheckPreciousItem;
            findPreciousModel.bossRebornNotifyChangeEvent += CheckBossReborn;
            itemUseModel.showItemRefreshEvent += CheckItemUse;
@@ -68,6 +72,28 @@
            NewBieCenter.Instance.guideBeginEvent -= OnNewBieGuideBegin;
            guardModel.onDungeonEquipGuardEvent -= CheckDungeonGuard;
            firstTimeRechargeModel.IsTipShowEvent -= FirstChargeTrialShow;
            realmEquipModel.showEquipRefreshEvent -= CheckRealmBetterEquip;
        }
        private void CheckRealmBetterEquip()
        {
            if (string.IsNullOrEmpty(realmEquipModel.currentEquipGuid))
            {
                m_RealmBetterEquipPusher.gameObject.SetActive(false);
            }
            else
            {
                if (betterEquipGetModel.ShowBetterEquipAble())
                {
                    m_RealmBetterEquipPusher.gameObject.SetActive(true);
                    m_RealmBetterEquipPusher.ShowBetterEquip();
                }
                else
                {
                    m_RealmBetterEquipPusher.gameObject.SetActive(false);
                }
            }
        }
        private void CheckBetterEquip()
System/WindowBase/ModelCenter.cs
@@ -144,6 +144,7 @@
            RegisterModel<ActivityModel>();
            RegisterModel<PlayerDeadModel>();
            RegisterModel<BetterEquipGetModel>();
            RegisterModel<RealmBetterEquipModel>();
            RegisterModel<PreciousItemGetModel>();
            RegisterModel<PlayerMainDate>();
            RegisterModel<StoryMissionsModel>();