mergemilitary/Assets/Scripts/UIs/PanelGame.cs

144 lines
3.8 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class PanelGame : BasePanel
{
[SerializeField] Transform mCtnHp;
[SerializeField] Transform mCtnJumpText;
[SerializeField] Text mTxtSpeed;
[SerializeField] Button mBtnSpeed;
[SerializeField] Text mTxtInkPercent;
[SerializeField] Image mImgInkPercent;
[SerializeField] GameObject mGobX1;
[SerializeField] GameObject mGobX2;
[SerializeField] GameObject mTplHudHp;
[SerializeField] GameObject mTplHudJumpText;
private List<HudHp> mHpBarList = new List<HudHp>();
private List<HUDJumpText> mJumpTextList = new List<HUDJumpText>();
private Queue<HUDJumpText> mJumpTextPool = new Queue<HUDJumpText>();
private void Awake()
{
UIUtils.BindBtn(mBtnSpeed, OnClickSpeed);
}
private void Update()
{
for (int i = 0; i < mHpBarList.Count; i++)
{
if (mHpBarList[i].gameObject.activeInHierarchy)
{
mHpBarList[i].Refresh();
}
}
for (int i = 0; i < mJumpTextList.Count; i++)
{
if (mJumpTextList[i].gameObject.activeInHierarchy)
{
mJumpTextList[i].Refresh();
}
}
}
public override void OnOpen()
{
base.OnOpen();
if (!GameConfig.Instance.IsDebug)
{
mBtnSpeed.gameObject.SetActive(PlayerData.Instance.CurrentLevel >= 3);
}
SetSpeedDisplay();
}
public override void OnClose()
{
base.OnClose();
GameManager.Instance.GameSpeed = 1;
}
public HudHp CreateHudHp(Transform pOwnerTrans, float pHOffset, bool pIsRed, float pScale = 1)
{
HudHp tHp = Instantiate(mTplHudHp, mCtnHp).GetComponent<HudHp>();
tHp.gameObject.SetActive(true);
Utils.NormalizeGameObject(tHp.gameObject);
tHp.Init(pOwnerTrans, UIManager.Instance.UICanvas, Camera.main, pHOffset);
tHp.InitHp(pIsRed, pScale);
mHpBarList.Add(tHp);
return tHp;
}
public void CreateHudJumpText(Transform pOwnerTrans, float pHOffset, string pText, Color pColor, int pFontSize)
{
HUDJumpText tJumpText = SpawnJumpText();
tJumpText.gameObject.SetActive(true);
Utils.NormalizeGameObject(tJumpText.gameObject);
tJumpText.Init(pOwnerTrans, UIManager.Instance.UICanvas, Camera.main, pHOffset);
tJumpText.ShowText(pText, pColor, pFontSize);
mJumpTextList.Add(tJumpText);
}
private HUDJumpText SpawnJumpText()
{
if (mJumpTextPool.Count > 0)
{
return mJumpTextPool.Dequeue();
}
HUDJumpText tJumpText = Instantiate(mTplHudJumpText, mCtnJumpText).GetComponent<HUDJumpText>();
tJumpText.DelDestroy = RecycleJumpText;
return tJumpText;
}
private void RecycleJumpText(HUDBase pHud)
{
HUDJumpText tJumpText = pHud as HUDJumpText;
if (mJumpTextList.Contains(tJumpText))
{
mJumpTextList.Remove(tJumpText);
}
tJumpText.gameObject.SetActive(false);
mJumpTextPool.Enqueue(tJumpText);
}
private void SetSpeedDisplay()
{
mTxtSpeed.text = "x " + GameManager.Instance.GameSpeed;
mGobX1.SetActive(GameManager.Instance.GameSpeed == 1);
mGobX2.SetActive(GameManager.Instance.GameSpeed == 2);
}
private void OnClickSpeed()
{
GameManager.Instance.GameSpeed = GameManager.Instance.GameSpeed == 1 ? 2 : 1;
SetSpeedDisplay();
if (GameManager.Instance.GameSpeed == 2)
{
TKGSDKManager.Instance.LogEvent(Const.AdsEvent.SpeedUp, Const.AdsKey.Level, PlayerData.Instance.CurrentLevel.ToString());
}
}
//for debug
public void ShowSpeedBtn(bool pShow)
{
mBtnSpeed.gameObject.SetActive(pShow);
}
}