Main/Config/PartialConfigs/GubaoResonanceAttrConfig.cs
New file @@ -0,0 +1,75 @@ using System.Collections.Generic; using System.Linq; public partial class GubaoResonanceAttrConfig : ConfigBase<int, GubaoResonanceAttrConfig> { static Dictionary<int, Dictionary<int, GubaoResonanceAttrConfig>> suiteCfgDict = new Dictionary<int, Dictionary<int, GubaoResonanceAttrConfig>>(); protected override void OnConfigParseCompleted() { if (!suiteCfgDict.ContainsKey(ResonanceID)) { suiteCfgDict[ResonanceID] = new Dictionary<int, GubaoResonanceAttrConfig>(); } suiteCfgDict[ResonanceID][ResonanceStar] = this; } public static GubaoResonanceAttrConfig GetConfig(int ResonanceID, int ResonanceStar) { if (suiteCfgDict.ContainsKey(ResonanceID)) { if (suiteCfgDict[ResonanceID].ContainsKey(ResonanceStar)) { return suiteCfgDict[ResonanceID][ResonanceStar]; } } return null; } // 获取当前激活的星级,-1 代表没有激活 //_star 是套装里的最小星级 public static int GetActiveStar(int ResonanceID, int _star) { int activeStar = -1; if (suiteCfgDict.ContainsKey(ResonanceID)) { // 找不到当前星级,找最接近的星级 var keys = suiteCfgDict[ResonanceID].Keys.ToList(); keys.Sort(); foreach (var star in keys) { if (_star >= star) { activeStar = star; } } } return activeStar; } // 获取临近的星级,先取下一个激活的星级, 最大的就取前一星 public static int GetNearStar(int ResonanceID, int _Star) { var keys = suiteCfgDict[ResonanceID].Keys.ToList(); keys.Sort(); foreach (var star in keys) { if (_Star < star) { return star; } } return keys[keys.Count - 2]; } public static List<int> GetStarList(int ResonanceID) { var keys = suiteCfgDict[ResonanceID].Keys.ToList(); keys.Sort(); return keys; } } Main/Config/PartialConfigs/GubaoResonanceAttrConfig.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 5c38487f61edd9b4b894c98d224f1108 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/Config/PartialConfigs/GubaoResonanceConfig.cs
New file @@ -0,0 +1,22 @@ using System.Collections.Generic; public partial class GubaoResonanceConfig : ConfigBase<int, GubaoResonanceConfig> { static Dictionary<int, int> gbIDToSuiteIDDict = new Dictionary<int, int>(); protected override void OnConfigParseCompleted() { for (int i = 0; i < GubaoIDList.Length; i++) { gbIDToSuiteIDDict[GubaoIDList[i]] = ResonanceID; } } public static int GetSuiteIDByGubaoID(int gbID) { if (gbIDToSuiteIDDict.ContainsKey(gbID)) { return gbIDToSuiteIDDict[gbID]; } return 0; } } Main/Config/PartialConfigs/GubaoResonanceConfig.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: aa382e59e7d53d445a14104e4d7d2e3d MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/Config/PartialConfigs/PlayerPropertyConfig.cs
@@ -107,7 +107,8 @@ } } public static string GetBaseFullDescription(int id, long value, string format="{0}+{1}") //基础属性描述 public static string GetBaseFullDescription(int id, long value, string format = "{0}+{1}") { var config = Get(id); if (config == null) Main/System/Gubao/GubaoActiveWin.cs
@@ -3,8 +3,6 @@ /// <summary> /// 古宝激活成功 /// 外部查看类型 0完整tip(可切满级) 1 只有基础满级不可切换 2 只有套装 /// 内部可切换当前0 和 完整1 /// </summary> public class GubaoActiveWin : UIBase { @@ -71,12 +69,18 @@ //有特殊层级的:如果为0,则第一行只显示单行的属性和提升,第二行显示数值0;如果不为0,则第一行显示单行属性和提升,第二行显示数值 //有特权效果的亦同 var specAttrDict = GubaoManager.Instance.GetSpecialAttrByGBID(gubaoID, true); if (config.SpecEffType == 0) if (config.SpecEffType == 0 && config.SpecAttrID == 0) { attrSpecialText.SetActive(false); } else if (config.SpecEffType == 0) { attrSpecialText.SetActive(true); attrSpecialText.text = PlayerPropertyConfig.GetFullDescription(config.SpecAttrID, specAttrDict[config.SpecAttrID]); } else { attrSpecialText.SetActive(true); //有特殊效果的 var singleLayerAttrDict = GubaoManager.Instance.GetSpecialAttrSingleLayerByGBID(gubaoID); attrSpecialText.text = Language.Get("Gubao22_" + config.SpecEffType) + PlayerPropertyConfig.GetFullDescription(config.SpecAttrID, singleLayerAttrDict[config.SpecAttrID]); Main/System/Gubao/GubaoBaseWin.cs
@@ -22,7 +22,7 @@ bg.SetActive(false); break; case 2: currentSubUI = UIManager.Instance.OpenWindow<GubaoListWin>(); currentSubUI = UIManager.Instance.OpenWindow<GubaoSuiteListWin>(); jbbg.SetActive(false); bg.SetActive(true); break; Main/System/Gubao/GubaoCell.cs
@@ -24,12 +24,37 @@ public void Display(int quality, int index) { var gubaoID = GubaoManager.Instance.gubaoCollectDict[quality][index]; DisplayByGBID(gubaoID); redImg.SetActive(GubaoManager.Instance.IsRedTip(gubaoID)); } public void Display(int gubaoID) { DisplayByGBID(gubaoID); var gbData = GubaoManager.Instance.TryGetGubaoInfo(gubaoID); int star = 0; if (gbData != null) { star = gbData.GubaoStar; } redImg.SetActive(star < 5 && GubaoManager.Instance.CanStarUpGubao(gubaoID)); } void DisplayByGBID(int gubaoID) { gbBtn.AddListener(() => { UIManager.Instance.OpenWindow<GubaoDetailWin>(gubaoID); }); var config = GubaoConfig.Get(gubaoID); if (config == null) { Debug.LogError($"找不到古宝ID: {gubaoID}"); return; } int quality = config.GubaoQuality; gbImg.SetOrgSprite(config.Icon, "gbicon"); gbImg.SetNativeSize(); gbBGImg.SetSprite($"GubaoBG{quality}"); @@ -90,6 +115,4 @@ lvText.text = lv == 0 ? "" : Language.Get("L1113", lv); redImg.SetActive(GubaoManager.Instance.IsRedTip(gubaoID)); } } Main/System/Gubao/GubaoDetailWin.cs
@@ -78,12 +78,12 @@ { seeSuiteBtn.AddListener(() => { GubaoManager.Instance.ShowTip(gubaoID, 3); GubaoManager.Instance.ShowTip(gubaoID, 2); }); seeFullBtn.AddListener(() => { GubaoManager.Instance.ShowTip(gubaoID, 2); GubaoManager.Instance.ShowTip(gubaoID, 1); }); lvupTabBtn.AddListener(() => { @@ -123,6 +123,15 @@ public void Display() { var config = GubaoConfig.Get(gubaoID); Debug.Log($"古宝ID: {gubaoID}"); if (config == null) { Debug.LogError($"找不到古宝ID: {gubaoID}"); return; } seeSuiteBtn.SetActive(GubaoResonanceConfig.GetSuiteIDByGubaoID(gubaoID) != 0); var quality = config.GubaoQuality; gbImg.SetOrgSprite(config.Icon, "gbicon"); @@ -381,45 +390,54 @@ var specAttrDict = GubaoManager.Instance.GetSpecialAttrByGBID(gubaoID, true); if (config.SpecEffType == 0) { attrSpecialTexts[0].text = PlayerPropertyConfig.GetFullDescription(config.SpecAttrID, specAttrDict[config.SpecAttrID]); if (tabIndex == 0) if (config.SpecAttrID != 0) { //合成时不显示 addAttrSpecialRects[0].SetActive(false); } else if (tabIndex == 1) { //满级不显示 if (GubaoManager.Instance.IsMaxLV(gubaoID)) attrSpecialRects[0].SetActive(true); attrSpecialTexts[0].text = PlayerPropertyConfig.GetFullDescription(config.SpecAttrID, specAttrDict[config.SpecAttrID]); if (tabIndex == 0) { //合成时不显示 addAttrSpecialRects[0].SetActive(false); } else else if (tabIndex == 1) { var nextAttrDict = GubaoManager.Instance.GetSpecialAttrSingleLayerByGBID(gubaoID, lv + 1); addAttrSpecialRects[0].SetActive(true); addAttrSpecialTexts[0].text = PlayerPropertyConfig.GetValueDescriptionFormat(config.SpecAttrID, nextAttrDict[config.SpecAttrID]); //满级不显示 if (GubaoManager.Instance.IsMaxLV(gubaoID)) { addAttrSpecialRects[0].SetActive(false); } else { var nextAttrDict = GubaoManager.Instance.GetSpecialAttrSingleLayerByGBID(gubaoID, lv + 1); addAttrSpecialRects[0].SetActive(true); addAttrSpecialTexts[0].text = PlayerPropertyConfig.GetValueDescriptionFormat(config.SpecAttrID, nextAttrDict[config.SpecAttrID]); } } else if (tabIndex == 2) { //满星不显示 if (GubaoManager.Instance.IsMaxStar(gubaoID)) { addAttrSpecialRects[0].SetActive(false); } else { var nextAttrDict = GubaoManager.Instance.GetSpecialAttrSingleLayerByGBID(gubaoID, 0, star + 1); addAttrSpecialRects[0].SetActive(true); addAttrSpecialTexts[0].text = PlayerPropertyConfig.GetValueDescriptionFormat(config.SpecAttrID, nextAttrDict[config.SpecAttrID]); } } } else if (tabIndex == 2) else { //满星不显示 if (GubaoManager.Instance.IsMaxStar(gubaoID)) { addAttrSpecialRects[0].SetActive(false); } else { var nextAttrDict = GubaoManager.Instance.GetSpecialAttrSingleLayerByGBID(gubaoID, 0, star + 1); addAttrSpecialRects[0].SetActive(true); addAttrSpecialTexts[0].text = PlayerPropertyConfig.GetValueDescriptionFormat(config.SpecAttrID, nextAttrDict[config.SpecAttrID]); } attrSpecialRects[0].SetActive(false); } } else { //有特殊效果的 var singleLayerAttrDict = GubaoManager.Instance.GetSpecialAttrSingleLayerByGBID(gubaoID); attrSpecialRects[0].SetActive(true); attrSpecialTexts[0].text = Language.Get("Gubao22_" + config.SpecEffType) + PlayerPropertyConfig.GetFullDescription(config.SpecAttrID, singleLayerAttrDict[config.SpecAttrID]); attrSpecialTexts[1].text = Language.Get("Gubao21", layer, config.SpecEffLayerMax, PlayerPropertyConfig.GetFullDescription(config.SpecAttrID, layer == 0 ? 0 : specAttrDict[config.SpecAttrID])); if (tabIndex == 0) Main/System/Gubao/GubaoManager.cs
@@ -416,6 +416,20 @@ return attrDict; } public Dictionary<int, long> GetBaseMaxAttrByGBID(int gubaoID) { Dictionary<int, long> attrDict = new Dictionary<int, long>(); var config = GubaoConfig.Get(gubaoID); var maxStar = GubaoStarConfig.GetMaxStar(config.GubaoQuality); for (int i = 0; i < config.BaseAttrIDList.Length; i++) { attrDict[config.BaseAttrIDList[i]] = config.BaseAttrValueList[i] + config.BaseAttrPerStarAddList[i] * maxStar; } return attrDict; } public Dictionary<int, long> GetSpecialAttrByGBID(int gubaoID, bool isPreview = false) { Dictionary<int, long> attrDict = new Dictionary<int, long>(); @@ -443,6 +457,25 @@ return attrDict; } public Dictionary<int, long> GetSpecialMaxAttrByGBID(int gubaoID) { Dictionary<int, long> attrDict = new Dictionary<int, long>(); var config = GubaoConfig.Get(gubaoID); int quality = config.GubaoQuality; var maxStar = GubaoStarConfig.GetMaxStar(config.GubaoQuality); var maxLV = GubaoLVAttrConfig.GetMaxLV(quality); attrDict[config.SpecAttrID] = config.SpecAttrValue + config.SpecAttrPerStarAdd * maxStar + GubaoLVAttrConfig.GetSpecLVAttrValue(quality, maxLV, config.SpecAttrID); if (config.SpecEffType != 0) { attrDict[config.SpecAttrID] *= config.SpecEffLayerMax; } return attrDict; } //单层的属性,或者不需要层的 @@ -492,6 +525,15 @@ return attrDict; } public Dictionary<int, int> GetPrivilegeMaxValueByGBID(int gubaoID) { Dictionary<int, int> attrDict = new Dictionary<int, int>(); var config = GubaoConfig.Get(gubaoID); var maxStar = GubaoStarConfig.GetMaxStar(config.GubaoQuality); attrDict[config.PowerType] = config.PowerValue + config.PowerPerStarAdd * maxStar; return attrDict; } public bool IsMaxLV(int gubaoID) { var config = GubaoConfig.Get(gubaoID); @@ -515,6 +557,38 @@ return gubaoInfo.GubaoStar >= GubaoStarConfig.GetMaxStar(config.GubaoQuality); } //套装星级 -1没激活 public int GetSuiteStar(int suiteID) { var suiteCfg = GubaoResonanceConfig.Get(suiteID); int minStar = 999999; //取最小星级 foreach (var gubaoID in suiteCfg.GubaoIDList) { var gubaoInfo = TryGetGubaoInfo(gubaoID); if (gubaoInfo == null) { return -1; } minStar = Math.Min(minStar, gubaoInfo.GubaoStar); } return GubaoResonanceAttrConfig.GetActiveStar(suiteID, minStar); } public int GetSuiteActiveGBCnt(int suiteID) { var suiteCfg = GubaoResonanceConfig.Get(suiteID); int cnt = 0; foreach (var gubaoID in suiteCfg.GubaoIDList) { var gubaoInfo = TryGetGubaoInfo(gubaoID); if (gubaoInfo != null) { cnt++; } } return cnt; } #endregion #region 鉴宝 Main/System/Gubao/GubaoSuiteItemCell.cs
New file @@ -0,0 +1,82 @@ using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class GubaoSuiteItemCell : MonoBehaviour { [SerializeField] ItemCell mainItemCell; [SerializeField] Image[] starImgs; [SerializeField] Transform processRect; [SerializeField] Image processImg; [SerializeField] Text processText; [SerializeField] Image fullProcessImg; public void DisplayByGBID(int gubaoID) { var config = GubaoConfig.Get(gubaoID); if (config == null) { Debug.LogError($"找不到古宝ID: {gubaoID}"); return; } var gbData = GubaoManager.Instance.TryGetGubaoInfo(gubaoID); int lv = 0; int star = 0; if (gbData != null) { lv = gbData.GubaoLV; star = gbData.GubaoStar; } mainItemCell.Init(new ItemCellModel(config.UnlockItemID, false, 1)); mainItemCell.pieceIcon.SetActive(false); mainItemCell.countText.text = lv == 0 ? "" : Language.Get("L1113", lv); mainItemCell.button.AddListener(()=> { GubaoManager.Instance.ShowTip(gubaoID, 1); }); for (int i = 0; i < starImgs.Length; i++) { if (i < star) { starImgs[i].SetActive(true); //循环不同图 int starIndex = star / starImgs.Length * starImgs.Length + i + 1; if (starIndex > star) { starIndex -= starImgs.Length; } starImgs[i].SetSprite($"GubaoStar{starIndex}"); } else { starImgs[i].SetActive(false); } } if (GubaoManager.Instance.IsMaxStar(gubaoID)) { processRect.SetActive(false); } else { var starConfig = GubaoStarConfig.GetConfig(config.GubaoQuality, star + 1); if (starConfig.StarUPNeedSelfCnt > 0) { processRect.SetActive(true); var cnt = VirtualPackManager.Instance.GetNoPackItemCount(config.UnlockItemID); float value = cnt * 1.0f / starConfig.StarUPNeedSelfCnt; processImg.fillAmount = value; fullProcessImg.SetActive(value >= 1); processText.text = $"{cnt}/{starConfig.StarUPNeedSelfCnt}"; } else { processRect.SetActive(false); } } } } Main/System/Gubao/GubaoSuiteItemCell.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 9e8abe6412cf2a747b9a3ed7b94c2db8 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/System/Gubao/GubaoSuiteListCell.cs
New file @@ -0,0 +1,82 @@ using System; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; public class GubaoSuiteListCell : CellView { [SerializeField] GubaoCell[] gubaoCells; [SerializeField] Text suiteNameText; [SerializeField] Text[] suiteAttrTexts; [SerializeField] Image[] activeImgs; [SerializeField] Image[] lockImgs; [SerializeField] Button seeSuiteBtn; public void Display(int id) { var suiteCfg = GubaoResonanceConfig.Get(id); suiteNameText.text = suiteCfg.ResonanceName; seeSuiteBtn.AddListener(() => { GubaoManager.Instance.ShowTip(suiteCfg.GubaoIDList[0], 2); }); var config = GubaoResonanceConfig.Get(id); for (int i = 0; i < gubaoCells.Length; i++) { if (i < config.GubaoIDList.Length) { gubaoCells[i].SetActive(true); gubaoCells[i].Display(config.GubaoIDList[i]); } else { gubaoCells[i].SetActive(false); } } var curSuiteStar = GubaoManager.Instance.GetSuiteStar(id); var tmpStar = curSuiteStar == -1 ? 0 : curSuiteStar; var nearSuiteStar = GubaoResonanceAttrConfig.GetNearStar(id, tmpStar); var starList = new List<int>() { tmpStar, nearSuiteStar }; starList.Sort(); for (int i = 0; i < suiteAttrTexts.Length; i++) { string preStr; var star = starList[i]; var attrCfg = GubaoResonanceAttrConfig.GetConfig(id, star); if (star == 0) { preStr = Language.Get("Gubao27"); } else { preStr = Language.Get("Gubao28", star); } if (star <= curSuiteStar) { //激活 string format = "{0}" + UIHelper.AppendColor(TextColType.Green, "+{1}", false); suiteAttrTexts[i].text = Language.Get("L1100", preStr, PlayerPropertyConfig.GetFullDescription(attrCfg.ResonanceAttrIDList[0], attrCfg.ResonanceAttrValueList[0], format)); activeImgs[i].SetActive(true); lockImgs[i].SetActive(false); } else { //锁定 suiteAttrTexts[i].text = UIHelper.AppendColor(TextColType.NavyGray, Language.Get("L1100", preStr, PlayerPropertyConfig.GetFullDescription(attrCfg.ResonanceAttrIDList[0], attrCfg.ResonanceAttrValueList[0]))); activeImgs[i].SetActive(false); lockImgs[i].SetActive(true); } } } } Main/System/Gubao/GubaoSuiteListCell.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 71612a00de9ad6b4285b2f7ce1a0d3e0 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/System/Gubao/GubaoSuiteListWin.cs
New file @@ -0,0 +1,55 @@ using System; using System.Linq; using System.Text; using UnityEngine; using UnityEngine.UI; /// <summary> /// 古宝套装列表 /// </summary> public class GubaoSuiteListWin : UIBase { [SerializeField] ScrollerController scroller; protected override void OnPreOpen() { scroller.OnRefreshCell += OnRefreshCell; UIManager.Instance.OnCloseWindow += OnCloseWindow; Display(); } protected override void OnPreClose() { scroller.OnRefreshCell -= OnRefreshCell; UIManager.Instance.OnCloseWindow -= OnCloseWindow; } void OnCloseWindow(UIBase ui) { if (ui is GubaoDetailWin) { scroller.m_Scorller.RefreshActiveCellViews(); } } void Display() { scroller.Refresh(); var keys = GubaoResonanceConfig.GetKeys(); for (int i = 0; i < keys.Count; i++) { scroller.AddCell(ScrollerDataType.Header, keys[i]); } scroller.Restart(); } void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell as GubaoSuiteListCell; _cell.Display(cell.index); } } Main/System/Gubao/GubaoSuiteListWin.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 4cea86c782acca946a4c90aa92236f81 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/System/Gubao/GubaoTipWin.cs
@@ -4,60 +4,177 @@ using UnityEngine.UI; /// <summary> /// 古宝TIP /// 古宝TIP /// 外部查看类型 0完整tip(可切满级) 1 只有基础满级不可切换 2 只有套装 /// 内部可切换当前0 和 完整1 /// </summary> public class GubaoTipWin : UIBase { [SerializeField] ImageEx gbImg; [SerializeField] UIEffectPlayer gbBGEffect; [SerializeField] UIEffectPlayer gbEffect; [SerializeField] ItemCell mainItemCell; [SerializeField] Text nameText; [SerializeField] Image[] starImgs; [SerializeField] Transform processRect; [SerializeField] Image processImg; [SerializeField] Text processText; [SerializeField] Image fullProcessImg; //基础属性 [SerializeField] Text[] attrBaseTexts; [SerializeField] Text attrSpecialText; [SerializeField] Transform attrPrivilegeRect; [SerializeField] Text attrPrivilegeText; [SerializeField] Text specialText; //特殊属性和特权效果 [SerializeField] Button okBtn; [SerializeField] Button changeBtn; [SerializeField] Text changeText; [SerializeField] Transform fullRect; [SerializeField] GubaoSuiteItemCell[] suiteItemCells; [SerializeField] Text suiteNameText; [SerializeField] Text[] suiteAttrTexts; [SerializeField] Transform basePanel; [SerializeField] Transform linePanel; [SerializeField] Transform suitePanel; int gubaoID = 0; bool isFull = false; // 是否显示满级 int lv = 0; int star = 0; int quality = 0; GubaoConfig config; protected override void InitComponent() { okBtn.AddListener(CloseWindow); changeBtn.AddListener(()=> { isFull = !isFull; ShowAttr(); }); } protected override void OnPreOpen() { gubaoID = functionOrder; if (GubaoManager.Instance.tipType == 0) { isFull = false; } else if (GubaoManager.Instance.tipType == 1) { isFull = true; } Display(); } public void Display() { var config = GubaoConfig.Get(gubaoID); gbImg.SetOrgSprite(config.Icon, "gbicon"); gbImg.SetNativeSize(); config = GubaoConfig.Get(gubaoID); var gbData = GubaoManager.Instance.TryGetGubaoInfo(gubaoID); gbBGEffect.PlayByArrIndex(gbData.Quality - 2); gbEffect.PlayByArrIndex(gbData.Quality - 2); nameText.text = config.Name; nameText.color = UIHelper.GetFuncQualityColor(gbData.Quality); ShowAttr(config); lv = 0; star = 0; quality = config.GubaoQuality; if (gbData != null) { lv = gbData.GubaoLV; star = gbData.GubaoStar; } /// 外部查看类型 0完整tip(可切满级) 1 只有基础满级不可切换 2 只有套装 if (GubaoManager.Instance.tipType == 0) { basePanel.SetActive(true); fullRect.SetActive(false); changeBtn.SetActive(true); linePanel.SetActive(true); ShowBase(); ShowSuite(); } else if (GubaoManager.Instance.tipType == 1) { basePanel.SetActive(true); linePanel.SetActive(false); suitePanel.SetActive(false); fullRect.SetActive(true); changeBtn.SetActive(false); ShowBase(); } else if (GubaoManager.Instance.tipType == 2) { basePanel.SetActive(false); linePanel.SetActive(false); ShowSuite(); } } void ShowAttr(GubaoConfig config) void ShowBase() { nameText.text = Language.Get("L1039", Language.Get($"FuncQuality{quality}")) + config.Name; nameText.color = UIHelper.GetFuncQualityColor(quality); ShowAttr(); } void ShowAttr() { changeText.text = isFull ? Language.Get("Gubao8") : Language.Get("Gubao9"); mainItemCell.Init(new ItemCellModel(config.UnlockItemID, false, 1)); mainItemCell.pieceIcon.SetActive(false); mainItemCell.countText.text = lv == 0 ? "" : Language.Get("L1113", isFull ? GubaoLVAttrConfig.GetMaxLV(quality) : lv); if (GubaoManager.Instance.IsMaxStar(gubaoID)) { processRect.SetActive(false); } else { var starConfig = GubaoStarConfig.GetConfig(config.GubaoQuality, star + 1); if (starConfig.StarUPNeedSelfCnt > 0) { processRect.SetActive(true); var cnt = VirtualPackManager.Instance.GetNoPackItemCount(config.UnlockItemID); float value = cnt * 1.0f / starConfig.StarUPNeedSelfCnt; processImg.fillAmount = value; fullProcessImg.SetActive(value >= 1); processText.text = $"{cnt}/{starConfig.StarUPNeedSelfCnt}"; } else { processRect.SetActive(false); } } int showStar = isFull ? GubaoStarConfig.GetMaxStar(quality) : star; for (int i = 0; i < starImgs.Length; i++) { if (i < showStar) { starImgs[i].SetActive(true); //循环不同图 int starIndex = showStar / starImgs.Length * starImgs.Length + i + 1; if (starIndex > showStar) { starIndex -= starImgs.Length; } starImgs[i].SetSprite($"GubaoStar{starIndex}"); } else { starImgs[i].SetActive(false); } } string format = "{0}" + UIHelper.AppendColor(TextColType.Green, "+{1}", false); //基础属性 var attrDict = GubaoManager.Instance.GetBaseAttrByGBID(gubaoID); var attrDict = !isFull ? GubaoManager.Instance.GetBaseAttrByGBID(gubaoID, true) : GubaoManager.Instance.GetBaseMaxAttrByGBID(gubaoID); for (int i = 0; i < attrBaseTexts.Length; i++) { if (i < config.BaseAttrIDList.Length) { attrBaseTexts[i].SetActive(true); attrBaseTexts[i].text = PlayerPropertyConfig.GetFullDescription(config.BaseAttrIDList[i], attrDict[config.BaseAttrIDList[i]]); attrBaseTexts[i].text = PlayerPropertyConfig.GetFullDescription(config.BaseAttrIDList[i], attrDict[config.BaseAttrIDList[i]], format); } else { @@ -65,43 +182,91 @@ } } //特殊属性:只有一个属性,第一行单层属性,第二行为特效效果层级加成汇总 //分两种情况 //无任何效果的正常升星升级显示第一行,第二行隐藏 //有特殊层级的:如果为0,则第一行只显示单行的属性和提升,第二行显示数值0;如果不为0,则第一行显示单行属性和提升,第二行显示数值 //有特权效果的亦同 var specAttrDict = GubaoManager.Instance.GetSpecialAttrByGBID(gubaoID, true); if (config.SpecEffType == 0) //特殊属性和特权只显示一个 var specAttrDict = !isFull ? GubaoManager.Instance.GetSpecialAttrByGBID(gubaoID, true) : GubaoManager.Instance.GetSpecialMaxAttrByGBID(gubaoID); if (config.SpecEffType == 0 && config.SpecAttrID != 0) { attrSpecialText.text = PlayerPropertyConfig.GetFullDescription(config.SpecAttrID, specAttrDict[config.SpecAttrID]); specialText.text = PlayerPropertyConfig.GetFullDescription(config.SpecAttrID, specAttrDict[config.SpecAttrID], format); } else else if (config.SpecEffType != 0 && config.SpecAttrID != 0) { //有特殊效果的 var singleLayerAttrDict = GubaoManager.Instance.GetSpecialAttrSingleLayerByGBID(gubaoID); attrSpecialText.text = Language.Get("Gubao22_" + config.SpecEffType) + PlayerPropertyConfig.GetFullDescription(config.SpecAttrID, singleLayerAttrDict[config.SpecAttrID]); specialText.text = Language.Get("Gubao22_" + config.SpecEffType) + PlayerPropertyConfig.GetFullDescription(config.SpecAttrID, specAttrDict[config.SpecAttrID], format); } if (config.PowerType != 0) else { // 1 游历双倍奖励概率 无 增加万分率 万分率 // 2 月卡领取额外奖励 物品ID 提升百分比 百分比 //有特权效果的 非属性类 attrPrivilegeRect.SetActive(true); var valueDict = GubaoManager.Instance.GetPrivilegeValueByGBID(gubaoID, true); var valueDict = !isFull ? GubaoManager.Instance.GetPrivilegeValueByGBID(gubaoID, true) : GubaoManager.Instance.GetPrivilegeMaxValueByGBID(gubaoID); if (config.PowerType == 1) { attrPrivilegeText.text = Language.Get("Gubao23_" + config.PowerType, valueDict[config.PowerType] / 100.0); specialText.text = Language.Get("Gubao23_" + config.PowerType, valueDict[config.PowerType] / 100.0); } else if (config.PowerType == 2) { attrPrivilegeText.text = Language.Get("Gubao23_" + config.PowerType, ItemConfig.Get(config.PowerTypeValue).ItemName, valueDict[config.PowerType]); specialText.text = Language.Get("Gubao23_" + config.PowerType, ItemConfig.Get(config.PowerTypeValue).ItemName, valueDict[config.PowerType]); } } else } void ShowSuite() { var suitID = GubaoResonanceConfig.GetSuiteIDByGubaoID(gubaoID); if (suitID == 0) { attrPrivilegeRect.SetActive(false); suitePanel.SetActive(false); linePanel.SetActive(false); return; } suitePanel.SetActive(true); var suitConfig = GubaoResonanceConfig.Get(suitID); suiteNameText.text = suitConfig.ResonanceName + Language.Get("HeroFates11", GubaoManager.Instance.GetSuiteActiveGBCnt(suitID), suitConfig.GubaoIDList.Length); for (int i = 0; i < suiteItemCells.Length; i++) { if (i < suitConfig.GubaoIDList.Length) { suiteItemCells[i].SetActive(true); suiteItemCells[i].DisplayByGBID(suitConfig.GubaoIDList[i]); } else { suiteItemCells[i].SetActive(false); } } var curSuiteStar = GubaoManager.Instance.GetSuiteStar(suitID); var starList = GubaoResonanceAttrConfig.GetStarList(suitID); for (int i = 0; i < suiteAttrTexts.Length; i++) { string preStr; var star = starList[i]; var attrCfg = GubaoResonanceAttrConfig.GetConfig(suitID, star); if (star == 0) { preStr = Language.Get("Gubao27"); } else { preStr = Language.Get("Gubao28", star); } if (star <= curSuiteStar) { //激活 string format = "{0}" + UIHelper.AppendColor(TextColType.Green, "+{1}", false); suiteAttrTexts[i].text = Language.Get("L1100", preStr, PlayerPropertyConfig.GetFullDescription(attrCfg.ResonanceAttrIDList[0], attrCfg.ResonanceAttrValueList[0], format)); } else { //锁定 suiteAttrTexts[i].text = UIHelper.AppendColor(TextColType.NavyGray, Language.Get("L1100", preStr, PlayerPropertyConfig.GetFullDescription(attrCfg.ResonanceAttrIDList[0], attrCfg.ResonanceAttrValueList[0]))); } } } } Main/System/ItemTip/BoxGetItemModel.cs
@@ -105,6 +105,8 @@ } } bool isMergeItem = true; //约定IsBind=10 为古宝额外增加 if (netPack.ItemList.Length != 0) { for (int i = 0; i < netPack.ItemLen; i++) @@ -112,6 +114,10 @@ showItems.Add(new Item((int)netPack.ItemList[i].ItemID, netPack.ItemList[i].Count + netPack.ItemList[i].CountEx * Constants.ExpPointValue, netPack.ItemList[i].IsBind)); if (isMergeItem && netPack.ItemList[i].IsBind >= 10) { isMergeItem = false; } } } @@ -123,7 +129,7 @@ if (showItems.Count == 0) return; ItemLogicUtility.Instance.ShowGetItem(showItems, eventName); ItemLogicUtility.Instance.ShowGetItem(showItems, eventName, isMergeItem:isMergeItem); } // public int GetUseCntByID(int itemId) Main/System/ItemTip/ChooseItemsCell.cs
@@ -10,6 +10,7 @@ [SerializeField] LongPressButton btnReduce; [SerializeField] LongPressButton btnPlus; [SerializeField] Transform numForm; [SerializeField] Transform unHaveRect; int itemId; string guid; @@ -42,6 +43,16 @@ btnReduce.SetListener(OnClickReduce); btnReduce.onPress.AddListener(OnClickReduce); } var gbCfg = GubaoConfig.Get(itemId); if (gbCfg != null && !GubaoManager.Instance.IsActive(itemId)) { unHaveRect.SetActive(true); } else { unHaveRect.SetActive(false); } } void OnClickPlus() Main/System/KnapSack/BackpackData.cs
@@ -11,7 +11,7 @@ public int id; public long countEx; public int quality; public int useType; //用途定义:0 无 1 预留 2 红颜增加 public int useType; //用途定义:0 无 1 预留 2 红颜增加 10 古宝增加 public Item(int _id, long _count) { Main/System/KnapSack/Logic/CommonGetItem.cs
@@ -25,6 +25,8 @@ ItemTipUtility.Show(itemID); }); beautyExImg.SetActive(item.useType == 2); beautyExImg.SetActive(item.useType != 0); beautyExImg.SetSprite($"AwardMark{item.useType}"); beautyExImg.SetNativeSize(); } }