using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
public class HazyRegionIncidentBehaviour : ScrollItem
|
{
|
[SerializeField] UIAlphaTween m_AlphaTween;
|
[SerializeField] UILinerMove m_LinerMove;
|
[SerializeField] Text m_IncidentTitle;
|
[SerializeField] Text m_DepletionPoint;
|
[SerializeField] Image m_Icon;
|
|
[SerializeField] Transform m_ContainerCrossServer;
|
|
[SerializeField] Transform m_ContainerItem;
|
[SerializeField] ItemBehaviour[] m_Items;
|
[SerializeField] Text[] m_ItemDescriptions;
|
|
[SerializeField] Transform m_ContainerProcessing;
|
[SerializeField] Transform m_ContainerCompleted;
|
|
[SerializeField] Transform m_ContainerSelect;
|
[SerializeField] Button m_Select;
|
|
[Header("Boss")]
|
[SerializeField] Transform m_ContainerBoss;
|
[SerializeField] Text m_BossName;
|
[SerializeField] Text m_PlayerCount;
|
[SerializeField] Text m_RebornTime;
|
|
public UIAlphaTween alphaTween { get { return m_AlphaTween; } }
|
public UILinerMove linerMove { get { return m_LinerMove; } }
|
|
HazyRegionModel model { get { return ModelCenter.Instance.GetModel<HazyRegionModel>(); } }
|
|
int incidentId = 0;
|
|
HazyRegionIncidentType incidentType = HazyRegionIncidentType.Adventure;
|
|
private void Awake()
|
{
|
m_Select.SetListener(OnSelect);
|
}
|
|
public override void Display(object _data)
|
{
|
base.Display(_data);
|
|
incidentId = (int)_data;
|
var config = HazyRegionConfig.Get(incidentId);
|
incidentType = (HazyRegionIncidentType)config.incidentType;
|
|
DisplayBase();
|
DisplayItems();
|
DisplayState();
|
DisplaySelect();
|
DisplayBoss();
|
|
model.selectIncidentRefresh -= SelectIncidentRefresh;
|
model.selectIncidentRefresh += SelectIncidentRefresh;
|
model.onHazyRegionIncidentRefresh -= OnHazyRegionIncidentRefresh;
|
model.onHazyRegionIncidentRefresh += OnHazyRegionIncidentRefresh;
|
}
|
|
void DisplayBase()
|
{
|
var config = HazyRegionConfig.Get(incidentId);
|
m_DepletionPoint.text = Language.Get("HazyRegionPoint", config.point);
|
m_IncidentTitle.text = config.name;
|
m_Icon.SetSprite(config.PortraitID);
|
m_Icon.SetNativeSize();
|
m_ContainerCrossServer.gameObject.SetActive(config.crossServer == 1);
|
}
|
|
void DisplayItems()
|
{
|
var config = HazyRegionConfig.Get(incidentId);
|
for (int i = 0; i < m_Items.Length; i++)
|
{
|
if (config.reward != null && i < config.reward.Length)
|
{
|
m_Items[i].gameObject.SetActive(true);
|
m_Items[i].SetItem(config.reward[i], 1);
|
m_ItemDescriptions[i].gameObject.SetActive(true);
|
m_ItemDescriptions[i].text = config.rewardState[i] == 0 ? string.Empty :
|
Language.Get(StringUtility.Contact("HazyRegionItemState_", config.rewardState[i]));
|
}
|
else
|
{
|
m_Items[i].gameObject.SetActive(false);
|
m_ItemDescriptions[i].gameObject.SetActive(false);
|
}
|
}
|
}
|
|
void DisplayBoss()
|
{
|
m_ContainerBoss.gameObject.SetActive(incidentType == HazyRegionIncidentType.DemonKing);
|
var config = HazyRegionConfig.Get(incidentId);
|
if (incidentType == HazyRegionIncidentType.DemonKing)
|
{
|
var npcConfig = NPCConfig.Get(config.npcId);
|
m_BossName.text = npcConfig.charName;
|
}
|
|
DisplayBossState();
|
}
|
|
void DisplayBossState()
|
{
|
if (incidentType == HazyRegionIncidentType.DemonKing)
|
{
|
if (model.InFakeHazyRegion)
|
{
|
var fighting = ClientDungeonStageUtility.isClientDungeon;
|
m_PlayerCount.gameObject.SetActive(true);
|
m_RebornTime.gameObject.SetActive(false);
|
m_PlayerCount.text = Language.Get("HazyDemonKingPlayerCount", fighting ? 1 : 0);
|
}
|
else
|
{
|
m_PlayerCount.gameObject.SetActive(false);
|
m_RebornTime.gameObject.SetActive(false);
|
}
|
}
|
}
|
|
void DisplayState()
|
{
|
HazyRegionModel.Incident incident;
|
if (model.TryGetIncident(incidentId, out incident))
|
{
|
m_ContainerCompleted.gameObject.SetActive(incident.state == HazyRegionModel.IncidentState.Complete);
|
m_ContainerProcessing.gameObject.SetActive(incident.state == HazyRegionModel.IncidentState.Processing);
|
}
|
}
|
|
void DisplaySelect()
|
{
|
m_ContainerSelect.gameObject.SetActive(incidentId == model.selectIncident);
|
}
|
|
private void SelectIncidentRefresh()
|
{
|
DisplaySelect();
|
}
|
|
private void OnHazyRegionIncidentRefresh()
|
{
|
DisplayState();
|
}
|
|
private void OnSelect()
|
{
|
model.selectIncident = incidentId;
|
}
|
|
public override void Dispose()
|
{
|
base.Dispose();
|
model.selectIncidentRefresh -= SelectIncidentRefresh;
|
model.onHazyRegionIncidentRefresh -= OnHazyRegionIncidentRefresh;
|
}
|
}
|
}
|