少年修仙传客户端代码仓库
client_linchunjie
2018-08-27 6ad015bd0514a0db40e5b9015ce47565e158a5cd
Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
1个文件已修改
238 ■■■■ 已修改文件
System/Strengthening/GodBeastAttributes.cs 238 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Strengthening/GodBeastAttributes.cs
@@ -9,18 +9,29 @@
using System;
using TableConfig;
//神兽强化(神兽属性展示)
namespace Snxxz.UI {
namespace Snxxz.UI
{
    public class GodBeastAttributes:MonoBehaviour {
    public class GodBeastAttributes : MonoBehaviour
    {
        [SerializeField] ItemCell m_ItemCell;
        [SerializeField] GameObject m_FrameNull;
        [SerializeField] GameObject m_FullLevel;
        [SerializeField] GameObject m_BottomDisplay;
        [SerializeField] Text m_LvNowText;
        [SerializeField] Text m_LvNextText;
        [SerializeField] IntensifySmoothSlider m_ExpSlider;
        [SerializeField] Text m_ExpNum;
        [SerializeField] Text m_TextAttributes;
        [SerializeField] Text m_TextAttributesAdd;
        [SerializeField] Text m_TextAttributes1;
        [SerializeField] Text m_TextAttributesAdd1;
        [SerializeField] Text m_TextAttributes2;
        [SerializeField] Text m_TextAttributesAdd2;
        [SerializeField] GodBeastSlidingList m_GodBeastSlidingList;
        [SerializeField] Toggle m_DoubleToggle;
        [SerializeField] Button m_StrengthenBtn;
        DogzModel Dogz_model;
        DogzModel dogz_model { get { return Dogz_model ?? (Dogz_model = ModelCenter.Instance.GetModel<DogzModel>()); } }
        private Dictionary<int, int> QualityLimit = new Dictionary<int, int>();
@@ -28,21 +39,30 @@
        PlayerPackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); } }
        ItemTipsModel _itemTipsModel;
        ItemTipsModel itemTipsModel { get { return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>()); } }
        private int GodBeastNumber=0;//神兽编号
        private int GodBeastNumber = 0;//神兽编号
        private int GodBeastPart = 0;//神兽装备ID
        private int DogZLv = 0;//获取神兽等级
        private int DogZExp = 0;//熟练度
        private ItemModel m_DogZItemModel = null;
        private int SingleProficiency = 0;//单倍熟练度
        private int DoubleProficiency = 0;//双倍熟练度
        private int NeedFairyJade = 0;//所需仙玉
        private  void Start()
        private void Start()
        {
            m_DoubleToggle.onValueChanged.AddListener(OnClickToggle);
            m_StrengthenBtn.AddListener(OnClickStrengthBtn);
        }
        private void OnEnable()
        {
            if (m_DoubleToggle.isOn)
            {
                m_DoubleToggle.isOn = false;
            }
            GodBeastReinforcementWin.ChooseToModify += ChooseToModify;
            GodBeastSlidingList.AbsorbEvent += AbsorbEvent;
        }
        }
        private void OnDisable()
        {
            GodBeastReinforcementWin.ChooseToModify -= ChooseToModify;
@@ -63,12 +83,21 @@
        }
        private void OnClickToggle(bool Isbool)
        {
            AttributeAssignment();
        }
        private void OnClickStrengthBtn()
        {
        }
        private void ChooseToModify(int locationMarker)
        {
            GetGodBeastLocationMarker(locationMarker);
        }
        private void AbsorbEvent(Dictionary<int, int> absorb)
        {
            GetDogZLevelAndExp();
            AttributeAssignment();
        }
        public void GetGodBeastLocationMarker(int LocationMarker)//获取神兽装备的标记信息
