少年修仙传客户端代码仓库
4435 子 【开发】【1.2.0】功能预告界面修改,新增可领取奖励 / 【前端】【1.2.0】功能预告界面修改,新增可领取奖励
4个文件已修改
213 ■■■■■ 已修改文件
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA302_tagMCFuncOpenStateList.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HA3_Function/HA302_tagMCFuncOpenStateList.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/FeatureNoticeModel.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/FeaturesType3.cs 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA302_tagMCFuncOpenStateList.cs
@@ -10,12 +10,14 @@
public class DTCA302_tagMCFuncOpenStateList : DtcBasic
{
    public override void Done(GameNetPackBasic vNetPack)
    {
    {
        FeatureNoticeModel featureNoticeModel = ModelCenter.Instance.GetModel<FeatureNoticeModel>();
        base.Done(vNetPack);
        var package = vNetPack as HA302_tagMCFuncOpenStateList;
        FuncOpen.Instance.UpdateFuncState(package);
        featureNoticeModel.OpenFuncAwardState(package);
    }
}
Core/NetworkPackage/ServerPack/HA3_Function/HA302_tagMCFuncOpenStateList.cs
@@ -5,7 +5,7 @@
public class HA302_tagMCFuncOpenStateList : GameNetPackBasic {
    public byte FuncCount;    // 功能个数
    public  tagMCFuncOpenState[] FuncStateList = null;    // 功能状态列表
    public  tagMCFuncOpenState[] FuncStateList;    // 功能状态列表
    public HA302_tagMCFuncOpenStateList () {
        _cmd = (ushort)0xA302;
@@ -18,12 +18,14 @@
            FuncStateList[i] = new tagMCFuncOpenState();
            TransBytes (out FuncStateList[i].FuncID, vBytes, NetDataType.BYTE);
            TransBytes (out FuncStateList[i].State, vBytes, NetDataType.BYTE);
            TransBytes (out FuncStateList[i].AwardState, vBytes, NetDataType.BYTE);
        }
    }
    public struct tagMCFuncOpenState {
        public byte FuncID;        // 功能ID
        public byte State;        // 是否开启
        public byte AwardState;        // 是否已领奖励
    }
}
System/MainInterfacePanel/FeatureNoticeModel.cs
@@ -15,6 +15,8 @@
{
    public List<FunctionForecastConfig> FunctionList = new List<FunctionForecastConfig>();
    public Dictionary<int, ImpactRankModel.RankAwardItem> DicAwardItem = new Dictionary<int, ImpactRankModel.RankAwardItem>();//奖励物品
    public  Dictionary<int, OpenFuncState> DicOpenFuncState = new Dictionary<int, OpenFuncState>();
    public event Action UpdateAwarfItem;
    private const int Redpoint_key1 = 38;
    public Redpoint redPointStre1 = new Redpoint(Redpoint_key1);
    private int OpenFuncId = 0;
@@ -117,7 +119,7 @@
                    var _jsonData = LitJson.JsonMapper.ToObject(functionForecastConfig.Award);
                    foreach (string _key in _jsonData.Keys)
                    {
                        var _job = int.Parse(key);
                        var _job = int.Parse(_key);
                        var _itemArray = LitJson.JsonMapper.ToObject<int[][]>(_jsonData[_key].ToJson());
                        for (int j = 0; j < _itemArray.Length; j++)
                        {
@@ -334,7 +336,37 @@
        }     
        return lv;
    }
    public class OpenFuncState
    {
        public int State;
        public int AwardState;
    }
    public void OpenFuncAwardState(HA302_tagMCFuncOpenStateList info)
    {
        for (int i = 0; i < info.FuncCount; i++)
        {
            int FuncID = info.FuncStateList[i].FuncID;
            if (!DicOpenFuncState.ContainsKey(FuncID))
            {
                OpenFuncState openFuncState = new OpenFuncState();
                openFuncState.State = info.FuncStateList[i].State;
                openFuncState.AwardState = info.FuncStateList[i].State;
                DicOpenFuncState.Add(FuncID, openFuncState);
            }
            else
            {
                DicOpenFuncState[FuncID].State= info.FuncStateList[i].State;
                DicOpenFuncState[FuncID].AwardState = info.FuncStateList[i].State;
            }
        }
        if (UpdateAwarfItem != null)
        {
            UpdateAwarfItem();
        }
    }
}
System/MainInterfacePanel/FeaturesType3.cs
@@ -6,18 +6,36 @@
using System.Collections;
using UnityEngine.UI;
using TableConfig;
namespace Snxxz.UI {
using System.Collections.Generic;
namespace Snxxz.UI
{
    //功能预告第三部
    public class FeaturesType3:MonoBehaviour {
    public class FeaturesType3 : MonoBehaviour
    {
        [SerializeField] ImageEx m_Image_Selected;//底板
        [SerializeField] ImageEx m_Img_Circle;//Icon框
        [SerializeField] ImageEx m_FeaturesTypeIcon;//Icon
        [SerializeField] Text m_FunctionName;//功能名
        [SerializeField] Text m_FunctionalLevel;//功能等级
        [SerializeField] Text m_Content;//内容
        FeatureNoticeModel featureNoticeModel { get { return ModelCenter.Instance.GetModel<FeatureNoticeModel>(); } }
        [SerializeField] GameObject m_Award;
        [SerializeField] ImageEx m_ItemBG1;
        [SerializeField] ImageEx m_Icon1;
        [SerializeField] Button m_IconBtn1;
        [SerializeField] Text m_Number1;
        [SerializeField] ImageEx m_Lock1;
        [SerializeField] ImageEx m_ItemBG2;
        [SerializeField] ImageEx m_Icon2;
        [SerializeField] Button m_IconBtn2;
        [SerializeField] Text m_Number2;
        [SerializeField] ImageEx m_Lock2;
        FeatureNoticeModel featureNoticeModel { get { return ModelCenter.Instance.GetModel<FeatureNoticeModel>(); } }
        ItemTipsModel _itemTipsModel;
        ItemTipsModel itemTipsModel { get { return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>()); } }
        public void GetTheFeatureID(int funcId)
        {
            var functionForecastConfig = Config.Instance.Get<FunctionForecastConfig>(funcId);
@@ -38,13 +56,29 @@
            {
                m_FunctionName.text = "?";
                m_FeaturesTypeIcon.SetSprite("UnKnowIcon");
                m_Content.text= string.Format(Language.Get("YGFuncLevel"), NeedLv, PlayerDatas.Instance.baseData.LV, NeedLv);
                m_Award.SetActive(false);
                m_Content.gameObject.SetActive(true);
                m_Content.text = string.Format(Language.Get("YGFuncLevel"), NeedLv, PlayerDatas.Instance.baseData.LV, NeedLv);
            }
            else
            {
                m_FunctionName.text = functionForecastConfig.FuncName;
                m_FeaturesTypeIcon.SetSprite(functionForecastConfig.FuncIconKey);
                m_Content.text = functionForecastConfig.Content;
                if (featureNoticeModel.DicAwardItem.ContainsKey(funcId))
                {
                    m_Award.SetActive(true);
                    m_Content.gameObject.SetActive(false);
                    SetRankAwardItem(funcId);
                    //-------------------
                }
                else
                {
                    m_Award.SetActive(false);
                    m_Content.gameObject.SetActive(true);
                    m_Content.text = functionForecastConfig.Content;
                }
            }
            if (PlayerDatas.Instance.baseData.LV >= functionForecastConfig.DisplayLevel)
            {
@@ -67,6 +101,127 @@
                m_FeaturesTypeIcon.gray = true;
            }
        }
        private void SetRankAwardItem(int funcID)
        {
            ImpactRankModel.RankAwardItem rankAward = featureNoticeModel.DicAwardItem[funcID];
            List<AwardItem> List = rankAward.GetAwardItem(PlayerDatas.Instance.baseData.Job);
            if (List.Count <= 1)
            {
                m_ItemBG1.gameObject.SetActive(true);
                m_ItemBG2.gameObject.SetActive(false);
                SetItem1(List, funcID);
            }
            else
            {
                m_ItemBG1.gameObject.SetActive(true);
                m_ItemBG2.gameObject.SetActive(true);
                SetItem1(List, funcID);
                SetItem2(List, funcID);
            }
        }
        private void SetItem1(List<AwardItem> List,int funcID)
        {
            var itemConfig = Config.Instance.Get<ItemConfig>(List[0].item.id);
            UIHelper.SetItemBackGround(m_ItemBG1, itemConfig.ItemColor);
            m_Icon1.SetSprite(itemConfig.IconKey);
            m_IconBtn1.SetListener(() =>
            {
                if (featureNoticeModel.DicOpenFuncState.ContainsKey(funcID) && featureNoticeModel.DicOpenFuncState[funcID].State == 1 &&
                featureNoticeModel.DicOpenFuncState[funcID].AwardState == 0)
                {
                    DebugEx.LogError("可以领取");
                }
                else
                {
                    ItemAttrData attrData = new ItemAttrData(List[0].item.id, false, (ulong)List[0].item.count, -1, List[0].isBind);
                    itemTipsModel.SetItemTipsModel(attrData);
                    DebugEx.LogError("弹框");
                }
            });
            if (List[0].item.count > 1)
            {
                m_Number1.gameObject.SetActive(true);
                m_Number1.text = List[0].item.count.ToString();
            }
            else
            {
                m_Number1.gameObject.SetActive(false);
            }
            if (List[0].isBind==1)
            {
                m_Lock1.gameObject.SetActive(true);
            }
            else
            {
                m_Lock1.gameObject.SetActive(false);
            }
            if (FuncOpen.Instance.IsFuncOpen(funcID))
            {
                m_ItemBG1.gray = false;
                m_Icon1.gray = false;
                m_Lock1.gray = false;
            }
            else
            {
                m_ItemBG1.gray = true;
                m_Icon1.gray = true;
                m_Lock1.gray = true;
            }
        }
        private void SetItem2(List<AwardItem> List, int funcID)
        {
            var itemConfig = Config.Instance.Get<ItemConfig>(List[1].item.id);
            UIHelper.SetItemBackGround(m_ItemBG2, itemConfig.ItemColor);
            m_Icon2.SetSprite(itemConfig.IconKey);
            m_IconBtn2.SetListener(() =>
            {
                if (featureNoticeModel.DicOpenFuncState.ContainsKey(funcID) && featureNoticeModel.DicOpenFuncState[funcID].State == 1 &&
               featureNoticeModel.DicOpenFuncState[funcID].AwardState == 0)
                {
                    DebugEx.LogError("可以领取");
                }
                else
                {
                    ItemAttrData attrData = new ItemAttrData(List[1].item.id, false, (ulong)List[1].item.count, -1, List[1].isBind);
                    itemTipsModel.SetItemTipsModel(attrData);
                    DebugEx.LogError("弹框");
                }
            });
            if (List[1].item.count > 1)
            {
                m_Number2.gameObject.SetActive(true);
                m_Number2.text = List[1].item.count.ToString();
            }
            else
            {
                m_Number2.gameObject.SetActive(false);
            }
            if (List[1].isBind==1)
            {
                m_Lock2.gameObject.SetActive(true);
            }
            else
            {
                m_Lock2.gameObject.SetActive(false);
            }
            if (FuncOpen.Instance.IsFuncOpen(funcID))
            {
                m_ItemBG2.gray = false;
                m_Icon2.gray = false;
                m_Lock2.gray = false;
            }
            else
            {
                m_ItemBG2.gray = true;
                m_Icon2.gray = true;
                m_Lock2.gray = true;
            }
        }
    }
}