| | |
| | | [SerializeField] RectTransform m_ContainerUnGet;
|
| | | [SerializeField] RectTransform m_ContainerLockDetail;
|
| | | [SerializeField] PositionTween m_LockDetailPosTween;
|
| | | [SerializeField] ScrollerController m_Controller;
|
| | | [SerializeField] Button m_GetTreasureBtn;
|
| | | [SerializeField] RectTransform m_ContainerLockFunc;
|
| | | [SerializeField] RectTransform m_ContainerLockSkill;
|
| | | [SerializeField] RectTransform m_ContainerLockPrivilege;
|
| | | [SerializeField] Button m_PrivilegeLockBtn;
|
| | | [SerializeField] Button m_FuncLockBtn;
|
| | | [SerializeField] Button m_SkillLockBtn;
|
| | | [SerializeField] RectTransform m_ContainerLimit;
|
| | | [SerializeField] Text m_TreasureChallengeLimit;
|
| | | [SerializeField] Text m_TreasureStory;
|
| | |
| | | [SerializeField] TreasureProperty m_TreasureProperty;
|
| | | [SerializeField] TreasureMeridianBehaviour[] m_TreasureMeridians;
|
| | | [Header("Progress")]
|
| | | [SerializeField] RectTransform m_ContainerPropgress;
|
| | | [SerializeField] Image m_CurrentStageIcon;
|
| | | [SerializeField] Text m_TreasureLevelProgress;
|
| | | [SerializeField] Text m_TreasureStageDesc;
|
| | |
| | |
|
| | | public event Action OnLineStepComplete;
|
| | |
|
| | | public int beforePlayerLv = 0;
|
| | | int beforePlayerLv = 0;
|
| | |
|
| | | #region Built-in
|
| | | protected override void BindController()
|
| | |
| | | m_BackBtn.onClick.AddListener(OnBack);
|
| | | m_GetTreasureBtn.onClick.AddListener(OnGetTreasure);
|
| | | m_LevelUpBtn.onClick.AddListener(OnLevelUp);
|
| | | m_PrivilegeLockBtn.onClick.AddListener(OnStagePrivilegeClick);
|
| | | m_FuncLockBtn.onClick.AddListener(OnStageFuncClick);
|
| | | m_SkillLockBtn.onClick.AddListener(OnStageSkillClick);
|
| | | m_LeftBtn.onClick.AddListener(OnLeftBtn);
|
| | | m_RightBtn.onClick.AddListener(OnRightBtn);
|
| | | m_Controller.OnRefreshCell += OnRefreshCell;
|
| | | }
|
| | |
|
| | | protected override void OnPreOpen()
|
| | |
| | | model.treasureLevelProgressUpdateEvent += TreasureLevelProgressUpdateEvent;
|
| | | model.treasureSelectedEvent += TreasureSelectedEvent;
|
| | | model.treasureStageUpEvent += TreasureStageUpEvent;
|
| | | PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent;
|
| | | m_TreasureAnimation.OnStepComplete += OnStepComplete;
|
| | | RedpointCenter.Instance.redpointValueChangeEvent += RedpointValueChangeEvent;
|
| | | achievementModel.achievementCompletedEvent += AchievementCompletedEvent;
|
| | |
| | | PlayerTaskDatas.CardLevelChange -= CardLevelChange;
|
| | | model.treasureSelectedEvent -= TreasureSelectedEvent;
|
| | | model.treasureStageUpEvent -= TreasureStageUpEvent;
|
| | | PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= PlayerDataRefreshInfoEvent;
|
| | | m_TreasureAnimation.OnStepComplete -= OnStepComplete;
|
| | | RedpointCenter.Instance.redpointValueChangeEvent -= RedpointValueChangeEvent;
|
| | | achievementModel.achievementCompletedEvent -= AchievementCompletedEvent;
|
| | |
| | | }
|
| | | #endregion
|
| | |
|
| | | private void OnRefreshCell(ScrollerDataType type, CellView cell)
|
| | | {
|
| | | TreasureUnlockCell treasureUnlockCell = cell as TreasureUnlockCell;
|
| | | treasureUnlockCell.Display(model.selectedTreasure, cell.index);
|
| | | }
|
| | |
|
| | | private void TreasureStateChangeEvent(int _id)
|
| | | {
|
| | | Treasure _treasure;
|
| | | model.TryGetTreasure(_id, out _treasure);
|
| | | if (_id == model.selectedTreasure && _treasure != null
|
| | | && _treasure.state == TreasureState.Collecting)
|
| | | && _treasure.state == TreasureState.Collecting && model.serverInited)
|
| | | {
|
| | | UpdateStage();
|
| | | if (WindowCenter.Instance.CheckOpen<EffectToFaBaoWin>())
|
| | |
| | | {
|
| | | m_ContainerUnGet.gameObject.SetActive(false);
|
| | |
|
| | | if (m_Treasure.IsMaxStage() || _state == 2)
|
| | | if ((m_Treasure.IsHighestStage && FuncOpen.Instance.IsFuncOpen(82) |
| | | && model.GetSpAnim(m_Treasure.id)) || _state == 2)
|
| | | {
|
| | | if (_state != 2)
|
| | | {
|
| | |
| | | else
|
| | | {
|
| | | m_TreasureProperty.SetActive(true);
|
| | | model.SetSpAnim(m_Treasure.id);
|
| | | }
|
| | | m_TreasurePotential.Display(m_Treasure, _state);
|
| | | }
|
| | | else
|
| | | {
|
| | | m_ContainerLevelUp.gameObject.SetActive(true);
|
| | | m_ContainerPropgress.gameObject.SetActive(!m_Treasure.IsHighestStage);
|
| | | m_ContainerPotential.gameObject.SetActive(false);
|
| | | if (model.treasureEntranceShowId == model.selectedTreasure)
|
| | | {
|
| | |
| | | m_TreasureAnimation.OnStageLock(m_Treasure.GetStageIndex(m_Treasure.stage));
|
| | | }
|
| | | m_TreasureProperty.SetActive(m_Treasure.state == TreasureState.Collected);
|
| | | if (_state == 1 && m_Treasure.IsHighestStage
|
| | | && FuncOpen.Instance.IsFuncOpen(82) && !model.GetSpAnim(m_Treasure.id))
|
| | | {
|
| | | m_TreasureAnimation.step = TreasureAnimation.TreasureShowStep.FirstPotential;
|
| | | UpdateStage(2);
|
| | | return;
|
| | | }
|
| | | }
|
| | | m_TreasureAnimation.step = TreasureAnimation.TreasureShowStep.UnLock;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | private void PlayerDataRefreshInfoEvent(PlayerDataRefresh type)
|
| | | {
|
| | | if (type != PlayerDataRefresh.LV)
|
| | | {
|
| | | return;
|
| | | }
|
| | | if (m_Treasure != null && m_Treasure.state != TreasureState.Collected)
|
| | | {
|
| | | UpdateTreasureUnlockDetail();
|
| | | }
|
| | | else if (m_Treasure != null && m_Treasure.state == TreasureState.Collected)
|
| | | {
|
| | | if (m_TreasureAnimation.stepComplete && !model.treasureStepUpShow
|
| | | && !m_AchievementScroll.showing && !m_Treasure.IsMaxStage())
|
| | | {
|
| | | var _stage = m_Treasure.treasureStages[m_Treasure.StageCount - 1];
|
| | | if (beforePlayerLv < _stage.limitLevel && PlayerDatas.Instance.baseData.LV >= _stage.limitLevel)
|
| | | {
|
| | | DisplayAchievements(true);
|
| | | UpdateTreasureProgress();
|
| | | }
|
| | | }
|
| | | beforePlayerLv = PlayerDatas.Instance.baseData.LV;
|
| | | }
|
| | | }
|
| | |
|
| | | private void OnFuncStateChangeEvent(int _id)
|
| | | {
|
| | | if (_id == 126)
|
| | | if (_id == 82 && FuncOpen.Instance.IsFuncOpen(_id) && model.serverInited)
|
| | | {
|
| | | UpdateTreasureProgress();
|
| | | UpdateTreasureUnlockDetail();
|
| | | if (m_TreasureAnimation.stepComplete && m_Treasure.IsHighestStage
|
| | | && !model.GetSpAnim(m_Treasure.id))
|
| | | {
|
| | | m_TreasureAnimation.step = TreasureAnimation.TreasureShowStep.FirstPotential;
|
| | | UpdateStage(2);
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | private void UpdateTreasureUnlockDetail()
|
| | | {
|
| | | var _cfg = ConfigManager.Instance.GetTemplate<TreasureConfig>(model.selectedTreasure);
|
| | | var _funcCfg = ConfigManager.Instance.GetTemplate<FuncOpenLVConfig>(m_Treasure.unLockFunc);
|
| | | m_TreasureStory.text = _cfg.Story;
|
| | | m_ContainerLockFunc.gameObject.SetActive(_funcCfg != null);
|
| | | if (_funcCfg != null)
|
| | |
|
| | | m_Controller.Refresh();
|
| | | for (int i = 0; i < m_Treasure.treasureStages.Count; i++)
|
| | | {
|
| | | m_FuncLockBtn.image.SetSprite(_funcCfg.Icon);
|
| | | }
|
| | | var _skillCfg = ConfigManager.Instance.GetTemplate<SkillConfig>(m_Treasure.unLockSkill);
|
| | | m_ContainerLockSkill.gameObject.SetActive(_skillCfg != null);
|
| | | if (_skillCfg != null)
|
| | | {
|
| | | m_SkillLockBtn.image.SetSprite(_skillCfg.IconName);
|
| | | }
|
| | | var _privilegeCfg = ConfigManager.Instance.GetTemplate<TreasurePrivilegeConfig>(m_Treasure.unLockPrivilege);
|
| | | m_ContainerLockPrivilege.gameObject.SetActive(_privilegeCfg != null);
|
| | | if (_privilegeCfg != null)
|
| | | {
|
| | | var privilegeStage = m_Treasure.treasureStages[m_Treasure.StageCount - 1];
|
| | | if (FuncOpen.Instance.IsFuncOpen(126))
|
| | | var stage = m_Treasure.treasureStages[i];
|
| | | switch (stage.unlockType)
|
| | | {
|
| | | m_PrivilegeLockBtn.image.SetSprite(_privilegeCfg.Icon);
|
| | | case TreasureStageUnlock.Skill:
|
| | | case TreasureStageUnlock.Func:
|
| | | case TreasureStageUnlock.Treasure:
|
| | | m_Controller.AddCell(ScrollerDataType.Header, stage.stage);
|
| | | break;
|
| | | }
|
| | | else
|
| | | {
|
| | | m_PrivilegeLockBtn.image.SetSprite("UnKnowIcon");
|
| | | }
|
| | | m_PrivilegeLockBtn.image.SetNativeSize();
|
| | | }
|
| | | m_Controller.Restart();
|
| | |
|
| | | Achievement achievement = null;
|
| | | int _achievementId = 0;
|
| | |
| | | m_TreasureChallengeLimit.text = Language.Get("TreasureGetRequire", _taskConfig.lv);
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | private void OnStageSkillClick()
|
| | | {
|
| | | if (model.treasureStepUpShow)
|
| | | {
|
| | | return;
|
| | | }
|
| | | var _stage = m_Treasure.treasureStages.Find((x) =>
|
| | | {
|
| | | return x.unlockType == TreasureStageUnlock.Skill;
|
| | | });
|
| | | if (_stage != null)
|
| | | {
|
| | | OpenTreasureStageTip(_stage.stage,m_SkillLockBtn.transform as RectTransform);
|
| | | }
|
| | | }
|
| | |
|
| | | private void OnStageFuncClick()
|
| | | {
|
| | | if (model.treasureStepUpShow)
|
| | | {
|
| | | return;
|
| | | }
|
| | | var _stage = m_Treasure.treasureStages.Find((x) =>
|
| | | {
|
| | | return x.unlockType == TreasureStageUnlock.Func;
|
| | | });
|
| | | if (_stage != null)
|
| | | {
|
| | | OpenTreasureStageTip(_stage.stage,m_FuncLockBtn.transform as RectTransform);
|
| | | }
|
| | | }
|
| | |
|
| | | private void OnStagePrivilegeClick()
|
| | | {
|
| | | if (model.treasureStepUpShow)
|
| | | {
|
| | | return;
|
| | | }
|
| | | if (!FuncOpen.Instance.IsFuncOpen(126))
|
| | | {
|
| | | FuncOpen.Instance.ProcessorFuncErrorTip(126);
|
| | | return;
|
| | | }
|
| | | var _stage = m_Treasure.treasureStages.Find((x) =>
|
| | | {
|
| | | return x.unlockType == TreasureStageUnlock.Privilege;
|
| | | });
|
| | | if (_stage != null)
|
| | | {
|
| | | OpenTreasureStageTip(_stage.stage, m_PrivilegeLockBtn.transform as RectTransform);
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | {
|
| | | var config = ConfigManager.Instance.GetTemplate<TreasureConfig>(model.selectedTreasure);
|
| | | if (!m_Init || config == null || (TreasureCategory)config.Category != TreasureCategory.Human
|
| | | || m_Treasure.state != TreasureState.Collected || m_Treasure.IsMaxStage())
|
| | | || m_Treasure.state != TreasureState.Collected || m_Treasure.IsHighestStage)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
| | | model.SetTreasureStageShow(m_Treasure.id, -1);
|
| | | m_TreasureAnimation.OnStageLock(m_Treasure.GetStageIndex(m_Treasure.stage));
|
| | | }
|
| | | CheckGuide65();
|
| | | if (!m_Treasure.IsHighestStage)
|
| | | {
|
| | | CheckGuide65();
|
| | | }
|
| | | else if (FuncOpen.Instance.IsFuncOpen(82) && !model.GetSpAnim(m_Treasure.id))
|
| | | {
|
| | | m_TreasureAnimation.step = TreasureAnimation.TreasureShowStep.FirstPotential;
|
| | | UpdateStage(2);
|
| | | }
|
| | | break;
|
| | | case TreasureAnimation.TreasureShowStep.FirstUnLock:
|
| | | UpdateLevelUpSfx(false);
|
| | |
| | | {
|
| | | if (_win is TreasureNewStageWin)
|
| | | {
|
| | | if (m_Treasure.IsMaxStage())
|
| | | if (m_Treasure.IsHighestStage && FuncOpen.Instance.IsFuncOpen(82))
|
| | | {
|
| | | m_TreasureAnimation.step = TreasureAnimation.TreasureShowStep.FirstPotential;
|
| | | UpdateStage(2);
|
| | |
| | |
|
| | | private void RequestMeridianLine()
|
| | | {
|
| | | if (m_Treasure.IsMaxStage())
|
| | | if (m_Treasure.IsHighestStage && FuncOpen.Instance.IsFuncOpen(82))
|
| | | {
|
| | | return;
|
| | | }
|
| | |
| | | {
|
| | | case TreasureStageUnlock.Func:
|
| | | m_ContainerTip.gameObject.SetActive(true);
|
| | | var _funcConfig = ConfigManager.Instance.GetTemplate<FuncOpenLVConfig>(m_Treasure.unLockFunc);
|
| | | var _funcConfig = ConfigManager.Instance.GetTemplate<FuncOpenLVConfig>(stage.func);
|
| | | m_NewStageTip.text = StringUtility.Contact(Language.Get("TreasureGetNewFunc"),
|
| | | UIHelper.GetTextColorByItemColor(TextColType.Green, _funcConfig.Remark));
|
| | | break;
|
| | |
| | | case TreasureStageUnlock.Func:
|
| | | StartScreenShot();
|
| | | break;
|
| | | case TreasureStageUnlock.Privilege:
|
| | | case TreasureStageUnlock.Item:
|
| | | case TreasureStageUnlock.Property:
|
| | | WindowCenter.Instance.Open<TreasureNewStageWin>(true);
|
| | | break;
|
| | | case TreasureStageUnlock.Treasure:
|
| | | WindowJumpMgr.Instance.ClearJumpData();
|
| | | WindowCenter.Instance.Open<MainInterfaceWin>();
|
| | | CloseImmediately();
|
| | | break;
|
| | | }
|
| | | }
|
| | |
| | | m_TreasureStageDesc.text = Language.Get("TreasureLevelUpSkill", _funcCfg.Remark);
|
| | | m_CurrentStageIcon.SetSprite(_funcCfg.Icon);
|
| | | break;
|
| | | case TreasureStageUnlock.Privilege:
|
| | | var privilege = m_Treasure.treasureStages[m_Treasure.StageCount - 1];
|
| | | var _privilegeCfg = ConfigManager.Instance.GetTemplate<TreasurePrivilegeConfig>(_nextStage.privilege);
|
| | | if (!FuncOpen.Instance.IsFuncOpen(126))
|
| | | {
|
| | | m_CurrentStageIcon.SetSprite("UnKnowIcon");
|
| | | if (!FuncOpen.Instance.IsFuncOpen(126))
|
| | | {
|
| | | var funcConfig = ConfigManager.Instance.GetTemplate<FuncOpenLVConfig>(126);
|
| | | m_TreasureStageDesc.text = Language.Get("TreasurePrivilegeFuncLimit", funcConfig.LimitLV, funcConfig.Remark);
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | m_CurrentStageIcon.SetSprite(_privilegeCfg.Icon);
|
| | | if (PlayerDatas.Instance.baseData.LV >= _nextStage.limitLevel)
|
| | | {
|
| | | m_TreasureStageDesc.text = _privilegeCfg.Name;
|
| | | }
|
| | | else
|
| | | {
|
| | | m_TreasureStageDesc.text = Language.Get("TreasurePrivilege_Unlock", _nextStage.limitLevel);
|
| | | }
|
| | | }
|
| | | case TreasureStageUnlock.Item:
|
| | | var _itemConfig = ConfigManager.Instance.GetTemplate<ItemConfig>(_nextStage.item.id);
|
| | | m_CurrentStageIcon.SetSprite(_itemConfig.IconKey);
|
| | | m_TreasureStageDesc.text = Language.Get("TreasureLevelUpItem", _itemConfig.ItemName);
|
| | | break;
|
| | | case TreasureStageUnlock.Treasure:
|
| | | var _treasureConfig = ConfigManager.Instance.GetTemplate<TreasureConfig>(_nextStage.treasure);
|
| | | m_CurrentStageIcon.SetSprite(_treasureConfig.Icon);
|
| | | m_TreasureStageDesc.text = Language.Get("TreasureLevelUpTreasure", _treasureConfig.Name);
|
| | | break;
|
| | | }
|
| | | }
|