From c6a7ac3739907e8bb7c751d408e227e19f246f49 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 08 五月 2026 17:27:31 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into h5version
---
Main/System/PhantasmPavilion/PhantasmPavilionManager.cs | 124 +++++++++++++++++++----------------------
1 files changed, 58 insertions(+), 66 deletions(-)
diff --git a/Main/System/PhantasmPavilion/PhantasmPavilionManager.cs b/Main/System/PhantasmPavilion/PhantasmPavilionManager.cs
index 4a81238..ec26648 100644
--- a/Main/System/PhantasmPavilion/PhantasmPavilionManager.cs
+++ b/Main/System/PhantasmPavilion/PhantasmPavilionManager.cs
@@ -215,7 +215,7 @@
int unlockValue = GetUnlockValue(type, id);
int resourceType = GetResourceType(type, id);
string resourceValue = GetResourceValue(type, id);
- if ((UnlockWay == 3 || UnlockWay == 4) && resourceValue == "")
+ if ((UnlockWay == 3 || UnlockWay == 4 || UnlockWay == 5) && resourceValue == "")
{
int skinID = 0;
if (UnlockWay == 3)
@@ -227,6 +227,12 @@
else if (UnlockWay == 4)
{
skinID = unlockValue; // UnlockValue 鐩存帴灏辨槸 skinID
+ }
+ else if (UnlockWay == 5)
+ {
+ int modelID = unlockValue; // UnlockValue 鏄� ModelID
+ if (!ModelConfig.HasKey(modelID)) return;
+ skinID = ModelConfig.Get(modelID).SkinID; // 鎷垮埌褰㈣薄瀵瑰簲鐨勭毊鑲D
}
if (!HeroSkinConfig.HasKey(skinID)) return;
@@ -552,90 +558,49 @@
// 闄ら亾鍏疯В閿佸锛屽叾浠栨柟寮忔殏榛樿姘镐箙
// 1 - 榛樿瑙i攣锛屽嵆鍒涜灏卞彲鐢ㄧ殑
// 2 - 閬撳叿瑙i攣锛屾敮鎸佹椂鏁堛�佸崌绾э紝 Value閰嶇墿鍝両D
- // 3 - 鍏宠仈姝﹀皢瑙i攣锛孷alue閰嶆灏咺D
public bool IsUnlock(PhantasmPavilionType type, int id)
{
- // 閰嶇疆琛ㄤ腑涓嶅瓨鍦紝瑙嗕负鏈В閿�
- if (!Has(type, id))
- return false;
+ if (!Has(type, id)) return false;
int unlockWayValue = GetUnlockWay(type, id);
int unlockValue = GetUnlockValue(type, id);
- // 瑙i攣鏂瑰紡鏃犳晥
- if (!Enum.IsDefined(typeof(PhantasmPavilionUnlockWay), unlockWayValue))
- return false;
- var unlockWay = (PhantasmPavilionUnlockWay)unlockWayValue;
- switch (unlockWay)
+ if (unlockWayValue == 1) return true; // 1 - 榛樿瑙i攣
+
+ if (unlockWayValue == 2) // 2 - 閬撳叿瑙i攣
{
- case PhantasmPavilionUnlockWay.Activate:
- return true;
- case PhantasmPavilionUnlockWay.Hero:
- bool hasHero = HeroManager.Instance.HasHero(unlockValue);
- return hasHero;
- case PhantasmPavilionUnlockWay.Item:
- // 灏佸寘閲屾病鏈�
- if (!TryGetInfo(type, id, out var info))
- return false;
- // 鐜╁鏁版嵁涓殑鐘舵�佹槸鈥滄湭婵�娲烩��
- if (!info.State)
- return false;
- // 鏄惁涓衡�滃凡杩囨湡鐨勯亾鍏封��
- if (IsExpired(info, unlockWay))
- return false;
- return true;
- case PhantasmPavilionUnlockWay.Skin:
- bool hasSkin = HeroUIManager.Instance.IsHeroSkinActive(HeroConfig.GetHeroIDBySkinID(unlockValue), unlockValue);
- return hasSkin;
- default:
- return false;
+ if (!TryGetInfo(type, id, out var info)) return false;
+ if (!info.State) return false;
+ if (IsExpired(info, PhantasmPavilionUnlockWay.Item)) return false;
+ return true;
}
+
+ // 3銆�4銆�5鍙婁互涓婂叏閮ㄤ氦缁欏垎鍙戝嚱鏁版寜琛ㄦ牸绫诲瀷鐙珛澶勭悊
+ return CheckTableSpecificUnlock(type, unlockWayValue, unlockValue);
}
- /// <summary>
- /// 鑾峰緱褰撳墠鐘舵��
- /// </summary>
- /// <returns>0 - 鏈縺娲�, 1 - 鍙縺娲�, 2 - 宸叉縺娲�</returns>
public PhantasmPavilionState GetUnLockState(PhantasmPavilionType type, int id)
{
- // 閰嶇疆琛ㄤ腑涓嶅瓨鍦紝瑙嗕负鈥滄湭婵�娲烩��
- if (!Has(type, id))
- return PhantasmPavilionState.Locked;
+ if (!Has(type, id)) return PhantasmPavilionState.Locked;
- // 宸茬粡瑙i攣
- if (IsUnlock(type, id))
- return PhantasmPavilionState.Activated;
+ // 濡傛灉宸茬粡婊¤冻瑙i攣鏉′欢锛岀洿鎺ヨ繑鍥� Activated
+ if (IsUnlock(type, id)) return PhantasmPavilionState.Activated;
- // 杩愯鍒拌繖閲岋紝璇存槑鐗╁搧鏄�滄湭婵�娲烩�濇垨鈥滃凡杩囨湡鈥濈姸鎬� (IsUnlock 杩斿洖 false)
- // 鏃犳晥鐨勮В閿佹柟寮�
int unlockWayValue = GetUnlockWay(type, id);
- if (!Enum.IsDefined(typeof(PhantasmPavilionUnlockWay), unlockWayValue))
- return PhantasmPavilionState.Locked;
-
- var unlockWay = (PhantasmPavilionUnlockWay)unlockWayValue;
int unlockValue = GetUnlockValue(type, id);
- switch (unlockWay)
+ // 鍙湁閬撳叿瑙i攣(2)瀛樺湪"鏈縺娲讳絾鏉愭枡瓒冲"鐨勭壒鏈変腑闂寸姸鎬�
+ if (unlockWayValue == 2)
{
- // 妫�鏌ラ亾鍏锋縺娲绘潯浠�
- case PhantasmPavilionUnlockWay.Item:
- return CheckCanActivateByItem(type, id, unlockValue)
- ? PhantasmPavilionState.CanActivate
- : PhantasmPavilionState.Locked;
- // 妫�鏌ユ灏嗘縺娲绘潯浠�
- case PhantasmPavilionUnlockWay.Hero:
- int heroID = unlockValue;
- return HeroManager.Instance.HasHero(heroID)
- ? PhantasmPavilionState.Activated
- : PhantasmPavilionState.Locked;
- case PhantasmPavilionUnlockWay.Skin:
- return HeroUIManager.Instance.IsHeroSkinActive(HeroConfig.GetHeroIDBySkinID(unlockValue), unlockValue)
- ? PhantasmPavilionState.Activated
- : PhantasmPavilionState.Locked;
- default:
- return PhantasmPavilionState.Locked;
+ return CheckCanActivateByItem(type, id, unlockValue)
+ ? PhantasmPavilionState.CanActivate
+ : PhantasmPavilionState.Locked;
}
+
+ // 鍏朵粬鍏宠仈瑙i攣濡傛灉涓嶆弧瓒� IsUnlock锛屽垯蹇呭畾鏄� Locked 鐘舵��
+ return PhantasmPavilionState.Locked;
}
+
// 妫�鏌ユ槸鍚︽弧瓒斥�滈�氳繃閬撳叿婵�娲烩�濈殑鏉′欢
private bool CheckCanActivateByItem(PhantasmPavilionType type, int id, int itemId)
@@ -659,6 +624,31 @@
return true;
}
+ /// <summary>
+ /// 鏍规嵁鎵�灞炶〃鏍�(Type)瑙f瀽 UnlockWay 鐨勭壒瀹氬惈涔夊苟鍒ゆ柇鏄惁婊¤冻鏉′欢 (鎺掗櫎 UnlockWay 1 鍜� 2)
+ /// </summary>
+ public bool CheckTableSpecificUnlock(PhantasmPavilionType type, int unlockWay, int unlockValue)
+ {
+ switch (type)
+ {
+ case PhantasmPavilionType.Face:
+ // 澶村儚琛ㄧ嫭鏈夌殑 UnlockWay 瑙f瀽瑙勫垯
+ if (unlockWay == 3) return HeroManager.Instance.HasHero(unlockValue);
+ if (unlockWay == 4) return HeroUIManager.Instance.IsHeroSkinActive(HeroConfig.GetHeroIDBySkinID(unlockValue), unlockValue);
+ if (unlockWay == 5) return IsUnlock(PhantasmPavilionType.Model, unlockValue); // 鍏宠仈褰㈣薄
+ break;
+
+ case PhantasmPavilionType.FacePic:
+ case PhantasmPavilionType.ChatBox:
+ case PhantasmPavilionType.Title:
+ case PhantasmPavilionType.Model:
+ // 鍏朵粬琛ㄧ洰鍓嶇殑鍏辨湁瑙f瀽瑙勫垯
+ if (unlockWay == 3) return HeroManager.Instance.HasHero(unlockValue);
+ if (unlockWay == 4) return HeroUIManager.Instance.IsHeroSkinActive(HeroConfig.GetHeroIDBySkinID(unlockValue), unlockValue);
+ break;
+ }
+ return false;
+ }
public void CheckTimeOut()
{
bool isTimeOut = false;
@@ -977,7 +967,9 @@
Activate = 1, // 榛樿(鍒涜鑹插氨鍙互鐢ㄧ殑)
Item, // 閬撳叿
Hero, // 姝﹀皢
- Skin, // 鐨偆
+ Skin, // 鐨偆
+ Model, // 褰㈣薄
+
}
/// 骞诲闃佺墿鍝佺殑鐘舵��
--
Gitblit v1.8.0