@@ -89,7 +118,7 @@
                            m_ItemCell.Init(ItemModel);
                            m_ItemCell.cellBtn.RemoveAllListeners();
                            int type = i;
                            m_ItemCell.cellBtn.AddListener(()=>
                            m_ItemCell.cellBtn.AddListener(() =>
                            {
                                itemTipsModel.SetItemTipsModel(PackType.rptDogzEquip, itemModel[type].itemInfo.ItemGUID);
                            });
@@ -98,6 +127,7 @@
                }
                m_FrameNull.SetActive(true);
                m_FullLevel.SetActive(false);
                GetDogZLevelAndExp();
                AttributeAssignment();
            }
            else
@@ -115,8 +145,137 @@
        public void AttributeAssignment()
        {
            if (m_DogZItemModel == null)
            {
                return;
            }
            GainProficiency();//获取熟练度
            var IudetDogzEquipPlus = m_DogZItemModel.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus);
            if (IudetDogzEquipPlus != null)
            {
                int lv = QualityLimit[m_DogZItemModel.chinItemModel.ItemColor];
                var DogzEquipConfig = DogzEquipPlusConfig.GetEquipplaceAndLevel(GodBeastPart, lv);
                if (DogZLv >= lv)
                {
                    m_FrameNull.SetActive(false);
                    m_FullLevel.SetActive(true);
                    m_ExpSlider.stage = lv;
                    m_ExpSlider.delay = 0f;
                    m_ExpSlider.ResetStage();
                    m_ExpSlider.value = 1;
                    m_ExpNum.text = DogzEquipConfig.upExpTotal + "/" + DogzEquipConfig.upExpTotal;
                }
                else
                {
                    if (m_DoubleToggle.isOn)
                    {
                        PropertySetting(DogZExp, DoubleProficiency);
                    }
                    else
                    {
                        PropertySetting(DogZExp, SingleProficiency);
                    }
                }
            }
            else
            {
                if (m_DoubleToggle.isOn)
                {
                    PropertySetting(0, DoubleProficiency);
                }
                else
                {
                    PropertySetting(0, SingleProficiency);
                }
            }
        }
        private void GainProficiency()//选中装备的获取熟练度
        {
            SingleProficiency = 0;
            DoubleProficiency = 0;
            NeedFairyJade = 0;
            Dictionary<int, int> DicAb = m_GodBeastSlidingList.Absorption_Dic;
            foreach (var key in DicAb.Keys)
            {
                ItemModel itemModel = playerPack.GetItemModelByIndex(PackType.rptDogzItem, key);
                if (itemModel != null)
                {
                    if (itemModel.chinItemModel.Effect1 == 235)
                    {
                        var IudetDogzEquipPlus = itemModel.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus);
                        SingleProficiency += itemModel.chinItemModel.EffectValueA1 * DicAb[key];
                        if (IudetDogzEquipPlus != null)
                        {
                            SingleProficiency += IudetDogzEquipPlus[1];
                            DoubleProficiency += itemModel.chinItemModel.EffectValueA1;
                        }
                        else
                        {
                            DoubleProficiency += itemModel.chinItemModel.EffectValueA1 * 2 * DicAb[key];
                            NeedFairyJade += itemModel.chinItemModel.Effect2 * DicAb[key];
                        }
                    }
                }
            }
        }
        private void PropertySetting(int ExpTotalNow, int ToExpTotal)//属性设置
        {
            m_FrameNull.gameObject.SetActive(true);
            m_FullLevel.SetActive(false);
            int toLv = ToLv(ToExpTotal);
            m_LvNowText.text = "+"+DogZLv.ToString();
            if (DogZLv == toLv)
            {
                m_LvNextText.text = "+"+(toLv + 1).ToString();
            }
            else
            {
                m_LvNextText.text = "+"+toLv.ToString();
            }
            var DogzEquipConfig = DogzEquipPlusConfig.GetEquipplaceAndLevel(GodBeastPart, DogZLv);
            if (ToExpTotal == 0)
            {
                m_ExpNum.text = DogZExp + "/" + DogzEquipConfig.upExpTotal;
            }
            else
            {
                m_ExpNum.text = DogZExp + "+" + ToExpTotal + "/" + DogzEquipConfig.upExpTotal;
            }
        }
        private int ToLv(int ToExpTotal)//获取等到达的熟练度等级
        {
            int DogzLv = 0;
            if (m_DogZItemModel == null)
            {
                return DogzLv;
            }
            int lv = QualityLimit[m_DogZItemModel.chinItemModel.ItemColor];
            for (int i = lv; i >=0; i--)
            {
                var DogzEquipConfig = DogzEquipPlusConfig.GetEquipplaceAndLevel(GodBeastPart, i);
                if (ToExpTotal < DogzEquipConfig.upExpTotal)
                {
                    DogzLv = DogzEquipConfig.level;
                }
            }
            var DogzEquipMaxConfig = DogzEquipPlusConfig.GetEquipplaceAndLevel(GodBeastPart, lv);
            if (ToExpTotal >= DogzEquipMaxConfig.upExpTotal)
            {
                DogzLv = DogzEquipMaxConfig.level;
            }
            return DogzLv;
        }
        private void GetDogZLevelAndExp()//获取当前所选选择神兽的等级和熟练度
        {
            DogZLv = 0;
            DogZExp = 0;
            m_DogZItemModel = null;
            List<ItemModel> itemModel = dogz_model.GetDogzEquips(GodBeastNumber);
            ItemModel ItemModel=null;
            ItemModel ItemModel = null;
            if (itemModel != null)
            {
                for (int i = 0; i < itemModel.Count; i++)
@@ -131,67 +290,14 @@
            {
                return;
            }
            GainProficiency();//获取熟练度
            m_DogZItemModel = ItemModel;
            var IudetDogzEquipPlus = ItemModel.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus);
            if (IudetDogzEquipPlus != null)
            {
                int lv = QualityLimit[ItemModel.chinItemModel.ItemColor];
                var DogzEquipConfig = DogzEquipPlusConfig.GetEquipplaceAndLevel(GodBeastPart, lv);
                if (IudetDogzEquipPlus[0] >= lv)
                {
                    m_FrameNull.SetActive(false);
                    m_FullLevel.SetActive(true);
                    m_ExpSlider.stage = lv;
                    m_ExpSlider.delay = 0f;
                    m_ExpSlider.ResetStage();
                    m_ExpSlider.value = 1;
                    m_ExpNum.text = DogzEquipConfig.upExpTotal + "/" + DogzEquipConfig.upExpTotal;
                }
                else
                {
                }
            }
            else
            {
                var DogzEquipConfig = DogzEquipPlusConfig.GetEquipplaceAndLevel(GodBeastPart,0);
                m_ExpNum.text =  "0/" + DogzEquipConfig.upExpTotal;
                DogZLv = IudetDogzEquipPlus[0];
                DogZExp = IudetDogzEquipPlus[1];
            }
        }
        private void  GainProficiency()//获取熟练度
        {
            SingleProficiency = 0;
            DoubleProficiency = 0;
            NeedFairyJade = 0;
            Dictionary<int,int> DicAb=m_GodBeastSlidingList.Absorption_Dic;
            foreach (var key in DicAb.Keys)
            {
                ItemModel itemModel = playerPack.GetItemModelByIndex(PackType.rptDogzItem, key);
                if (itemModel != null)
                {
                    if (itemModel.chinItemModel.Effect1 == 235)
                    {
                        var IudetDogzEquipPlus = itemModel.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus);
                        SingleProficiency += itemModel.chinItemModel.EffectValueA1* DicAb[key];
                        if (IudetDogzEquipPlus != null)
                        {
                            SingleProficiency += IudetDogzEquipPlus[1];
                            DoubleProficiency += itemModel.chinItemModel.EffectValueA1;
                        }
                        else
                        {
                            DoubleProficiency += itemModel.chinItemModel.EffectValueA1 * 2* DicAb[key];
                            NeedFairyJade += itemModel.chinItemModel.Effect2* DicAb[key];
                        }
                    }
                }
            }
        }
    }
}