少年修仙传客户端代码仓库
Client_PangDeRong
2018-08-18 a3a2c47c6a49ac41ab289e3e6dafb8cc83871739
[1885]处理神兽数据
5个文件已修改
195 ■■■■ 已修改文件
System/Dogz/DogzActiveWin.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dogz/DogzCell.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dogz/DogzData.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dogz/DogzModel.cs 173 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dogz/DogzPackWin.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dogz/DogzActiveWin.cs
@@ -106,7 +106,7 @@
            UpdateDogzBtn();
            var _dogzEquips = model.GetDogzEquips(model.presentSelectDogz);
            m_TakeOffEquipBtn.gameObject.SetActive(_dogzEquips != null && _dogzEquips.Count == 5);
            m_TakeOffEquipBtn.gameObject.SetActive(_dogzEquips != null && _dogzEquips.Count > 0);
        }
        private void UpdateDogzSkill()
        {
@@ -137,13 +137,13 @@
            m_DogzHeadIcon.SetNativeSize();
            for (int i = 0; i < m_DogzEquips.Count; i++)
            {
                DogzEquipData _data;
                ItemModel _data;
                bool _equiped = model.TryGetDogzEquip(model.presentSelectDogz, i, out _data);
                m_DogzUnEquipBtns[i].gameObject.SetActive(!_equiped);
                m_DogzEquips[i].gameObject.SetActive(_equiped);
                if (_equiped)
                {
                    m_DogzEquips[i].Display(_data.ItemId);
                    m_DogzEquips[i].Display(_data.itemId);
                }
            }
        }
@@ -166,12 +166,12 @@
        private void UpdateDogzAssistCnt()
        {
            m_Controller.m_Scorller.RefreshActiveCellViews();
            m_DogzAssistCnt.text = StringUtility.Contact(model.dogzAssists.Count, "/", model.DogzAssistDefaultCnt);
            m_DogzAssistCnt.text = StringUtility.Contact(model.GetAssistDogzCount(), "/", model.DogzAssistDefaultCnt);
            UpdateDogzBtn();
        }
        private void UpdateDogzBtn()
        {
            m_CallBackBtnTxt.text = model.dogzAssists.Contains(model.presentSelectDogz) ? "召回" : "助战";
            m_CallBackBtnTxt.text = model.TryGetAssistDogzState(model.presentSelectDogz) ? "召回" : "助战";
        }
        private void AddAssist()
