//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Friday, December 07, 2018
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class FairyFeastTransmitShowWin : Window
|
{
|
GameObjectPoolManager.GameObjectPool m_PopUpNumPool;
|
|
List<ulong> m_PopExpQueue = new List<ulong>();
|
List<FairyTransmitPopUpExp> m_PopUpBehaviours = new List<FairyTransmitPopUpExp>();
|
|
float lastPopUpTime = 0f;
|
|
[SerializeField] Transform m_PopUpExpPoint;
|
[SerializeField] SmoothSlider m_Slider;
|
[SerializeField] Text m_Progress;
|
[SerializeField] float m_PopUpInterval = 0.1f;
|
[SerializeField] HeadUpName m_HeadUpHero;
|
[SerializeField] HeadUpName m_HeadUpPlayer;
|
|
FairyFeastModel model {
|
get { return ModelCenter.Instance.GetModel<FairyFeastModel>(); }
|
}
|
|
RoleParticularModel roleParticularModel {
|
get { return ModelCenter.Instance.GetModel<RoleParticularModel>(); }
|
}
|
|
int progressDisplay = 0;
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
}
|
|
protected override void OnPreOpen()
|
{
|
FairyFeastTransmitShow.Instance.popUpExpEvent += PopUpExpEvent;
|
m_Slider.ResetValue(0f);
|
DisplayHeadUpName();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
m_HeadUpHero.SyncPosition(true);
|
m_HeadUpPlayer.SyncPosition(true);
|
}
|
|
protected override void OnPreClose()
|
{
|
FairyFeastTransmitShow.Instance.popUpExpEvent -= PopUpExpEvent;
|
for (int i = 0; i < m_PopUpBehaviours.Count; i++)
|
{
|
ReleaseTransmitPopExp(m_PopUpBehaviours[i].gameObject);
|
}
|
m_PopUpBehaviours.Clear();
|
m_PopExpQueue.Clear();
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
protected override void LateUpdate()
|
{
|
var progress = Mathf.Clamp01(FairyFeastTransmitShow.Instance.progress);
|
m_Slider.value = progress;
|
if ((int)(progress * 100) != progressDisplay)
|
{
|
progressDisplay = (int)(progress * 100);
|
m_Progress.text = StringUtility.Contact(Language.Get("FeastTransmiting"),
|
progressDisplay, "%");
|
}
|
|
if (m_PopExpQueue.Count > 0)
|
{
|
if (Time.time - lastPopUpTime >= m_PopUpInterval)
|
{
|
lastPopUpTime = Time.time;
|
var exp = m_PopExpQueue[0];
|
m_PopExpQueue.RemoveAt(0);
|
PopUpExp(exp);
|
}
|
}
|
}
|
#endregion
|
|
private void DisplayHeadUpName()
|
{
|
m_HeadUpHero.pattern = HeadUpName.Pattern.Hero;
|
m_HeadUpHero.camera = FairyFeastTransmitShow.Instance.showCamera;
|
var hero = FairyFeastTransmitShow.Instance.hero;
|
if (hero != null)
|
{
|
m_HeadUpHero.target = hero.MP_Name;
|
}
|
m_HeadUpHero.offset = new Vector3(0, 0, 0);
|
var realmLevel = PlayerDatas.Instance.baseData.realmLevel;
|
var name = UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.PlayerName);
|
var familyName = UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.FamilyName);
|
m_HeadUpHero.SetPlayerInfo(new HeadUpName.PlayerInfo()
|
{
|
realm = realmLevel,
|
name = name,
|
alliance = familyName,
|
});
|
|
m_HeadUpHero.SyncPosition(true);
|
|
m_HeadUpPlayer.pattern = HeadUpName.Pattern.Player;
|
m_HeadUpPlayer.camera = FairyFeastTransmitShow.Instance.showCamera;
|
var player = FairyFeastTransmitShow.Instance.player;
|
if (player != null)
|
{
|
m_HeadUpPlayer.target = player.MP_Name;
|
}
|
m_HeadUpPlayer.offset = new Vector3(0, 0, 0);
|
var viewPlayerData = roleParticularModel.GetViewPlayerData((int)model.transmitPlayer);
|
if (viewPlayerData != null)
|
{
|
m_HeadUpPlayer.SetActive(true);
|
realmLevel = (byte)viewPlayerData.rolePropData.RealmLV;
|
name = UIHelper.ServerStringTrim(viewPlayerData.rolePropData.Name);
|
familyName = UIHelper.ServerStringTrim(viewPlayerData.rolePropData.FamilyName);
|
|
m_HeadUpPlayer.SetPlayerInfo(new HeadUpName.PlayerInfo()
|
{
|
realm = realmLevel,
|
name = name,
|
alliance = familyName,
|
});
|
}
|
else
|
{
|
m_HeadUpPlayer.SetActive(false);
|
}
|
}
|
|
private void PopUpExpEvent(ulong exp)
|
{
|
if (exp == 0)
|
{
|
return;
|
}
|
m_PopExpQueue.Add(exp);
|
}
|
|
private void PopUpExp(ulong exp)
|
{
|
var go = RequireTransmitPopExp();
|
if (go)
|
{
|
var popUpExp = go.GetComponent<FairyTransmitPopUpExp>();
|
popUpExp.transform.SetParent(m_PopUpExpPoint);
|
popUpExp.transform.localPosition = Vector3.zero;
|
popUpExp.transform.localEulerAngles = Vector3.zero;
|
popUpExp.transform.localScale = Vector3.one;
|
popUpExp.SetActive(true);
|
popUpExp.DisplayExp(exp);
|
popUpExp.onDie -= OnTransmitPopUpExpDie;
|
popUpExp.onDie += OnTransmitPopUpExpDie;
|
m_PopUpBehaviours.Add(popUpExp);
|
}
|
}
|
|
private void OnTransmitPopUpExpDie(FairyTransmitPopUpExp popUpExp)
|
{
|
if (m_PopUpBehaviours.Contains(popUpExp))
|
{
|
m_PopUpBehaviours.Remove(popUpExp);
|
}
|
ReleaseTransmitPopExp(popUpExp.gameObject);
|
}
|
|
GameObject RequireTransmitPopExp()
|
{
|
if (m_PopUpNumPool == null)
|
{
|
var prefab = UILoader.LoadPrefab("PopUpNum_FairyFeast");
|
if (prefab)
|
{
|
m_PopUpNumPool = GameObjectPoolManager.Instance.RequestPool(prefab);
|
}
|
}
|
if (m_PopUpNumPool != null)
|
{
|
return m_PopUpNumPool.Request();
|
}
|
return null;
|
}
|
|
void ReleaseTransmitPopExp(GameObject prefab)
|
{
|
prefab.SetActive(false);
|
if (m_PopUpNumPool != null)
|
{
|
m_PopUpNumPool.Release(prefab);
|
}
|
}
|
|
}
|
|
}
|
|
|
|
|