//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Tuesday, April 09, 2019
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class HazyRegionDialogueWin : Window
|
{
|
[SerializeField] Button m_Skip;
|
[SerializeField] Button m_EmptyAccepter;
|
|
[SerializeField] Transform m_ContainerNpc;
|
[SerializeField] RawImage m_RawNpc;
|
[SerializeField] Text m_NpcName;
|
[SerializeField] Text m_NpcDialogue;
|
|
[SerializeField] Transform m_ContainerPlayer;
|
[SerializeField] RawImage m_RawPlayer;
|
[SerializeField] Text m_PlayerName;
|
[SerializeField] Text m_PlayerDialogue;
|
|
int dialogueIndex = 0;
|
|
public static int adventureDialogueId = 0;
|
|
public static event Action onDialogueComplete;
|
private float m_WaitForCloseTime = 0;
|
|
HazyRegionModel model { get { return ModelCenter.Instance.GetModel<HazyRegionModel>(); } }
|
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
m_EmptyAccepter.AddListener(OnClickEmpty);
|
m_Skip.AddListener(OnSkip);
|
}
|
|
protected override void OnPreOpen()
|
{
|
dialogueIndex = 0;
|
DisplayDialogue();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
|
}
|
protected override void OnPreClose()
|
{
|
UI3DModelExhibition.Instance.StopShow();
|
}
|
|
protected override void OnAfterClose()
|
{
|
if (!WindowCenter.Instance.IsOpen<MainInterfaceWin>())
|
{
|
WindowCenter.Instance.Open<MainInterfaceWin>();
|
}
|
}
|
|
protected override void LateUpdate()
|
{
|
GA_Hero _hero = PlayerDatas.Instance.hero;
|
if (_hero == null)
|
{
|
return;
|
}
|
|
if (_hero.LockTarget == null)
|
{
|
return;
|
}
|
|
float _chkDistSqrt = MathUtility.DistanceSqrtXZ(_hero.Pos, _hero.LockTarget.Pos);
|
if (_chkDistSqrt > Mathf.Pow(GeneralDefine.FarawayNpcDist, 2))
|
{
|
_hero.LockTarget = null;
|
Close();
|
}
|
|
if(model.auto)
|
{
|
m_WaitForCloseTime += Time.deltaTime;
|
if(m_WaitForCloseTime > 3)
|
{
|
m_WaitForCloseTime = 0;
|
OnClickEmpty();
|
}
|
}
|
}
|
|
#endregion
|
|
private void DisplayDialogue()
|
{
|
var config = AdventureDialogueConfig.Get(adventureDialogueId);
|
|
var speakType = config.speakType[dialogueIndex];
|
|
m_ContainerNpc.SetActive(speakType == 0);
|
m_ContainerPlayer.SetActive(speakType == 1);
|
|
switch (speakType)
|
{
|
case 1:
|
var job = PlayerDatas.Instance.baseData.Job;
|
UI3DModelExhibition.Instance.ShowPlayer(m_RawPlayer, job, true);
|
m_PlayerName.text = PlayerDatas.Instance.baseData.PlayerName;
|
m_PlayerDialogue.text = Language.Get(config.dialogues[dialogueIndex]);
|
break;
|
case 0:
|
var npcId = config.npcId;
|
var npcConfig = NPCConfig.Get(npcId);
|
m_NpcName.text = npcConfig.charName;
|
m_NpcDialogue.text = Language.Get(config.dialogues[dialogueIndex]);
|
var data = new UI3DNPCExhibitionData()
|
{
|
npcId = npcId,
|
isDialogue = true,
|
};
|
UI3DModelExhibition.Instance.ShowNPC(m_RawNpc, data);
|
break;
|
}
|
}
|
|
private void OnSkip()
|
{
|
Close();
|
if (onDialogueComplete != null)
|
{
|
onDialogueComplete();
|
}
|
}
|
|
private void OnClickEmpty()
|
{
|
var config = AdventureDialogueConfig.Get(adventureDialogueId);
|
|
if (dialogueIndex < config.dialogues.Length - 1)
|
{
|
dialogueIndex += 1;
|
DisplayDialogue();
|
}
|
else
|
{
|
Close();
|
if (onDialogueComplete != null)
|
{
|
onDialogueComplete();
|
}
|
}
|
}
|
}
|
}
|
|
|
|
|