| Main/Config/ConfigManager.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/Config/Configs/BeautySkinConfig.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/BeautyMM/BeautyMMManager.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/BeautyMM/BeautyMMShowWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/BeautyMM/BeautyMMSkinCell.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/BeautyMM/BeautyMMSkinCell.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/BeautyMM/BeautyMMSkinWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/BeautyMM/BeautyMMSkinWin.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Main/Config/ConfigManager.cs
@@ -91,6 +91,7 @@ typeof(PlayerAttrConfig), typeof(PlayerFaceConfig), typeof(PresetUnlockConfig), typeof(PriorBundleConfig), typeof(RandomNameConfig), typeof(SignInConfig), typeof(StoreConfig), @@ -361,6 +362,8 @@ ClearConfigDictionary<PlayerFaceConfig>(); // 清空 PresetUnlockConfig 字典 ClearConfigDictionary<PresetUnlockConfig>(); // 清空 PriorBundleConfig 字典 ClearConfigDictionary<PriorBundleConfig>(); // 清空 RandomNameConfig 字典 ClearConfigDictionary<RandomNameConfig>(); // 清空 SignInConfig 字典 Main/Config/Configs/BeautySkinConfig.cs
@@ -1,6 +1,6 @@ //-------------------------------------------------------- // [Author]: YYL // [ Date ]: 2025年12月21日 // [ Date ]: 2026年2月3日 //-------------------------------------------------------- using System.Collections.Generic; @@ -17,6 +17,7 @@ } public int SkinID; public string Name; public int BeautyID; public int UnlockWay; public int UnlockValue; @@ -42,25 +43,27 @@ string[] tables = input.Split('\t'); int.TryParse(tables[0],out SkinID); int.TryParse(tables[1],out BeautyID); Name = tables[1]; int.TryParse(tables[2],out UnlockWay); int.TryParse(tables[2],out BeautyID); int.TryParse(tables[3],out UnlockValue); int.TryParse(tables[3],out UnlockWay); int.TryParse(tables[4],out UnlockNeedCnt); int.TryParse(tables[4],out UnlockValue); int.TryParse(tables[5],out UpNeedCnt); int.TryParse(tables[5],out UnlockNeedCnt); int.TryParse(tables[6],out StarMax); int.TryParse(tables[6],out UpNeedCnt); if (tables[7].Contains("[")) int.TryParse(tables[7],out StarMax); if (tables[8].Contains("[")) { AttrIDList = JsonMapper.ToObject<int[]>(tables[7]); AttrIDList = JsonMapper.ToObject<int[]>(tables[8]); } else { string[] AttrIDListStringArray = tables[7].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); string[] AttrIDListStringArray = tables[8].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); AttrIDList = new int[AttrIDListStringArray.Length]; for (int i=0;i<AttrIDListStringArray.Length;i++) { @@ -68,13 +71,13 @@ } } if (tables[8].Contains("[")) if (tables[9].Contains("[")) { InitAttrValueList = JsonMapper.ToObject<int[]>(tables[8]); InitAttrValueList = JsonMapper.ToObject<int[]>(tables[9]); } else { string[] InitAttrValueListStringArray = tables[8].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); string[] InitAttrValueListStringArray = tables[9].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); InitAttrValueList = new int[InitAttrValueListStringArray.Length]; for (int i=0;i<InitAttrValueListStringArray.Length;i++) { @@ -82,13 +85,13 @@ } } if (tables[9].Contains("[")) if (tables[10].Contains("[")) { AttrPerStarAddList = JsonMapper.ToObject<int[]>(tables[9]); AttrPerStarAddList = JsonMapper.ToObject<int[]>(tables[10]); } else { string[] AttrPerStarAddListStringArray = tables[9].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); string[] AttrPerStarAddListStringArray = tables[10].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); AttrPerStarAddList = new int[AttrPerStarAddListStringArray.Length]; for (int i=0;i<AttrPerStarAddListStringArray.Length;i++) { @@ -96,11 +99,11 @@ } } HeadIcon = tables[10]; HeadIcon = tables[11]; SmallRole = tables[11]; SmallRole = tables[12]; BigRole = tables[12]; BigRole = tables[13]; } catch (Exception exception) { Main/System/BeautyMM/BeautyMMManager.cs
@@ -16,6 +16,17 @@ public int selectLoveItemID = 0; int m_SelectSkinID; public event Action OnSelectSkinIDChange; public int selectSkinID { get { return m_SelectSkinID; } set { m_SelectSkinID = value; OnSelectSkinIDChange?.Invoke(); } } //配置 //道具ID 对应 好感度 @@ -501,6 +512,17 @@ } //操作 1-激活;2-佩戴;3-升星 public void SendSkinOP(int mmID, int skinID, int opType) { var pack = new CB221_tagCSBeautySkinOP(); pack.BeautyID = (ushort)mmID; pack.SkinID = (ushort)skinID; pack.OPType = (byte)opType; GameNetSystem.Instance.SendInfo(pack); } #region 红点 Redpoint redpoint = new Redpoint(MainRedDot.MainAffairsRedpoint, MainRedDot.Redpoint_BeautyMM); Redpoint redpointMM = new Redpoint(MainRedDot.Redpoint_BeautyMM, MainRedDot.Redpoint_BeautyMM * 10 + 1); @@ -654,7 +676,14 @@ return 0; } public BeautyMMSkinData GetSkinData(int skinID) { if (beautyMMSkinDataDict.ContainsKey(skinID)) { return beautyMMSkinDataDict[skinID]; } return new BeautyMMSkinData(); } public bool IsMMSkinRed(int mmID) { Main/System/BeautyMM/BeautyMMShowWin.cs
@@ -87,7 +87,7 @@ skinBtn.AddListener(() => { // UIManager.Instance.OpenWindow<BeautyMMListWin>(); UIManager.Instance.OpenWindow<BeautyMMSkinWin>(mmID); }); seeAttrBtn.AddListener(() => Main/System/BeautyMM/BeautyMMSkinCell.cs
New file @@ -0,0 +1,60 @@ using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class BeautyMMSkinCell : CellView { [SerializeField] Image headBG; [SerializeField] Image headImg; [SerializeField] Transform lockObj; [SerializeField] Image unLockImg; [SerializeField] Image selectImg; [SerializeField] Text usedText; [SerializeField] Image redImg; [SerializeField] Button btn; public void Display(int mmID, int skinID) { var mmConfig = BeautyConfig.Get(mmID); var skinConfig = BeautySkinConfig.Get(skinID); headBG.SetSprite("heroheadBG" + mmConfig.BeautyQuality); headImg.SetOrgSprite(skinConfig.HeadIcon, "BeautyMMHead"); var redState = BeautyMMManager.Instance.GetMMSkinStateBySkinID(skinConfig); var skinData = BeautyMMManager.Instance.GetSkinData(skinID); var mmData = BeautyMMManager.Instance.GetBeautyMMData(mmID); var state = skinData.State; if (mmData != null && mmData.State != 0 && skinConfig.UnlockWay == 1) { state = 1; } if (state != 0) { lockObj.SetActive(false); } else { lockObj.SetActive(true); unLockImg.SetActive(redState > 0); } usedText.SetActive(skinData.Used == 1); selectImg.SetActive(BeautyMMManager.Instance.selectSkinID == skinID); redImg.SetActive(redState > 0); btn.AddListener(() => { BeautyMMManager.Instance.selectSkinID = skinID; }); // 服务端没有默认解锁,获得解锁的默认 帮手动解锁发送 // if (mmData != null && mmData.State != 0 && skinData.State == 0 && skinConfig.UnlockWay == 1) // { // BeautyMMManager.Instance.SendSkinOP(mmID, BeautyMMManager.Instance.selectSkinID, 1); // } } } Main/System/BeautyMM/BeautyMMSkinCell.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: dd24658dabbf575428047614fe16ca9d MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/System/BeautyMM/BeautyMMSkinWin.cs
New file @@ -0,0 +1,188 @@ using UnityEngine; using UnityEngine.UI; public class BeautyMMSkinWin : UIBase { [SerializeField] ImageEx roleImg; [SerializeField] Text nameText; [SerializeField] Text wayText; [SerializeField] Text attrTipText; //解锁或者加成效果 [SerializeField] Text attrValueText; [SerializeField] ScrollerController clothesScroller; [SerializeField] Button unlockBtn; [SerializeField] Text cntText; [SerializeField] Image itemIcon; [SerializeField] Transform opObjs; [SerializeField] Button lvUPBtn; [SerializeField] Text lvUPCntText; [SerializeField] Image lvUPItemIcon; [SerializeField] Button putOnBtn; [SerializeField] Image putOnYetImg; [SerializeField] UIEffectPlayer lvUPEffect; int mmID; protected override void InitComponent() { unlockBtn.AddListener(UnLockSkin); lvUPBtn.AddListener(LvUpSkin); putOnBtn.AddListener(PutOnSkin); } protected override void OnPreOpen() { mmID = functionOrder; BeautyMMManager.Instance.selectSkinID = BeautyMMManager.Instance.GetUsedSkinID(mmID); clothesScroller.OnRefreshCell += OnRefreshCell; BeautyMMManager.Instance.OnSelectSkinIDChange += Display; CreateScroller(); Display(); } protected override void OnPreClose() { clothesScroller.OnRefreshCell -= OnRefreshCell; BeautyMMManager.Instance.OnSelectSkinIDChange -= Display; } void Display() { var skinConfig = BeautySkinConfig.Get(BeautyMMManager.Instance.selectSkinID); roleImg.SetOrgSprite(skinConfig.BigRole, "BeautyMMBigRole"); roleImg.SetNativeSize(); var skinData = BeautyMMManager.Instance.GetSkinData(BeautyMMManager.Instance.selectSkinID); if (skinData.Star != 0) { nameText.text = skinConfig.Name + " " + Language.Get("L1113", skinData.Star); } else { nameText.text = skinConfig.Name; } var config = BeautyConfig.Get(mmID); if (skinConfig.UnlockWay == 1) { wayText.text = Language.Get("BeautyMMSkin1", config.Name); } else if (skinConfig.UnlockWay == 2) { var itemConfig = ItemConfig.Get(skinConfig.UnlockValue); if (itemConfig.GetWay.IsNullOrEmpty()) { wayText.text = ""; } else { wayText.text = GetItemWaysConfig.Get(itemConfig.GetWay[0]).Name; } } if (skinConfig.InitAttrValueList.IsNullOrEmpty()) { attrTipText.text = ""; attrValueText.text = ""; } else { if (skinData.State == 0) { attrTipText.text = Language.Get("PhantasmPavilion11"); attrValueText.text = UIHelper.AppendColor(TextColType.lightYellow, PlayerPropertyConfig.GetFullDescription(skinConfig.AttrIDList[0], skinConfig.InitAttrValueList[0])); } else { attrTipText.text = Language.Get("PhantasmPavilion07"); var value = skinConfig.InitAttrValueList[0] + skinData.Star * skinConfig.AttrPerStarAddList[0]; attrValueText.text = UIHelper.AppendColor(TextColType.lightYellow, PlayerPropertyConfig.GetFullDescription(skinConfig.AttrIDList[0], value)) + Language.Get("PhantasmPavilion12", UIHelper.AppendColor(TextColType.Green, "+" + PlayerPropertyConfig.GetValueDescription(skinConfig.AttrIDList[0], skinConfig.AttrPerStarAddList[0]))); } } if (skinData.State == 0) { if (skinConfig.UnlockWay == 2) { unlockBtn.SetActive(true); cntText.text = UIHelper.ShowUseItem(PackType.Item, skinConfig.UnlockValue, skinConfig.UnlockNeedCnt); itemIcon.SetItemSprite(skinConfig.UnlockValue); } else { unlockBtn.SetActive(false); } opObjs.SetActive(false); } else { unlockBtn.SetActive(false); opObjs.SetActive(true); if (skinConfig.StarMax != 0 && skinData.Star < skinConfig.StarMax) { lvUPBtn.SetActive(true); lvUPCntText.text = UIHelper.ShowUseItem(PackType.Item, skinConfig.UnlockValue, skinConfig.UpNeedCnt); lvUPItemIcon.SetItemSprite(skinConfig.UnlockValue); } else { lvUPBtn.SetActive(false); } putOnBtn.SetActive(skinData.Used == 0); putOnYetImg.SetActive(skinData.Used == 1); } } void CreateScroller() { clothesScroller.Refresh(); var _list = BeautySkinConfig.GetSkinListByMMID(mmID); for (int i = 0; i < _list.Count; i++) { clothesScroller.AddCell(ScrollerDataType.Header, _list[i].SkinID); } clothesScroller.Restart(); } void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell as BeautyMMSkinCell; _cell.Display(mmID, cell.index); } void UnLockSkin() { var skinConfig = BeautySkinConfig.Get(BeautyMMManager.Instance.selectSkinID); if (!ItemLogicUtility.CheckItemCount(PackType.Item, skinConfig.UnlockValue, skinConfig.UnlockNeedCnt, 2)) { return; } BeautyMMManager.Instance.SendSkinOP(mmID, BeautyMMManager.Instance.selectSkinID, 1); } void LvUpSkin() { var skinConfig = BeautySkinConfig.Get(BeautyMMManager.Instance.selectSkinID); if (!ItemLogicUtility.CheckItemCount(PackType.Item, skinConfig.UnlockValue, skinConfig.UpNeedCnt, 2)) { return; } BeautyMMManager.Instance.SendSkinOP(mmID, BeautyMMManager.Instance.selectSkinID, 3); } void PutOnSkin() { BeautyMMManager.Instance.SendSkinOP(mmID, BeautyMMManager.Instance.selectSkinID, 2); } } Main/System/BeautyMM/BeautyMMSkinWin.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: df1fcdd540c50e8478e77bb8f88ce8fb MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: