| Core/GameEngine/Model/Config/FamilyEmblemConfig.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FairyEmblem/FairyEmblemItem.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FairyEmblem/FairyEmblemModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FairyEmblem/FairyEmblemWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | 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)); } } } } }