Initial commit
This commit is contained in:
173
Assets/Scripts/StatusDisplay.cs
Normal file
173
Assets/Scripts/StatusDisplay.cs
Normal file
@@ -0,0 +1,173 @@
|
||||
namespace Marro.PacManUdon
|
||||
{
|
||||
using UdonSharp;
|
||||
using UnityEngine;
|
||||
using VRC.SDKBase;
|
||||
using VRC.Udon;
|
||||
using TMPro;
|
||||
|
||||
public class StatusDisplay : UdonSharpBehaviour
|
||||
{
|
||||
[SerializeField] private Transform scoreDisplayGroup;
|
||||
[SerializeField] private TMP_Text label1UPText;
|
||||
[SerializeField] private TMP_Text score1UPText;
|
||||
[SerializeField] private TMP_Text labelHighScoreText;
|
||||
[SerializeField] private TMP_Text scoreHighScoreText;
|
||||
[SerializeField] private TMP_Text debugText;
|
||||
[SerializeField] private TMP_Text debugText2;
|
||||
[SerializeField] private TMP_Text gameOverText;
|
||||
[SerializeField] private TMP_Text player1Text;
|
||||
[SerializeField] private TMP_Text readyText;
|
||||
[SerializeField] private Transform levelDisplayDigitsContainer;
|
||||
[SerializeField] private Transform extraLifeIndicatorsContainer;
|
||||
|
||||
private Animator[] levelDisplayDigitAnimators;
|
||||
private Renderer[] levelDisplayDigitRenderers;
|
||||
private GameObject[] extraLifeIndicators;
|
||||
|
||||
|
||||
private bool label1UPVisible;
|
||||
private bool label1UPTextBlinking;
|
||||
private float labelBlinkToggleInterval = 0.26666667f;
|
||||
private float labelBlinkTimer;
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
// Level Display
|
||||
levelDisplayDigitAnimators = levelDisplayDigitsContainer.GetComponentsInChildren<Animator>();
|
||||
levelDisplayDigitRenderers = levelDisplayDigitsContainer.GetComponentsInChildren<Renderer>();
|
||||
|
||||
// Extra Lifes Display
|
||||
Transform[] extraLifeIndicatorTransforms = extraLifeIndicatorsContainer.GetComponentsInChildren<Transform>();
|
||||
extraLifeIndicators = new GameObject[extraLifeIndicatorTransforms.Length - 1];
|
||||
for (int i = 1; i < extraLifeIndicatorTransforms.Length; i++) // We skip the first found components as it is the container and not an actual indicator
|
||||
{
|
||||
extraLifeIndicators[i - 1] = extraLifeIndicatorTransforms[i].gameObject;
|
||||
}
|
||||
Debug.Log($"{gameObject} extraLifeIndicators.Length: {extraLifeIndicators.Length}");
|
||||
}
|
||||
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
SetLabel1UPTextBlinking(false);
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
if (label1UPTextBlinking)
|
||||
{
|
||||
labelBlinkTimer += Time.deltaTime;
|
||||
if (labelBlinkTimer > labelBlinkToggleInterval)
|
||||
{
|
||||
labelBlinkTimer -= labelBlinkToggleInterval;
|
||||
SetLabel1UPTextVisible(!label1UPVisible);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Set1UPScore(int score)
|
||||
{
|
||||
if (score == 0)
|
||||
{
|
||||
score1UPText.text = "00";
|
||||
}
|
||||
else
|
||||
{
|
||||
score1UPText.text = score.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public void SetHighScore(int score)
|
||||
{
|
||||
if (score == 0)
|
||||
{
|
||||
scoreHighScoreText.text = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
scoreHighScoreText.text = score.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public void SetDebugText(int debugTextLine, string text)
|
||||
{
|
||||
if (debugTextLine == 1)
|
||||
{
|
||||
debugText.text = text;
|
||||
}
|
||||
else if (debugTextLine == 2)
|
||||
{
|
||||
debugText2.text = text;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetScoreDisplayVisible(bool visible)
|
||||
{
|
||||
scoreDisplayGroup.gameObject.SetActive(visible);
|
||||
}
|
||||
|
||||
public void SetExtraLivesDisplayVisible(bool visible)
|
||||
{
|
||||
extraLifeIndicatorsContainer.gameObject.SetActive(visible);
|
||||
}
|
||||
|
||||
public void SetLevelDisplayVisible(bool visible)
|
||||
{
|
||||
foreach (Renderer renderer in levelDisplayDigitRenderers)
|
||||
{
|
||||
renderer.enabled = visible;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetGameOverTextVisible(bool visible)
|
||||
{
|
||||
gameOverText.gameObject.SetActive(visible);
|
||||
}
|
||||
|
||||
public void SetReadyTextVisible(bool visible)
|
||||
{
|
||||
readyText.gameObject.SetActive(visible);
|
||||
}
|
||||
|
||||
public void SetPlayer1TextVisible(bool visible)
|
||||
{
|
||||
player1Text.gameObject.SetActive(visible);
|
||||
}
|
||||
|
||||
void SetLabel1UPTextVisible(bool visible)
|
||||
{
|
||||
label1UPVisible = visible;
|
||||
label1UPText.gameObject.SetActive(visible);
|
||||
}
|
||||
|
||||
public void SetLabel1UPTextBlinking(bool blinking)
|
||||
{
|
||||
SetLabel1UPTextVisible(false);
|
||||
labelBlinkTimer = 0;
|
||||
label1UPTextBlinking = blinking;
|
||||
if (blinking == false)
|
||||
{
|
||||
SetLabel1UPTextVisible(true);
|
||||
}
|
||||
}
|
||||
|
||||
public bool SetExtraLives(int extraLives)
|
||||
{
|
||||
// Debug.Log($"{gameObject} SetExtraLives: {extraLives}");
|
||||
for (int extraLifeIndicatorIndex = 0; extraLifeIndicatorIndex < extraLifeIndicators.Length; extraLifeIndicatorIndex++)
|
||||
{
|
||||
extraLifeIndicators[extraLifeIndicatorIndex].SetActive(extraLifeIndicatorIndex < extraLives);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public void SetLevel(int level)
|
||||
{
|
||||
for (int i = 0; i < levelDisplayDigitAnimators.Length; i++)
|
||||
{
|
||||
levelDisplayDigitAnimators[i].SetFloat("FruitType", PacManConstants.FruitTypeToValue(PacManConstants.GetFruitTypeForLevel(level - i)));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user