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<JadeDynastyBossModel>(); }
|
}
|
|
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);
|
}
|
}
|
}
|
|