using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class JadeDynastyBossBehaviour : FindPreciousBossBriefInfoBehaviour { [SerializeField] Transform m_ContainerChallengeable; [SerializeField] Transform m_ContainerUnChanllgeable; [SerializeField] Text m_ChallengeCondition; [SerializeField] Transform m_ContainerAttention; [SerializeField] Text m_Participant; JadeDynastyBossModel model { get { return ModelCenter.Instance.GetModel(); } } public int bossNpcId { get; private set; } protected override int selectedBossId { get { return model.selectBossId; } set { model.selectBossId = value; } } protected override InteractorableState interactorableState { get { var selected = selectedBossId == bossId; var condition = 0; var dieOrLocked = !model.IsBossUnLocked(bossId, out condition) || !findPreciousModel.IsBossAlive(bossId); if (!dieOrLocked) { return selected ? InteractorableState.NormalSelected : InteractorableState.NormalUnSelected; } else { return selected ? InteractorableState.DieOrLockedSelected : InteractorableState.DieOrLockedUnSelected; } } set { base.interactorableState = value; } } protected override bool isRebornRightNow { get { var condition = 0; return model.IsBossUnLocked(bossId, out condition) && base.isRebornRightNow; } } protected override bool isUnLocked { get { var condition = 0; return model.IsBossUnLocked(bossId, out condition); } } public override void Display(object _data) { base.Display(_data); bossNpcId = (int)_data; DisplayBase(); UpdateBossRebornCoolDown(isUnLocked); UpdateBossPortrait(interactorableState); UpdateBossNameLevelFont(interactorableState); DisplayParticipant(); DisplayCondition(); DisplaySubscrib(); model.bossLineRefresh -= DisplayParticipant; model.bossLineRefresh += DisplayParticipant; model.selectBossRefresh -= SelectBossRefresh; model.selectBossRefresh += SelectBossRefresh; model.bossLineRefresh -= BossLineRefresh; model.bossLineRefresh += BossLineRefresh; } public override void Dispose() { base.Dispose(); model.bossLineRefresh -= DisplayParticipant; model.selectBossRefresh -= SelectBossRefresh; model.bossLineRefresh -= BossLineRefresh; } protected override void OnSubscribe(int _bossId) { base.OnSubscribe(_bossId); if (bossId != _bossId) { return; } DisplaySubscrib(); } protected override void OnBossInfoUpdate(int _bossId) { base.OnBossInfoUpdate(_bossId); var condition = 0; var unLocked = model.IsBossUnLocked(bossId, out condition); m_Participant.SetActive(unLocked && findPreciousModel.IsBossAlive(bossId)); } private void BossLineRefresh() { DisplayParticipant(); } public void DisplayBase() { var config = NPCConfig.Get(bossNpcId); var jadeDynastyBossConfig = JadeDynastyBossConfig.Get(bossNpcId); DrawBossBaseInfo(jadeDynastyBossConfig.PortraitID, config.charName, config.NPCLV, config.Realm); } private void DisplaySubscrib() { m_ContainerAttention.SetActive(findPreciousModel.IsBossSubscribed(bossId)); } private void DisplayParticipant() { m_Participant.SetActive(isUnLocked && findPreciousModel.IsBossAlive(bossId)); m_Participant.text = Language.Get("FindPrecious_8", model.GetParticipantCount(bossId)); } private void DisplayCondition() { m_ContainerUnChanllgeable.SetActive(!isUnLocked); m_ContainerChallengeable.SetActive(isUnLocked); var conditionCode = 0; JadeDynastyBossCondition condition; m_ChallengeCondition.text = string.Empty; if (!model.IsBossUnLocked(bossId, out conditionCode) && model.TryGetCondition(bossId, out condition)) { m_UnLockCondition.SetActive(conditionCode == 2); m_ContainerUnChanllgeable.SetActive(conditionCode == 1); switch (conditionCode) { case 1: m_ChallengeCondition.text = Language.Get("JadeDynastyBossCondition1", condition.level); break; case 2: //m_ChallengeCondition.text = Language.Get("JadeDynastyBossCondition2", // UIHelper.GetRealmName(condition.realmLevel, true)); break; } } } private void SelectBossRefresh(int bossId) { UpdateBossNameLevelFont(interactorableState); } } }