From 1dcde95442d12d839dece6f62dcb880d30e6705b Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期一, 10 九月 2018 19:58:31 +0800
Subject: [PATCH] 3390【主干】法宝列表显示法宝解封等级
---
System/Treasure/TreasureComponent.cs | 82 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 82 insertions(+), 0 deletions(-)
diff --git a/System/Treasure/TreasureComponent.cs b/System/Treasure/TreasureComponent.cs
index d850733..54fc964 100644
--- a/System/Treasure/TreasureComponent.cs
+++ b/System/Treasure/TreasureComponent.cs
@@ -28,6 +28,7 @@
private SkinnedMeshRenderer treasureSkin;
private Transform bottom;
private Transform name;
+ private TextMesh condition;
#region 绾㈢偣
private Transform potentialRed;
@@ -49,6 +50,7 @@
static Dictionary<TreasureCategory, GameObjectPoolManager.GameObjectPool> m_BottomPoolDict = new Dictionary<TreasureCategory, GameObjectPoolManager.GameObjectPool>();
static Dictionary<TreasureState, GameObjectPoolManager.GameObjectPool> m_StatePoolDict = new Dictionary<TreasureState, GameObjectPoolManager.GameObjectPool>();
+ static GameObjectPoolManager.GameObjectPool m_ConditionPool;
static Vector3 m_CacheBottomScale = Vector3.zero;
TreasureModel m_Model;
@@ -59,6 +61,8 @@
return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<TreasureModel>());
}
}
+
+ AchievementModel achievementModel { get { return ModelCenter.Instance.GetModel<AchievementModel>(); } }
public void SetActive(bool _active)
{
@@ -84,6 +88,7 @@
RecycleLockEffect();
RecycleCollectingSfx();
RecycleRedpoint();
+ RecycleCondition();
RedpointCenter.Instance.redpointValueChangeEvent -= RedpointValueChangeEvent;
}
interactProcessor.SetActive(_active);
@@ -307,16 +312,19 @@
RecycleCollectingSfx();
RequestTreasureEffect();
RecycleLockEffect();
+ RecycleCondition();
break;
case TreasureState.Collecting:
RequestTreasureEffect();
RequestCollectingSfx();
RecycleLockEffect();
+ RecycleCondition();
break;
case TreasureState.Locked:
RecycleCollectingSfx();
RecycleTreasureEffect();
RequestLockEffect();
+ RequestCondition();
break;
}
if (model.GetTreasureUnlockShow(UI3DTreasureSelectStage.Instance.currentCategory) == _treasure.id)
@@ -585,6 +593,78 @@
}
}
+ void RequestCondition()
+ {
+ RecycleCondition();
+
+ if (category != TreasureCategory.Human)
+ {
+ return;
+ }
+
+ string displayStr = string.Empty;
+ if (model.IsVersionUnOpenTreasure(treasureId))
+ {
+ displayStr = "=";
+ }
+ else
+ {
+ Achievement achievement = null;
+ var achievementId = 0;
+ var unlock = false;
+ if (model.TryGetTreasureUnlockAchievement(treasureId, out achievementId))
+ {
+ if (achievementModel.TryGetAchievement(achievementId, out achievement))
+ {
+ unlock = true;
+ }
+ }
+ if (unlock && !achievement.completed)
+ {
+ var _achievementConfig = Config.Instance.Get<SuccessConfig>(achievementId);
+ var _missionId = _achievementConfig.Condition[0];
+ var _taskConfig = Config.Instance.Get<PyTaskConfig>(_missionId);
+ if (_taskConfig == null)
+ {
+ return;
+ }
+ if (_achievementConfig.Type == 3)
+ {
+ displayStr = StringUtility.Contact(_taskConfig.lv, "+");
+ }
+ }
+ }
+
+ if (string.IsNullOrEmpty(displayStr))
+ {
+ return;
+ }
+
+ if (m_ConditionPool == null)
+ {
+ var _prefab = UILoader.LoadPrefab("TreasureCondition");
+ m_ConditionPool = GameObjectPoolManager.Instance.RequestPool(_prefab);
+ }
+ condition = m_ConditionPool.Request().GetComponent<TextMesh>();
+ condition.gameObject.SetActive(true);
+ condition.transform.SetParent(root);
+ condition.transform.localPosition = Vector3.zero;
+ condition.transform.LookAt(UI3DTreasureSelectStage.Instance.center);
+ condition.transform.localPosition = new Vector3(0, -1.75f, 0f);
+ condition.transform.localScale = new Vector3(-1, 1, 1);
+ condition.text = displayStr;
+ LayerUtility.SetLayer(condition.gameObject, LayerUtility.UILayer, true);
+ }
+
+ void RecycleCondition()
+ {
+ if (m_ConditionPool != null && condition != null)
+ {
+ m_ConditionPool.Release(condition.gameObject);
+ condition = null;
+ }
+ }
+
public Vector3 GetAdaptiveDistance(Vector3 _distance)
{
var normal = Constants.DESIGN_RESOLUTION.x / Constants.DESIGN_RESOLUTION.y;
@@ -617,6 +697,7 @@
RecycleBackLight();
RecycleLockEffect();
RecycleRedpoint();
+ RecycleCondition();
RequestSpecialEffect();
Treasure _treasure;
@@ -653,6 +734,7 @@
public void PlayUnlockShow()
{
RecycleLockEffect();
+ RecycleCondition();
try
{
var _effect = SFXPlayUtility.Instance.Play(category == TreasureCategory.Demon ? 5157 : 5132, treasureRoot);
--
Gitblit v1.8.0