少年修仙传客户端代码仓库
lcy
2024-11-15 6fe048548441e5b02f34585b5c53948cc2e355e7
10271 优化仙盟徽章面板
4个文件已修改
146 ■■■■■ 已修改文件
Core/GameEngine/Model/Config/FamilyEmblemConfig.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyEmblem/FairyEmblemItem.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyEmblem/FairyEmblemModel.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyEmblem/FairyEmblemWin.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/FamilyEmblemConfig.cs
@@ -1,6 +1,6 @@
//--------------------------------------------------------
//    [Author]:           Fish
//    [  Date ]:           2024年11月6日
//    [  Date ]:           2024年11月14日
//--------------------------------------------------------
using System.Collections.Generic;
@@ -14,12 +14,14 @@
{
    public readonly int EmblemID;
    public readonly string Name;
    public readonly int UnlockFamilyLV;
    public readonly int ExpireMinutes;
    public readonly int CustomFamilyID;
    public readonly string Image;
    public readonly int SortNum;
    public readonly int EffectID;
    public readonly int SortNum;
    public readonly string Descriptive;
    public FamilyEmblemConfig()
    {
@@ -33,17 +35,21 @@
            int.TryParse(tables[0],out EmblemID); 
            int.TryParse(tables[1],out UnlockFamilyLV);
            Name = tables[1];
            int.TryParse(tables[2],out ExpireMinutes);
            int.TryParse(tables[2],out UnlockFamilyLV);
            int.TryParse(tables[3],out CustomFamilyID);
            int.TryParse(tables[3],out ExpireMinutes);
            Image = tables[4];
            int.TryParse(tables[4],out CustomFamilyID);
            int.TryParse(tables[5],out SortNum);
            Image = tables[5];
            int.TryParse(tables[6],out EffectID); 
            int.TryParse(tables[7],out SortNum);
            Descriptive = tables[8];
        }
        catch (Exception ex)
        {
System/FairyEmblem/FairyEmblemItem.cs
@@ -7,9 +7,7 @@
        [SerializeField] ImageEx imgEmblem;
        [SerializeField] ImageEx imgState;
        [SerializeField] ImageEx imgChoose;
        [SerializeField] TextEx txtTime;
        [SerializeField] TextEx txtState;
        [SerializeField] TextEx txtUnlockConditions;
        [SerializeField] ButtonEx btnUse;
        [SerializeField] ButtonEx btnChoose;
        [SerializeField] UIEffect uiEffect;
@@ -27,10 +25,8 @@
            bool isUsing = model.IsUsing(emblemId);
            bool isLimitTime = model.IsLimitTime(emblemId, out var familyAction);
            txtTime.SetActive(isUnLock && isLimitTime);
            btnUse.SetActive(isUnLock && !isUsing && model.IsCaptain());
            imgChoose.SetActive(emblemId == model.nowChooseEmblemId);
            txtUnlockConditions.SetActive(!isUnLock);
            imgState.SetActive(!isUnLock || isUsing);
            uiEffect.Stop();
@@ -40,11 +36,9 @@
                uiEffect.Play();
            }
            txtUnlockConditions.text = model.GetUnlockConditionString(emblemId);
            txtState.text = isUsing ? Language.Get("TreasureSkillWin__20") : Language.Get("KnapS144");
            txtState.colorType = isUsing ? TextColType.Green : TextColType.Red;
            txtTime.text = GetEndTimeString(emblemId);
            model.ShowEmblem(emblemId, imgEmblem);
            model.ShowEmblem(emblemId, imgEmblem, 0.8f);
            btnChoose.SetListener(OnChooseClick);
            btnUse.SetListener(OnUseClick);
        }
