142 lines
3.5 KiB
C#
142 lines
3.5 KiB
C#
using UnityEngine;
|
|
using OHM.UnityToolkit.Pooling;
|
|
using OHM.UnityToolkit.UI;
|
|
using UnityEngine.Serialization;
|
|
|
|
public class UICoreGame : UIMenu
|
|
{
|
|
[SerializeField]
|
|
private UIIncrementableCounter level;
|
|
|
|
[SerializeField]
|
|
[FormerlySerializedAs("score")]
|
|
private UIIncrementableCounter _score;
|
|
|
|
[SerializeField]
|
|
[FormerlySerializedAs("poppingStatusPrefab")]
|
|
private SizePrefabUI _poppingStatusPrefab;
|
|
|
|
[SerializeField]
|
|
[FormerlySerializedAs("poppingGainPrefab")]
|
|
private UIIncrementableCounter _poppingGainPrefab;
|
|
|
|
[SerializeField]
|
|
[FormerlySerializedAs("poppingLosePrefab")]
|
|
private UIIncrementableCounter _poppingLosePrefab;
|
|
|
|
[SerializeField]
|
|
[FormerlySerializedAs("reuseSizeUpDelay")]
|
|
private float _reuseSizeUpDelay;
|
|
|
|
[SerializeField]
|
|
private Transform spawnCont;
|
|
|
|
[SerializeField]
|
|
[FormerlySerializedAs("quitConfirmPopup")]
|
|
private UIConfirmPopup _quitConfirmPopup;
|
|
|
|
private SizePrefabUI _sizeTxt;
|
|
|
|
private UIIncrementableCounter _poppingSizeUp;
|
|
|
|
private float _sizeUpTime;
|
|
|
|
private float _sizeUpValue;
|
|
|
|
private UIIncrementableCounter _poppingSizeDown;
|
|
|
|
private float _sizeDownTime;
|
|
|
|
private float _sizeDownValue;
|
|
|
|
public override void OnSetup()
|
|
{
|
|
appController.coreGame.scoreController.onScore.AddListener(OnScore);
|
|
}
|
|
|
|
public override void Show()
|
|
{
|
|
base.Show();
|
|
CleanUI();
|
|
level.SetTargetValue(appController.GetPlayerLevel() + 1);
|
|
_score.Init(appController.coreGame.scoreController.Score);
|
|
appController.coreGame.CurrentPlayer.richManagePlayer.VisualPlayerRichPoor.onChangeStatus += OnChangeStatus;
|
|
appController.coreGame.CurrentPlayer.richManagePlayer.onChangeMoney += OnChangeMoney;
|
|
}
|
|
|
|
private void OnScore(int s, Transform obj, ScoreController.ScoreType type)
|
|
{
|
|
_score.SetTargetValue(appController.coreGame.scoreController.Score);
|
|
}
|
|
|
|
private void OnChangeStatus(TypeRich typeRich, Color color)
|
|
{
|
|
SizePrefabUI popup = UnityEngine.Object.Instantiate(_poppingStatusPrefab, spawnCont);
|
|
if (popup != null)
|
|
{
|
|
popup.SetText(typeRich.locKey, color);
|
|
}
|
|
}
|
|
|
|
private void CleanUI()
|
|
{
|
|
if (_sizeTxt != null)
|
|
{
|
|
UnityEngine.Object.DestroyImmediate(_sizeTxt.gameObject);
|
|
}
|
|
if (_poppingSizeUp != null)
|
|
{
|
|
UnityEngine.Object.DestroyImmediate(_poppingSizeUp.gameObject);
|
|
}
|
|
if (_poppingSizeDown != null)
|
|
{
|
|
UnityEngine.Object.DestroyImmediate(_poppingSizeDown.gameObject);
|
|
}
|
|
foreach (Transform child in spawnCont)
|
|
{
|
|
UnityEngine.Object.DestroyImmediate(child.gameObject);
|
|
}
|
|
}
|
|
|
|
private void OnChangeMoney(float value)
|
|
{
|
|
if (value > 0f)
|
|
{
|
|
if (Time.time > _sizeUpTime || _poppingSizeUp == null)
|
|
{
|
|
_sizeUpValue = 0f;
|
|
_poppingSizeUp = PoolsManager.InstantiatePrefab(_poppingGainPrefab, spawnCont, spawnCont.position, Quaternion.identity);
|
|
}
|
|
_sizeUpValue += value;
|
|
_poppingSizeUp.SetTargetValue((long)_sizeUpValue);
|
|
_poppingSizeUp.gameObject.SetActive(value: true);
|
|
_sizeUpTime = Time.time + _reuseSizeUpDelay;
|
|
}
|
|
else if (value < 0f)
|
|
{
|
|
if (Time.time > _sizeDownTime || _poppingSizeDown == null)
|
|
{
|
|
_sizeDownValue = 0f;
|
|
_poppingSizeDown = PoolsManager.InstantiatePrefab(_poppingLosePrefab, spawnCont, spawnCont.position, Quaternion.identity);
|
|
}
|
|
_sizeDownValue += value;
|
|
_poppingSizeDown.SetTargetValue((long)System.Math.Abs(_sizeDownValue));
|
|
_poppingSizeDown.gameObject.SetActive(value: true);
|
|
_sizeDownTime = Time.time + _reuseSizeUpDelay;
|
|
}
|
|
}
|
|
|
|
public void TryQuit()
|
|
{
|
|
Time.timeScale = 0f;
|
|
_quitConfirmPopup.Show(delegate
|
|
{
|
|
Time.timeScale = 1f;
|
|
appController.Quit();
|
|
}, delegate
|
|
{
|
|
Time.timeScale = 1f;
|
|
});
|
|
}
|
|
}
|