| | |
| | |
|
| | | public class TreasureCollectBriefInfoBehaviour : MonoBehaviour
|
| | | {
|
| | | [SerializeField] RectTransform m_NormalContainer;
|
| | | [SerializeField] Transform m_ContainerUnknown;
|
| | |
|
| | | [SerializeField] Transform m_ContainerCollect;
|
| | | [SerializeField] Image m_Icon;
|
| | | [SerializeField] Image m_TreasureName;
|
| | | [SerializeField] Text m_Progress;
|
| | | [SerializeField] Text m_Description;
|
| | | [SerializeField] Button m_Goto;
|
| | | [SerializeField] UIEffect m_ChallengeEffect;
|
| | | [SerializeField] UIEffect m_CastSoulEffect;
|
| | | [SerializeField] UIEffect m_CollectSoulEffect;
|
| | |
|
| | | [SerializeField] RectTransform m_AllCompletedContainer;
|
| | | [SerializeField] Transform m_ContainerCollecting;
|
| | | [SerializeField] Text m_Progress;
|
| | | [SerializeField] Slider m_TaskSlider;
|
| | |
|
| | | [SerializeField] Transform m_ContainerChallenge;
|
| | | [SerializeField] UIEffect m_ChallengeEffect;
|
| | |
|
| | | [SerializeField] Button m_Goto;
|
| | |
|
| | | bool dirty = false;
|
| | |
|
| | | int m_DisplayTreasureId = 0;
|
| | | int displayTreasureId
|
| | | {
|
| | | get { return m_DisplayTreasureId; }
|
| | | set
|
| | | {
|
| | | if (m_DisplayTreasureId != value)
|
| | | int m_DisplayId = 0;
|
| | | int displayId {
|
| | | get { return m_DisplayId; }
|
| | | set {
|
| | | if (m_DisplayId != value)
|
| | | {
|
| | | m_DisplayTreasureId = value;
|
| | | dirty = true;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | DisplayState m_DisplayState = DisplayState.None;
|
| | | DisplayState displayState
|
| | | {
|
| | | get { return m_DisplayState; }
|
| | | set
|
| | | {
|
| | | if (m_DisplayState != value)
|
| | | {
|
| | | m_DisplayState = value;
|
| | | dirty = true;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | int m_EffectState = 0;
|
| | | int effectState
|
| | | {
|
| | | get { return m_EffectState; }
|
| | | set
|
| | | {
|
| | | if (m_EffectState != value)
|
| | | {
|
| | | m_EffectState = value;
|
| | | m_DisplayId = value;
|
| | | dirty = true;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | TreasureModel model { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
|
| | | AchievementModel achievementModel { get { return ModelCenter.Instance.GetModel<AchievementModel>(); } }
|
| | |
|
| | | List<int> m_HumanTreasures;
|
| | | List<int> humanTreasures { get { return m_HumanTreasures ?? (m_HumanTreasures = model.GetTreasureCategory(TreasureCategory.Human)); } }
|
| | |
|
| | | public void Display()
|
| | | {
|
| | | displayTreasureId = 0;
|
| | | displayState = DisplayState.None;
|
| | | effectState = 0;
|
| | | dirty = true;
|
| | | UpdateDisplayState();
|
| | | DisplayTreasureInfo();
|
| | | displayId = GetLatestCollectingTreasure();
|
| | |
|
| | | m_Goto.RemoveAllListeners();
|
| | | m_Goto.AddListener(ViewTreasure);
|
| | | model.treasureStateChangeEvent += TreasureStateChangeEvent;
|
| | | model.treasureCollectProgressRefresh += TreasureCollectProgressRefresh;
|
| | |
|
| | | achievementModel.achievementAwardableEvent -= OnAchievementAwardable;
|
| | | achievementModel.achievementCompletedEvent -= OnAchievementCompleted;
|
| | | model.treasureStageUpEvent -= OnCastSoul;
|
| | | RedpointCenter.Instance.redpointValueChangeEvent -= OnRedpointUpdate;
|
| | | dirty = false;
|
| | | DisplayBase();
|
| | |
|
| | | achievementModel.achievementAwardableEvent += OnAchievementAwardable;
|
| | | achievementModel.achievementCompletedEvent += OnAchievementCompleted;
|
| | | model.treasureStageUpEvent += OnCastSoul;
|
| | | RedpointCenter.Instance.redpointValueChangeEvent += OnRedpointUpdate;
|
| | | m_Goto.SetListener(OnGoto);
|
| | | }
|
| | |
|
| | | private void TreasureStateChangeEvent(int id)
|
| | | {
|
| | | displayId = GetLatestCollectingTreasure();
|
| | | }
|
| | |
|
| | | private void TreasureCollectProgressRefresh(int id)
|
| | | {
|
| | | if (id == displayId)
|
| | | {
|
| | | DisplayProgress();
|
| | | }
|
| | | }
|
| | |
|
| | | void DisplayBase()
|
| | | {
|
| | | m_ContainerUnknown.gameObject.SetActive(displayId == 0);
|
| | | m_ContainerCollect.gameObject.SetActive(displayId != 0);
|
| | | if (displayId != 0)
|
| | | {
|
| | | DisplayTreasureInfo();
|
| | | DisplayProgress();
|
| | | }
|
| | | }
|
| | |
|
| | | void DisplayTreasureInfo()
|
| | | {
|
| | | if (displayId != 0)
|
| | | {
|
| | | var config = TreasureConfig.Get(displayId);
|
| | | m_Icon.SetSprite(config.Icon);
|
| | | m_TreasureName.SetSprite(config.NameIcon);
|
| | | m_TreasureName.SetNativeSize();
|
| | | }
|
| | | }
|
| | |
|
| | | void DisplayProgress()
|
| | | {
|
| | | m_ChallengeEffect.StopImediatly();
|
| | |
|
| | | if (displayId != 0)
|
| | | {
|
| | | var satisfyChallenge = model.SatisfyChallenge(displayId);
|
| | |
|
| | | m_ContainerChallenge.gameObject.SetActive(satisfyChallenge);
|
| | | m_ContainerCollecting.gameObject.SetActive(!satisfyChallenge);
|
| | | if (!satisfyChallenge)
|
| | | {
|
| | | var progress = 1f;
|
| | |
|
| | | List<int> tasks;
|
| | | if (model.TryGetTreasureTasks(displayId, out tasks))
|
| | | {
|
| | | var count = model.GetCompleteTaskCount(displayId);
|
| | | progress = Mathf.Clamp01((float)count / tasks.Count);
|
| | | }
|
| | |
|
| | | m_TaskSlider.value = progress;
|
| | | m_Progress.text = StringUtility.Contact((int)(progress * 100), "%");
|
| | | }
|
| | | else
|
| | | {
|
| | | m_ChallengeEffect.Play();
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | int GetLatestCollectingTreasure()
|
| | | {
|
| | | var treasureIds = model.GetTreasureCategory(TreasureCategory.Human);
|
| | | foreach (var id in treasureIds)
|
| | | {
|
| | | Treasure treasure;
|
| | | if (model.TryGetTreasure(id, out treasure))
|
| | | {
|
| | | if (treasure.state == TreasureState.Collecting)
|
| | | {
|
| | | return id;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | return 0;
|
| | | }
|
| | |
|
| | | bool IsAllCompleted()
|
| | | {
|
| | | var treasureIds = model.GetTreasureCategory(TreasureCategory.Human);
|
| | | foreach (var id in treasureIds)
|
| | | {
|
| | | Treasure treasure;
|
| | | if (model.TryGetTreasure(id, out treasure))
|
| | | {
|
| | | if (treasure.state != TreasureState.Collected)
|
| | | {
|
| | | return false;
|
| | | }
|
| | | }
|
| | | }
|
| | | return true;
|
| | | }
|
| | |
|
| | | private void LateUpdate()
|
| | | {
|
| | | if (dirty)
|
| | | {
|
| | | dirty = false;
|
| | | DisplayBase();
|
| | | }
|
| | | }
|
| | |
|
| | | public void Dispose()
|
| | | {
|
| | | m_Goto.RemoveAllListeners();
|
| | |
|
| | | achievementModel.achievementAwardableEvent -= OnAchievementAwardable;
|
| | | achievementModel.achievementCompletedEvent -= OnAchievementCompleted;
|
| | | model.treasureStageUpEvent -= OnCastSoul;
|
| | |
|
| | | RedpointCenter.Instance.redpointValueChangeEvent -= OnRedpointUpdate;
|
| | | model.treasureStateChangeEvent -= TreasureStateChangeEvent;
|
| | | model.treasureCollectProgressRefresh -= TreasureCollectProgressRefresh;
|
| | | }
|
| | |
|
| | | private void OnHumanTreasureStateChange(int _treasureId)
|
| | | private void OnGoto()
|
| | | {
|
| | | UpdateDisplayState();
|
| | | DisplayTreasureInfo();
|
| | | }
|
| | |
|
| | | private void OnAchievementAwardable(int _achievementId)
|
| | | {
|
| | | UpdateDisplayState();
|
| | | DisplayTreasureInfo();
|
| | | }
|
| | |
|
| | | private void OnAchievementCompleted(int _achievementId)
|
| | | {
|
| | | UpdateDisplayState();
|
| | | DisplayTreasureInfo();
|
| | | }
|
| | |
|
| | | private void OnCastSoul(int _treasureId)
|
| | | {
|
| | | UpdateDisplayState();
|
| | | DisplayTreasureInfo();
|
| | | }
|
| | |
|
| | | private void OnPotentialLevelChange(int _treasureId, int _potentialId)
|
| | | {
|
| | | UpdateDisplayState();
|
| | | DisplayTreasureInfo();
|
| | | }
|
| | |
|
| | | private void OnRedpointUpdate(int _redpointId)
|
| | | {
|
| | | if (_redpointId == 7001)
|
| | | if (displayId == 0)
|
| | | {
|
| | | UpdateDisplayState();
|
| | | DisplayTreasureInfo();
|
| | | }
|
| | | }
|
| | |
|
| | | private void UpdateDisplayState()
|
| | | {
|
| | | var treasureId = 0;
|
| | | if (displayState != DisplayState.PotentialUp && displayState != DisplayState.PotentialUpAble && displayState != DisplayState.AllCompleted)
|
| | | {
|
| | | treasureId = GetAwakenAbleTreasure();
|
| | | if (treasureId != 0)
|
| | | {
|
| | | this.displayTreasureId = treasureId;
|
| | | displayState = DisplayState.AwakenAble;
|
| | | effectState = 2;
|
| | | return;
|
| | | }
|
| | |
|
| | | treasureId = GetCanCollectSoulTreasure();
|
| | | if (treasureId != 0)
|
| | | {
|
| | | this.displayTreasureId = treasureId;
|
| | | displayState = DisplayState.CollectSoul;
|
| | | effectState = 3;
|
| | | return;
|
| | | }
|
| | |
|
| | | treasureId = GetCanChallengeTreasure();
|
| | | if (treasureId != 0)
|
| | | {
|
| | | this.displayTreasureId = treasureId;
|
| | | displayState = DisplayState.Challenge;
|
| | | effectState = 0;
|
| | | return;
|
| | | }
|
| | |
|
| | | treasureId = GetAwakenUnderwayTreasure1();
|
| | | if (treasureId != 0)
|
| | | {
|
| | | this.displayTreasureId = treasureId;
|
| | | displayState = DisplayState.AwakenUnderway;
|
| | | effectState = 0;
|
| | | return;
|
| | | }
|
| | |
|
| | | treasureId = GetNextChallengeTreasure();
|
| | | if (treasureId != 0)
|
| | | {
|
| | | this.displayTreasureId = treasureId;
|
| | | displayState = DisplayState.WaitUnLock;
|
| | | effectState = 0;
|
| | | return;
|
| | | }
|
| | | return;
|
| | | }
|
| | |
|
| | | if (displayState == DisplayState.None || displayState == DisplayState.PotentialUp || displayState == DisplayState.PotentialUpAble)
|
| | | {
|
| | | treasureId = GetPotentialUpAbleTreasure();
|
| | | if (treasureId != 0)
|
| | | {
|
| | | this.displayTreasureId = treasureId;
|
| | | displayState = DisplayState.PotentialUpAble;
|
| | | effectState = 0;
|
| | | return;
|
| | | }
|
| | |
|
| | | treasureId = GetPotentialUpTreasure(15);
|
| | | if (treasureId != 0)
|
| | | {
|
| | | this.displayTreasureId = treasureId;
|
| | | displayState = DisplayState.PotentialUp;
|
| | | effectState = 0;
|
| | | return;
|
| | | }
|
| | | }
|
| | |
|
| | | this.displayTreasureId = 0;
|
| | | displayState = DisplayState.AllCompleted;
|
| | | effectState = 0;
|
| | | }
|
| | |
|
| | | private void DisplayTreasureInfo()
|
| | | {
|
| | | if (dirty)
|
| | | {
|
| | | if (displayState == DisplayState.AllCompleted || displayTreasureId == 0)
|
| | | {
|
| | | m_NormalContainer.gameObject.SetActive(false);
|
| | | m_AllCompletedContainer.gameObject.SetActive(true);
|
| | | return;
|
| | | }
|
| | |
|
| | | if (!m_NormalContainer.gameObject.activeSelf)
|
| | | {
|
| | | m_NormalContainer.gameObject.SetActive(true);
|
| | | }
|
| | |
|
| | | if (m_AllCompletedContainer.gameObject.activeSelf)
|
| | | {
|
| | | m_AllCompletedContainer.gameObject.SetActive(false);
|
| | | }
|
| | |
|
| | | var config = TreasureConfig.Get(displayTreasureId);
|
| | | m_Icon.SetSprite(config.Icon);
|
| | | m_TreasureName.SetSprite(config.NameIcon);
|
| | | m_TreasureName.SetNativeSize();
|
| | |
|
| | | if (effectState == 1)
|
| | | {
|
| | | m_ChallengeEffect.Play();
|
| | | }
|
| | | else
|
| | | {
|
| | | m_ChallengeEffect.Stop();
|
| | | }
|
| | |
|
| | | if (effectState == 2)
|
| | | {
|
| | | m_CastSoulEffect.Play();
|
| | | }
|
| | | else
|
| | | {
|
| | | m_CastSoulEffect.Stop();
|
| | | }
|
| | |
|
| | | if (effectState == 3)
|
| | | {
|
| | | m_CollectSoulEffect.Play();
|
| | | }
|
| | | else
|
| | | {
|
| | | m_CollectSoulEffect.Stop();
|
| | | }
|
| | |
|
| | | Treasure treasure;
|
| | | model.TryGetTreasure(displayTreasureId, out treasure);
|
| | | var progress = 0f;
|
| | |
|
| | | switch (displayState)
|
| | | {
|
| | | case DisplayState.Challenge:
|
| | | DisplayProgress(false, progress);
|
| | | m_Description.text = Language.Get("FabaoState_Text_1");
|
| | | break;
|
| | | case DisplayState.AwakenAble:
|
| | | DisplayProgress(true, progress);
|
| | | m_Description.text = Language.Get("FabaoState_Text_2");
|
| | | break;
|
| | | case DisplayState.CollectSoul:
|
| | | DisplayProgress(true, progress);
|
| | | m_Description.text = Language.Get("FabaoState_Text_3");
|
| | | break;
|
| | | case DisplayState.AwakenUnderway:
|
| | | DisplayProgress(true, progress);
|
| | | //DisplayTreasureUpStage(treasure.GetStageId(treasure.level + 1));
|
| | | break;
|
| | | case DisplayState.WaitUnLock:
|
| | | //Achievement achievement = null;
|
| | | //var achievementId = 0;
|
| | | //if (model.TryGetTreasureUnlockAchievement(displayTreasureId, out achievementId))
|
| | | //{
|
| | | // if (achievementModel.TryGetAchievement(achievementId, out achievement))
|
| | | // {
|
| | | // var achievementConfig = SuccessConfig.Get(achievementId);
|
| | | // var missionId = achievementConfig.Condition[0];
|
| | | // var taskConfig = PyTaskConfig.Get(missionId);
|
| | | //
|
| | | // m_Description.text = Language.Get("FabaoState_Text_5", taskConfig.lv);
|
| | | // }
|
| | | //}
|
| | | //else
|
| | | //{
|
| | | // m_Description.text = Language.Get("FabaoState_Text_5");
|
| | | //}
|
| | | DisplayProgress(false, progress);
|
| | | break;
|
| | | case DisplayState.PotentialUpAble:
|
| | | DisplayProgress(false, progress);
|
| | | m_Description.text = Language.Get("FabaoState_Text_9");
|
| | | break;
|
| | | case DisplayState.PotentialUp:
|
| | | DisplayProgress(false, progress);
|
| | | m_Description.text = Language.Get("FabaoState_Text_6");
|
| | | break;
|
| | | case DisplayState.AllCompleted:
|
| | | DisplayProgress(false, progress);
|
| | | m_NormalContainer.gameObject.SetActive(false);
|
| | | m_AllCompletedContainer.gameObject.SetActive(true);
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | private void ViewTreasure()
|
| | | {
|
| | | WindowCenter.Instance.Close<MainInterfaceWin>();
|
| | | if (model.IsRequireUnlockAnim(TreasureCategory.Human) == displayTreasureId)
|
| | | if (model.IsRequireUnlockAnim(TreasureCategory.Human) == displayId)
|
| | | {
|
| | | model.treasureGotoId = displayTreasureId;
|
| | | model.treasureGotoId = displayId;
|
| | | model.currentCategory = TreasureCategory.Human;
|
| | | WindowCenter.Instance.Open<TreasureSelectWin>();
|
| | | }
|
| | | else
|
| | | {
|
| | | var config = TreasureConfig.Get(displayTreasureId);
|
| | | model.selectedTreasure = displayTreasureId;
|
| | | var config = TreasureConfig.Get(displayId);
|
| | | model.selectedTreasure = displayId;
|
| | | model.currentCategory = (TreasureCategory)config.Category;
|
| | | WindowCenter.Instance.Open<TreasureBaseWin>();
|
| | | }
|
| | | }
|
| | |
|
| | | private int GetCanChallengeTreasure()
|
| | | {
|
| | | for (int i = 0; i < humanTreasures.Count; i++)
|
| | | {
|
| | | Treasure treasure;
|
| | | if (model.TryGetTreasure(humanTreasures[i], out treasure))
|
| | | {
|
| | | if (treasure != null && treasure.state == TreasureState.Collecting)
|
| | | {
|
| | | return humanTreasures[i];
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | return 0;
|
| | | }
|
| | |
|
| | | private int GetAwakenAbleTreasure()
|
| | | {
|
| | | return 0;
|
| | | }
|
| | |
|
| | | private int GetCanCollectSoulTreasure()
|
| | | {
|
| | | return 0;
|
| | | }
|
| | |
|
| | | private int GetAwakenUnderwayTreasure1()
|
| | | {
|
| | | return 0;
|
| | | }
|
| | |
|
| | | private int GetNextChallengeTreasure()
|
| | | {
|
| | | for (int i = 0; i < humanTreasures.Count; i++)
|
| | | {
|
| | | Treasure treasure;
|
| | | if (model.TryGetTreasure(humanTreasures[i], out treasure))
|
| | | {
|
| | | if (treasure != null && treasure.state == TreasureState.Locked)
|
| | | {
|
| | | return humanTreasures[i];
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | return 0;
|
| | | }
|
| | |
|
| | | private int GetPotentialUpAbleTreasure()
|
| | | {
|
| | | return 0;
|
| | | }
|
| | |
|
| | | private int GetPotentialUpTreasure(int _lastPotentialLevel)
|
| | | {
|
| | | return 0;
|
| | | }
|
| | |
|
| | |
|
| | | private void DisplayProgress(bool _show, float _progress)
|
| | | {
|
| | | if (_show)
|
| | | {
|
| | | m_Progress.text = Language.Get("FabaoState_Text_4", Mathf.RoundToInt(_progress * 100f));
|
| | | }
|
| | | else
|
| | | {
|
| | | m_Progress.text = "";
|
| | | }
|
| | | }
|
| | |
|
| | | private void DisplayTreasureUpStage(int _stage)
|
| | | {
|
| | | var config = TreasureUpConfig.Get(_stage);
|
| | | if (config != null)
|
| | | {
|
| | | var json = JsonMapper.ToObject(config.DescriptionMainWin);
|
| | | var job = PlayerDatas.Instance.baseData.Job;
|
| | |
|
| | | if (json.Keys.Contains(job.ToString()))
|
| | | {
|
| | | m_Description.text = json[job.ToString()].ToString();
|
| | | }
|
| | | else
|
| | | {
|
| | | m_Description.text = json["0"].ToString();
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | enum DisplayState
|
| | | {
|
| | | None,
|
| | | Challenge,
|
| | | AwakenAble,//可觉醒
|
| | | CollectSoul,//可集魂
|
| | | AwakenUnderway,//觉醒进行中
|
| | | WaitUnLock,//等待解封
|
| | | PotentialUp,//潜力提升进行中
|
| | | PotentialUpAble,//潜力可提升
|
| | | AllCompleted,
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | |
|
| | | }
|
| | |
|
| | |
|