From c30c3ae263229fa694ed2322c5c811f5e559de87 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期一, 29 十二月 2025 15:05:41 +0800
Subject: [PATCH] 351 【内政】红颜系统
---
Main/System/BeautyMM/BeautyMMActiveWin.cs | 119 +++++++++++++++++++++++
Main/System/BeautyMM/BeautyMMUpgradeWin.cs.meta | 11 ++
Main/System/BeautyMM/BeautyMMActiveWin.cs.meta | 11 ++
Main/System/BeautyMM/BeautyMMManager.cs | 21 ++++
Main/System/BeautyMM/BeautyMMShowWin.cs | 13 ++
Main/System/BeautyMM/BeautyMMUpgradeWin.cs | 105 +++++++++++++++++++++
6 files changed, 277 insertions(+), 3 deletions(-)
diff --git a/Main/System/BeautyMM/BeautyMMActiveWin.cs b/Main/System/BeautyMM/BeautyMMActiveWin.cs
new file mode 100644
index 0000000..cffa2cc
--- /dev/null
+++ b/Main/System/BeautyMM/BeautyMMActiveWin.cs
@@ -0,0 +1,119 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class BeautyMMActiveWin : UIBase
+{
+
+ [SerializeField] Image qualityImg;
+ [SerializeField] Text qualityText1; // 鍝佽川鍒嗕袱瀛楁樉绀猴紝娉ㄦ剰娴峰鐗堟湰
+ [SerializeField] Text qualityText2;
+ [SerializeField] Text nameText;
+ [SerializeField] Button descBtn;
+ [SerializeField] ImageEx roleImg;
+
+ [SerializeField] Text[] talentTexts;
+
+ int mmID;
+ BeautyConfig mmConfig;
+
+ protected override void InitComponent()
+ {
+ descBtn.AddListener(() =>
+ {
+ SmallTipWin.showText = mmConfig.Desc;
+ SmallTipWin.worldPos = CameraManager.uiCamera.ScreenToWorldPoint(Input.mousePosition);
+ SmallTipWin.isDownShow = true;
+ UIManager.Instance.OpenWindow<SmallTipWin>();
+ });
+
+ }
+
+
+ protected override void OnPreOpen()
+ {
+ mmID = functionOrder;
+ Display();
+ }
+
+
+
+ void Display()
+ {
+ mmConfig = BeautyConfig.Get(mmID);
+ qualityImg.SetSprite($"mmMark{mmConfig.BeautyQuality}");
+ string qualityStr = Language.Get($"CommonQuality{mmConfig.BeautyQuality}");
+ qualityText1.text = qualityStr[0].ToString();
+ qualityText2.text = qualityStr.Substring(1);
+ nameText.text = mmConfig.Name;
+ var skinID = BeautyMMManager.Instance.GetUsedSkinID(mmID);
+ var skinConfig = BeautySkinConfig.Get(skinID);
+ roleImg.SetOrgSprite(skinConfig.BigRole, "BeautyMMBigRole");
+ roleImg.SetNativeSize();
+
+ ShowTalent();
+ }
+
+
+ void ShowTalent()
+ {
+ //鍏堟樉绀哄ぉ璧嬪睘鎬э紝鍐嶆樉绀哄ぉ璧嬬壒鎬�
+ var attrs = BeautyMMManager.Instance.GetMMTalentAttrForUI(mmID, true);
+ int talentIndex = 0;
+ if (attrs.IsNullOrEmpty())
+ {
+ talentIndex = 0;
+ }
+ else
+ {
+ foreach (var attr in attrs)
+ {
+ if (talentIndex < talentTexts.Length)
+ {
+ talentTexts[talentIndex].SetActive(true);
+ string format = "{0}" + UIHelper.AppendColor(TextColType.Green, "+{1}");
+ talentTexts[talentIndex].text = PlayerPropertyConfig.GetFullDescription(attr.Key, attr.Value, format);
+ }
+ else
+ {
+ break;
+ }
+ talentIndex++;
+ }
+ }
+
+
+ var talentValue = BeautyMMManager.Instance.GetMMTalentEffectForUI(mmID);
+ for (int i = talentIndex; i < talentTexts.Length; i++)
+ {
+ if (i == talentIndex && mmConfig.EffType != 0)
+ {
+ //澶╄祴鏁堟灉绾﹀畾鏈�澶氫竴涓�
+ talentTexts[talentIndex].SetActive(true);
+ switch (mmConfig.EffType)
+ {
+ case 1:
+ talentTexts[i].text = Language.Get($"BeautyMMTalent1", talentValue);
+ break;
+ case 2:
+ talentTexts[i].text = Language.Get($"BeautyMMTalent2", talentValue / 100, ItemConfig.Get(mmConfig.EffTypeValue).ItemName);
+ break;
+ case 3:
+ talentTexts[i].text = Language.Get($"BeautyMMTalent3", talentValue);
+ break;
+ case 4:
+ talentTexts[i].text = Language.Get($"BeautyMMTalent4", ItemConfig.Get(mmConfig.EffTypeValue).ItemName, talentValue);
+ break;
+ }
+ }
+ else
+ {
+ talentTexts[i].SetActive(false);
+ }
+ }
+ }
+
+
+}
diff --git a/Main/System/BeautyMM/BeautyMMActiveWin.cs.meta b/Main/System/BeautyMM/BeautyMMActiveWin.cs.meta
new file mode 100644
index 0000000..a2f83c7
--- /dev/null
+++ b/Main/System/BeautyMM/BeautyMMActiveWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e51fde590d241a4488944e97e15a5d52
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/BeautyMM/BeautyMMManager.cs b/Main/System/BeautyMM/BeautyMMManager.cs
index ed9e807..f427d8e 100644
--- a/Main/System/BeautyMM/BeautyMMManager.cs
+++ b/Main/System/BeautyMM/BeautyMMManager.cs
@@ -77,8 +77,24 @@
public void UpdateBeautyMMData(HB130_tagSCBeautyInfo data)
{
+ int activeMMID = 0;
foreach (var beauty in data.BeautyList)
{
+ if (DTC0403_tagPlayerLoginLoadOK.finishedLogin)
+ {
+ if (beautyMMDataDict.ContainsKey(beauty.BeautyID))
+ {
+ if (beautyMMDataDict[beauty.BeautyID].State != beauty.State)
+ {
+ activeMMID = beauty.BeautyID;
+ }
+ }
+ else if (beauty.State != 0)
+ {
+ activeMMID = beauty.BeautyID;
+ }
+
+ }
beautyMMDataDict[beauty.BeautyID] = new BeautyMMData()
{
State = beauty.State,
@@ -100,6 +116,11 @@
UpdateRedpoint();
RefreshAllTalen();
OnBeautyMMDataUpdate?.Invoke();
+
+ if (activeMMID > 0)
+ {
+ UIManager.Instance.OpenWindow<BeautyMMActiveWin>(activeMMID);
+ }
}
//0 鍏ㄩ儴 1 宸叉縺娲� 2 鏈縺娲�
diff --git a/Main/System/BeautyMM/BeautyMMShowWin.cs b/Main/System/BeautyMM/BeautyMMShowWin.cs
index 3d5fd09..64320d9 100644
--- a/Main/System/BeautyMM/BeautyMMShowWin.cs
+++ b/Main/System/BeautyMM/BeautyMMShowWin.cs
@@ -47,6 +47,7 @@
BeautyConfig mmConfig;
List<int> itemlist = new List<int>();
+ int beforeRank = 0;
protected override void InitComponent()
{
descBtn.AddListener(() =>
@@ -131,6 +132,12 @@
void OnBeautyMMDataUpdate()
{
+ var mmData = BeautyMMManager.Instance.GetBeautyMMData(mmID);
+ var nowRank = mmData != null ? mmData.LV / BeautyMMManager.Instance.needLVForTalent : 0;
+ if (beforeRank != nowRank)
+ {
+ UIManager.Instance.OpenWindow<BeautyMMUpgradeWin>(mmID);
+ }
Display();
}
@@ -164,8 +171,8 @@
activeTipText.text = !isActive ? GetActiveTip(mmConfig) : "";
var mmData = BeautyMMManager.Instance.GetBeautyMMData(mmID);
- var rank = mmData != null ? mmData.LV / BeautyMMManager.Instance.needLVForTalent + 1 : 1;
- lvNameText.text = Language.Get($"BeautyMMLVName{rank}");
+ beforeRank = mmData != null ? mmData.LV / BeautyMMManager.Instance.needLVForTalent : 0;
+ lvNameText.text = Language.Get($"BeautyMMLVName{beforeRank + 1}");
lvText.text = mmData != null ? mmData.LV.ToString() : "0";
@@ -217,7 +224,7 @@
ShowTalent();
nextLVTalentTipRect.SetActive(true);
- nextLVTalentTip.text = Language.Get("BeautyMM26", rank * BeautyMMManager.Instance.needLVForTalent);
+ nextLVTalentTip.text = Language.Get("BeautyMM26", beforeRank * BeautyMMManager.Instance.needLVForTalent);
giftOPRect.SetActive(true);
fullRect.SetActive(false);
}
diff --git a/Main/System/BeautyMM/BeautyMMUpgradeWin.cs b/Main/System/BeautyMM/BeautyMMUpgradeWin.cs
new file mode 100644
index 0000000..3c21ffe
--- /dev/null
+++ b/Main/System/BeautyMM/BeautyMMUpgradeWin.cs
@@ -0,0 +1,105 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class BeautyMMUpgradeWin : UIBase
+{
+ [SerializeField] Text titleText;
+ [SerializeField] Text title2Text;
+ [SerializeField] ImageEx roleImg;
+ [SerializeField] Text[] talentTexts;
+
+ int mmID;
+ BeautyConfig mmConfig;
+
+
+ protected override void OnPreOpen()
+ {
+ mmID = functionOrder;
+ Display();
+ }
+
+
+
+ void Display()
+ {
+ mmConfig = BeautyConfig.Get(mmID);
+ var skinID = BeautyMMManager.Instance.GetUsedSkinID(mmID);
+ var skinConfig = BeautySkinConfig.Get(skinID);
+ roleImg.SetOrgSprite(skinConfig.BigRole, "BeautyMMBigRole");
+ roleImg.SetNativeSize();
+
+ var mmData = BeautyMMManager.Instance.GetBeautyMMData(mmID);
+ int rank = 0;
+ if (mmData != null)
+ {
+ rank = mmData.LV / BeautyMMManager.Instance.needLVForTalent;
+ }
+ titleText.text = Language.Get($"BeautyMMLVName{rank}");
+ title2Text.text = Language.Get($"BeautyMMLVName{rank + 1}");
+ ShowTalent();
+ }
+
+
+ void ShowTalent()
+ {
+ //鍏堟樉绀哄ぉ璧嬪睘鎬э紝鍐嶆樉绀哄ぉ璧嬬壒鎬�
+ var attrs = BeautyMMManager.Instance.GetMMTalentAttrForUI(mmID, true);
+ int talentIndex = 0;
+ if (attrs.IsNullOrEmpty())
+ {
+ talentIndex = 0;
+ }
+ else
+ {
+ foreach (var attr in attrs)
+ {
+ if (talentIndex < talentTexts.Length)
+ {
+ talentTexts[talentIndex].SetActive(true);
+ string format = "{0}" + UIHelper.AppendColor(TextColType.Green, "+{1}");
+ talentTexts[talentIndex].text = PlayerPropertyConfig.GetFullDescription(attr.Key, attr.Value, format);
+ }
+ else
+ {
+ break;
+ }
+ talentIndex++;
+ }
+ }
+
+
+ var talentValue = BeautyMMManager.Instance.GetMMTalentEffectForUI(mmID);
+ for (int i = talentIndex; i < talentTexts.Length; i++)
+ {
+ if (i == talentIndex && mmConfig.EffType != 0)
+ {
+ //澶╄祴鏁堟灉绾﹀畾鏈�澶氫竴涓�
+ talentTexts[talentIndex].SetActive(true);
+ switch (mmConfig.EffType)
+ {
+ case 1:
+ talentTexts[i].text = Language.Get($"BeautyMMTalent1", talentValue);
+ break;
+ case 2:
+ talentTexts[i].text = Language.Get($"BeautyMMTalent2", talentValue / 100, ItemConfig.Get(mmConfig.EffTypeValue).ItemName);
+ break;
+ case 3:
+ talentTexts[i].text = Language.Get($"BeautyMMTalent3", talentValue);
+ break;
+ case 4:
+ talentTexts[i].text = Language.Get($"BeautyMMTalent4", ItemConfig.Get(mmConfig.EffTypeValue).ItemName, talentValue);
+ break;
+ }
+ }
+ else
+ {
+ talentTexts[i].SetActive(false);
+ }
+ }
+ }
+
+
+}
diff --git a/Main/System/BeautyMM/BeautyMMUpgradeWin.cs.meta b/Main/System/BeautyMM/BeautyMMUpgradeWin.cs.meta
new file mode 100644
index 0000000..9b311ab
--- /dev/null
+++ b/Main/System/BeautyMM/BeautyMMUpgradeWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d400e22d3cc9c44459190d0ae0f73d9c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
--
Gitblit v1.8.0