System/Dogz/DogzCell.cs
@@ -33,7 +33,7 @@
            m_DogzName.text = _dogzCfg.Name;
            //m_DogzGrade.text = StringUtility.Contact("评分:", 100);
            m_DogzBtn.image.color = model.presentSelectDogz == _dogzCfg.ID ? Color.blue : Color.white;
            m_DogzAssist.gameObject.SetActive(model.dogzAssists.Contains(_dogzCfg.ID));
            m_DogzAssist.gameObject.SetActive(model.TryGetAssistDogzState(_dogzCfg.ID));
            m_DogzBtn.onClick.RemoveAllListeners();
            m_DogzBtn.onClick.AddListener(() =>
            {
System/Dogz/DogzData.cs
@@ -9,11 +9,11 @@
    public Dictionary<int, int> basePropertyDict;
    public Dictionary<int, int> specialPropertyDict;
    public DogzEquipData(int _itemId)
    public DogzEquipData(int _itemId,int _index,int _strengthLv)
    {
        Index = 0;
        Index = _index;
        ItemId = _itemId;
        StrengthenLv = 0;
        StrengthenLv = _strengthLv;
        basePropertyDict = null;
        specialPropertyDict = null;
        var config = ConfigManager.Instance.GetTemplate<ItemConfig>(_itemId);
System/Dogz/DogzModel.cs
@@ -6,12 +6,33 @@
using UnityEngine;
namespace Snxxz.UI
{
    public class DogzModel : Model
    public class DogzModel : Model,IBeforePlayerDataInitialize,IAfterPlayerDataInitialize,IPlayerLoginOk
    {
        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        public override void Init()
        {
            ParseConfig();
        }
        public void OnBeforePlayerDataInitialize()
        {
            addAssistCnt = 0;
            dogzAssistStateDict.Clear();
        }
        public void OnAfterPlayerDataInitialize()
        {
        }
        public void OnPlayerLoginOk()
        {
            SetDogzEquipInfo();
            playerPack.RefreshItemCountAct -= RefreshDogzEquipInfo;
            playerPack.RefreshItemCountAct += RefreshDogzEquipInfo;
        }
        public override void UnInit()
        {
@@ -43,7 +64,6 @@
            AddAssistItem = int.Parse(_funcCfg.Numerical2);
            AddAssistItemCnt = ConfigParse.GetMultipleStr<int>(_funcCfg.Numerical3);
            m_DogzEquipStrenLimit = ConfigParse.GetDic<int, int>(_funcCfg.Numerical4);
            dogzAssists = new List<int>();
        }
        /// <summary>
@@ -127,26 +147,127 @@
        }
        #region 协议
        public List<int> dogzAssists { get; private set; } //当前助战神兽列表
        public event Action UpdateAssistDogzEvent;
        public void UpdateAssistDogz()
        public int addAssistCnt { get; private set; } //额外购买的助战数
        public void SetServerAddAssistDogzCnt(HA3C0_tagMCDogzInfo info)
        {
            dogzAssists.Clear();
            addAssistCnt = info.BuyHelpbattleCount;
            DogzAssistDefaultCnt += addAssistCnt;
        }
        public event Action UpdateAssistDogzEvent;
        Dictionary<int, int> dogzAssistStateDict = new Dictionary<int, int>(); //神兽助战
        public void SetServerAssistDogzState(HA3C1_tagMCDogzHelpbattleState info)
        {
            if(!dogzAssistStateDict.ContainsKey(info.DogzID))
            {
                dogzAssistStateDict.Add(info.DogzID,info.BatteState);
            }
            else
            {
                dogzAssistStateDict[info.DogzID] = info.BatteState;
            }
            if (UpdateAssistDogzEvent != null)
            {
                UpdateAssistDogzEvent();
            }
        }
        public int GetAssistDogzCount()
        {
            int assistCnt = 0;
            foreach(var key in dogzAssistStateDict.Keys)
            {
                if(key == 1)
                {
                    assistCnt += 1;
                }
            }
            return assistCnt;
        }
        public bool TryGetAssistDogzState(int dogzId)
        {
            int state = 0;
            dogzAssistStateDict.TryGetValue(dogzId,out state);
            return state == 0 ? false : true;
        }
        public void SetDogzEquipInfo()
        {
            m_DogzEquipDict.Clear();
            SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptDogzEquip);
            if (singlePack == null) return;
            Dictionary<int, ItemModel> pairs = singlePack.GetPackModelIndexDict();
            foreach(var index in pairs.Keys)
            {
                ItemModel itemModel = pairs[index];
                int dogzId = GetDogzIDByIndex(index);
                if (!m_DogzEquipDict.ContainsKey(dogzId))
                {
                    List<ItemModel> equipDatas = new List<ItemModel>();
                    equipDatas.Add(itemModel);
                    m_DogzEquipDict.Add(dogzId, equipDatas);
                }
                else
                {
                    m_DogzEquipDict[dogzId].Add(itemModel);
                }
            }
        }
        private void RefreshDogzEquipInfo(PackType type, int index, int id)
        {
            if (type != PackType.rptDogzEquip) return;
            ItemModel itemModel = playerPack.GetItemModelByIndex(type, index);
            int dogzId = GetDogzIDByIndex(index);
            if (itemModel != null)
            {
                for (int i = 0; i < m_DogzEquipDict[dogzId].Count; i++)
                {
                    if (m_DogzEquipDict[dogzId][i].itemInfo.ItemPlace == index)
                    {
                        m_DogzEquipDict[dogzId][i] = itemModel;
                        return;
                    }
                }
            }
            else
            {
                for (int i = 0; i < m_DogzEquipDict[dogzId].Count; i++)
                {
                    if (m_DogzEquipDict[dogzId][i].itemInfo.ItemPlace == index)
                    {
                        m_DogzEquipDict[dogzId].RemoveAt(i);
                        return;
                    }
                }
            }
        }
        /// <summary>
        /// 获得神兽穿戴的装备数据
        /// </summary>
        private Dictionary<int, List<DogzEquipData>> m_DogzEquipDict = new Dictionary<int, List<DogzEquipData>>();
        public List<DogzEquipData> GetDogzEquips(int _dogzId)
        private Dictionary<int, List<ItemModel>> m_DogzEquipDict = new Dictionary<int, List<ItemModel>>();
        public List<ItemModel> GetDogzEquips(int _dogzId)
        {
            List<DogzEquipData> _list = null;
            List<ItemModel> _list = null;
            m_DogzEquipDict.TryGetValue(_dogzId,out _list);
            return _list;
        }
        public int GetDogzEquipPlaceByIndex(int index)
        {
            return (index % 5) + 101;
        }
        public int GetDogzIDByIndex(int index)
        {
            return (index / 5) + 1;
        }
        /// <summary>
@@ -156,25 +277,27 @@
        /// <param name="_index"></param>
        /// <param name="_equipData"></param>
        /// <returns></returns>
        public bool TryGetDogzEquip(int _dogzId, int _index, out DogzEquipData _equipData)
        public bool TryGetDogzEquip(int _dogzId, int _index, out ItemModel _equipData)
        {
            _equipData = default(DogzEquipData);
            List<DogzEquipData> _list = GetDogzEquips(_dogzId);
            _equipData = null;
            List<ItemModel> _list = GetDogzEquips(_dogzId);
            if (_list == null)
            {
                return false;
            }
            var index = _list.FindIndex((x) =>
            for(int i = 0; i < _list.Count; i++)
            {
                return x.Index == _index;
            });
            if (index != -1)
            {
                _equipData = _list[index];
                return true;
                int index = (int)(_list[i].itemInfo.ItemPlace % 5);
                if(index == _index)
                {
                    _equipData = _list[i];
                    return true;
                }
            }
            return false;
        }
        #endregion
        #region 装备详细信息
@@ -184,12 +307,12 @@
        public void ViewDetail(int _itemId, bool compare = false)
        {
            viewDetailData = new DogzEquipData(_itemId);
            viewDetailCompare = compare;
            if (!WindowCenter.Instance.CheckOpen<DogzDetailsWin>())
            {
                WindowCenter.Instance.Open<DogzDetailsWin>();
            }
            //viewDetailData = new DogzEquipData(_itemId);
            //viewDetailCompare = compare;
            //if (!WindowCenter.Instance.CheckOpen<DogzDetailsWin>())
            //{
            //    WindowCenter.Instance.Open<DogzDetailsWin>();
            //}
        }
        public int DogzEquipScore(DogzEquipData data)
System/Dogz/DogzPackWin.cs
@@ -84,13 +84,13 @@
            m_DogzHeadIcon.SetNativeSize();
            for (int i = 0; i < m_DogzEquips.Count; i++)
            {
                DogzEquipData _data;
                ItemModel _data;
                bool _equiped = dogzModel.TryGetDogzEquip(dogzModel.presentSelectDogz, i, out _data);
                m_DogzUnEquipBtns[i].gameObject.SetActive(!_equiped);
                m_DogzEquips[i].gameObject.SetActive(_equiped);
                if (_equiped)
                {
                    //m_DogzEquips[i].Refresh(_data);
                    m_DogzEquips[i].Display(_data.itemId);
                }
                else
                {