@@ -62,32 +56,6 @@
        private void OnChooseClick()
        {
            model.nowChooseEmblemId = emblemId;
        }
        public string GetEndTimeString(int emblemID)
        {
            FairyEmblemUnlockMethodType type = model.GetFairyEmblemUnlockType(emblemId);
            switch (type)
            {
                case FairyEmblemUnlockMethodType.LV:
                    return Language.Get("FairyEmblem04", Language.Get("PhantasmPavilion03"));
                case FairyEmblemUnlockMethodType.Custom:
                case FairyEmblemUnlockMethodType.Active:
                    bool isLimitTime = model.IsLimitTime(emblemID, out var familyAction);
                    if (!isLimitTime)
                    {
                        return Language.Get("FairyEmblem04", Language.Get("PhantasmPavilion03"));
                    }
                    else
                    {
                        uint endTimeS = familyAction.Value2;
                        int subTime = (int)(familyAction.Value2 - TimeUtility.AllSeconds);
                        return Language.Get("FairyEmblem04", TimeUtility.SecondsToDHMSCHS(subTime));
                    }
                default:
                    return string.Empty;
            }
        }
    }
}
System/FairyEmblem/FairyEmblemModel.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using UnityEngine;
namespace vnxbqy.UI
{
@@ -11,7 +12,7 @@
        Active,     // 2 - 活动获得
    }
    public class FairyEmblemModel : Model
    public class FairyEmblemModel : Model, IBeforePlayerDataInitialize
    {
        public readonly int MaxItemRowCount = 6;    // 一行展示x个徽章
        public readonly int FamilyActionsType = 15;     // 家族行为类型15
@@ -46,6 +47,11 @@
        {
        }
        public void OnBeforePlayerDataInitialize()
        {
            familyActions.Clear();
        }
        public bool TryGetNowEmblemID(out int nowID)
        {
            nowID = 0;
@@ -58,7 +64,7 @@
        }
        // 展示指定徽章 表中找不到徽章就显示默认的
        public void ShowEmblem(int emblemID, ImageEx imgTitle)
        public void ShowEmblem(int emblemID, ImageEx imgTitle, float scale = 1.0f)
        {
            int nowEmblemID = emblemID;
            if (!FamilyEmblemConfig.Has(nowEmblemID))
@@ -71,6 +77,13 @@
            {
                if (frame == null)
                    frame = imgTitle.gameObject.AddComponent<UIFrame>();
                List<UnityEngine.Sprite> spriteList = UIFrameMgr.Inst.GetDynamicImage(config.Image);
                if (!spriteList.IsNullOrEmpty())
                {
                    imgTitle.rectTransform.sizeDelta = new Vector2(spriteList[0].rect.width, spriteList[0].rect.height);
                }
                imgTitle.raycastTarget = false;
                frame.ResetFrame(config.Image);
                frame.enabled = true;
@@ -80,7 +93,9 @@
                if (frame != null)
                    frame.enabled = false;
                imgTitle.SetSprite(config.Image);
                imgTitle.SetNativeSize();
            }
            imgTitle.rectTransform.localScale = new Vector3(scale, scale, scale);
        }
        //发包 查询玩家当前仙盟徽章
@@ -248,20 +263,6 @@
                return false;
            familyAction = info;
            return true;
        }
        // 得到徽章获取途径字符串
        public string GetUnlockConditionString(int emblemID)
        {
            FamilyEmblemConfig config = FamilyEmblemConfig.Get(emblemID);
            FairyEmblemUnlockMethodType type = GetFairyEmblemUnlockType(emblemID);
            if (type == FairyEmblemUnlockMethodType.Custom)
                return Language.Get(StringUtility.Contact("FairyEmblemUnlockByCustom", config.CustomFamilyID));
            if (type == FairyEmblemUnlockMethodType.LV)
                return Language.Get("FairyEmblemUnlockByLv", config.UnlockFamilyLV);
            if (type == FairyEmblemUnlockMethodType.Active)
                return Language.Get(StringUtility.Contact("FairyEmblemUnlockByActive", emblemID));
            return string.Empty;
        }
        public bool TryGetEffectID(int emblemId, out int effectID)
System/FairyEmblem/FairyEmblemWin.cs
@@ -7,6 +7,9 @@
    public class FairyEmblemWin : Window
    {
        [SerializeField] ImageEx imgEmblemNow;
        [SerializeField] RichText txtDescriptive;
        [SerializeField] TextEx txtTime;
        [SerializeField] TextEx txtName;
        [SerializeField] UIEffect uiEffect;
        [SerializeField] ScrollerController scroller;
        FairyEmblemModel model { get { return ModelCenter.Instance.GetModel<FairyEmblemModel>(); } }
@@ -46,6 +49,7 @@
        private void OnSecondEvent()
        {
            scroller.m_Scorller.RefreshActiveCellViews();
            Display();
        }
        private void OnUpdateFamilyActionEvent(int arg1, int arg2)
@@ -101,8 +105,17 @@
        private void Display()
        {
            int emblemId = model.nowChooseEmblemId;
            if (!FamilyEmblemConfig.Has(emblemId))
                return;
            FamilyEmblemConfig config = FamilyEmblemConfig.Get(emblemId);
            txtName.text = config.Name;
            txtDescriptive.text = config.Descriptive;
            txtTime.text = GetEndTimeString(emblemId);
            model.ShowEmblem(model.nowChooseEmblemId, imgEmblemNow);
            imgEmblemNow.SetNativeSize();
            uiEffect.Stop();
            if (model.TryGetEffectID(model.nowChooseEmblemId, out int effectID))
@@ -111,5 +124,49 @@
                uiEffect.Play();
            }
        }
        private string GetEndTimeString(int emblemId)
        {
            bool isUnLock = model.IsUnLock(emblemId);
            if (isUnLock)
            {
                FairyEmblemUnlockMethodType type = model.GetFairyEmblemUnlockType(emblemId);
                switch (type)
                {
                    case FairyEmblemUnlockMethodType.LV:
                        return Language.Get("FairyEmblem03", Language.Get("PhantasmPavilion03"));
                    case FairyEmblemUnlockMethodType.Custom:
                    case FairyEmblemUnlockMethodType.Active:
                        bool isLimitTime = model.IsLimitTime(emblemId, out var familyAction);
                        if (!isLimitTime)
                        {
                            return Language.Get("FairyEmblem03", Language.Get("PhantasmPavilion03"));
                        }
                        else
                        {
                            uint endTimeS = familyAction.Value2;
                            int subTime = (int)(familyAction.Value2 - TimeUtility.AllSeconds);
                            return Language.Get("FairyEmblem03", TimeUtility.SecondsToDHMSCHS(subTime));
                        }
                    default:
                        return string.Empty;
                }
            }
            else
            {
                if (!FamilyEmblemConfig.Has(emblemId))
                    return string.Empty;
                int expireMinutes = FamilyEmblemConfig.Get(emblemId).ExpireMinutes;
                if (expireMinutes <= 0)
                {
                    return Language.Get("FairyEmblem03", Language.Get("PhantasmPavilion03"));
                }
                else
                {
                    return Language.Get("FairyEmblem03", TimeUtility.SecondsToDHMSCHS(expireMinutes * 60));
                }
            }
        }
    }
}