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 mHpBarList = new List(); private List mJumpTextList = new List(); private Queue mJumpTextPool = new Queue(); 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(); 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(); 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); } }