maint: added livewatch asset

This commit is contained in:
Chris
2025-08-31 18:14:07 -04:00
parent 7f5d95787b
commit ae2371a6fa
385 changed files with 150792 additions and 0 deletions

View File

@@ -0,0 +1,74 @@
using System;
using System.Collections;
using UnityEngine;
using UnityEngine.Serialization;
using UnityEngine.UI;
namespace Ingvar.LiveWatch.TowerDefenceDemo.UI
{
public class EnergyPanelUI : MonoBehaviour
{
[SerializeField] private float _animationExtraScale = 0.2f;
[SerializeField] private float _animationScaleDuration = 0.2f;
[SerializeField] private Text _energyText;
private LevelScene _levelScene;
private void Awake()
{
_levelScene = FindObjectOfType<LevelScene>();
}
private void OnEnable()
{
_levelScene.EnergyManager.EnergyChanged += OnEnergyChanged;
RefreshEnergy(false);
}
private void OnDisable()
{
_levelScene.EnergyManager.EnergyChanged -= OnEnergyChanged;
}
private void OnEnergyChanged()
{
RefreshEnergy();
}
private void RefreshEnergy(bool animate = true)
{
_energyText.text = $"{_levelScene.EnergyManager.CurrentEnergy}";
if (animate)
{
StopAllCoroutines();
StartCoroutine(AnimateChange());
}
}
private IEnumerator AnimateChange()
{
_energyText.transform.localScale = Vector3.one;
var zoomOutTime = 0f;
while (zoomOutTime <= _animationScaleDuration)
{
yield return new WaitForEndOfFrame();
zoomOutTime += Time.deltaTime;
var progress = Mathf.Clamp01(Mathf.InverseLerp(0, _animationScaleDuration, zoomOutTime));
_energyText.transform.localScale = (1 + progress * _animationExtraScale) * Vector3.one;
}
var zoomInTime = 0f;
while (zoomInTime <= _animationScaleDuration)
{
yield return new WaitForEndOfFrame();
zoomInTime += Time.deltaTime;
var progress = Mathf.Clamp01(Mathf.InverseLerp(0, _animationScaleDuration, zoomInTime));
_energyText.transform.localScale = (1 + _animationExtraScale - progress * _animationExtraScale) * Vector3.one;
}
_energyText.transform.localScale = Vector3.one;
}
}
}

View File

@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 9797888ece1d48379a82c2d289de9991
timeCreated: 1725995747
AssetOrigin:
serializedVersion: 1
productId: 324001
packageName: LiveWatch Lite | Debug with full history of changes
packageVersion: 1.0.1
assetPath: Assets/LiveWatchLite/TowerDefenceDemo/Scripts/UI/EnergyPanelUI.cs
uploadId: 770587

View File

@@ -0,0 +1,73 @@
using System;
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
namespace Ingvar.LiveWatch.TowerDefenceDemo.UI
{
public class HealthPanelUI : MonoBehaviour
{
[SerializeField] private float animationExtraScale = 0.2f;
[SerializeField] private float animationScaleDuration = 0.2f;
[SerializeField] private Text healthText;
private LevelScene _levelScene;
private void Awake()
{
_levelScene = FindObjectOfType<LevelScene>();
}
private void OnEnable()
{
_levelScene.HealthManager.HealthChanged += OnHealthChanged;
RefreshHealth(false);
}
private void OnDisable()
{
_levelScene.HealthManager.HealthChanged -= OnHealthChanged;
}
private void OnHealthChanged()
{
RefreshHealth();
}
private void RefreshHealth(bool animate = true)
{
healthText.text = $"{_levelScene.HealthManager.CurrentHealth}";
if (animate)
{
StopAllCoroutines();
StartCoroutine(AnimateChange());
}
}
private IEnumerator AnimateChange()
{
healthText.transform.localScale = Vector3.one;
var zoomOutTime = 0f;
while (zoomOutTime <= animationScaleDuration)
{
yield return new WaitForEndOfFrame();
zoomOutTime += Time.deltaTime;
var progress = Mathf.Clamp01(Mathf.InverseLerp(0, animationScaleDuration, zoomOutTime));
healthText.transform.localScale = (1 + progress * animationExtraScale) * Vector3.one;
}
var zoomInTime = 0f;
while (zoomInTime <= animationScaleDuration)
{
yield return new WaitForEndOfFrame();
zoomInTime += Time.deltaTime;
var progress = Mathf.Clamp01(Mathf.InverseLerp(0, animationScaleDuration, zoomInTime));
healthText.transform.localScale = (1 + animationExtraScale - progress * animationExtraScale) * Vector3.one;
}
healthText.transform.localScale = Vector3.one;
}
}
}

View File

@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 0185bc50567c4c2fb9c6a083dba272c0
timeCreated: 1725809360
AssetOrigin:
serializedVersion: 1
productId: 324001
packageName: LiveWatch Lite | Debug with full history of changes
packageVersion: 1.0.1
assetPath: Assets/LiveWatchLite/TowerDefenceDemo/Scripts/UI/HealthPanelUI.cs
uploadId: 770587

View File

@@ -0,0 +1,58 @@
using System;
using UnityEngine;
using UnityEngine.UI;
namespace Ingvar.LiveWatch.TowerDefenceDemo.UI
{
public class LevelFinishPanelUI : MonoBehaviour
{
[SerializeField] private CanvasGroup panelBase;
[SerializeField] private Text statusText;
[SerializeField] private Button restartButton;
private LevelScene _levelScene;
private void Awake()
{
_levelScene = FindObjectOfType<LevelScene>();
}
private void OnEnable()
{
restartButton.onClick.AddListener(OnRestartButtonClicked);
_levelScene.LevelStateManager.StateChanged += LevelStateManagerOnStateChanged;
SetShown(false);
}
private void OnDisable()
{
restartButton.onClick.RemoveListener(OnRestartButtonClicked);
_levelScene.LevelStateManager.StateChanged -= LevelStateManagerOnStateChanged;
}
private void LevelStateManagerOnStateChanged()
{
if (_levelScene.LevelStateManager.CurrentState is not LevelStateType.Win and not LevelStateType.Lose)
return;
SetShown(true);
statusText.text = _levelScene.LevelStateManager.CurrentState == LevelStateType.Win
? "YOU WON"
: "YOU LOST";
}
private void OnRestartButtonClicked()
{
SetShown(false);
_levelScene.LevelStateManager.StartLevel();
}
private void SetShown(bool isOn)
{
panelBase.alpha = isOn ? 1 : 0;
panelBase.blocksRaycasts = isOn;
}
}
}

View File

@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: fa255261a4664bb8b36eb5d6d0bfc246
timeCreated: 1725821124
AssetOrigin:
serializedVersion: 1
productId: 324001
packageName: LiveWatch Lite | Debug with full history of changes
packageVersion: 1.0.1
assetPath: Assets/LiveWatchLite/TowerDefenceDemo/Scripts/UI/LevelFinishPanelUI.cs
uploadId: 770587

View File

@@ -0,0 +1,57 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Ingvar.LiveWatch.TowerDefenceDemo.UI
{
public class SpeedPanelUI : MonoBehaviour
{
[SerializeField] private List<SpeedToggle> _speedToggles;
private LevelScene _levelScene;
private void Awake()
{
_levelScene = FindObjectOfType<LevelScene>();
}
private void OnEnable()
{
_levelScene.SpeedManager.SpeedChanged += RefreshToggles;
foreach (var speedToggle in _speedToggles)
speedToggle.Toggle.onValueChanged.AddListener((isOn) => OnToggleChanged(speedToggle, isOn));
RefreshToggles();
}
private void OnDisable()
{
_levelScene.SpeedManager.SpeedChanged -= RefreshToggles;
foreach (var speedToggle in _speedToggles)
speedToggle.Toggle.onValueChanged.RemoveAllListeners();
}
private void RefreshToggles()
{
foreach (var speedToggle in _speedToggles)
speedToggle.Toggle.SetIsOnWithoutNotify(speedToggle.Speed == _levelScene.SpeedManager.CurrentSpeed);
}
private void OnToggleChanged(SpeedToggle speedToggle, bool isOn)
{
if (!isOn)
return;
_levelScene.SpeedManager.SetGameSpeed(speedToggle.Speed);
}
[Serializable]
private class SpeedToggle
{
public Toggle Toggle;
public SpeedMode Speed;
}
}
}

View File

@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 566f30cbabcd4731b0879f05b6ac7e3e
timeCreated: 1726312021
AssetOrigin:
serializedVersion: 1
productId: 324001
packageName: LiveWatch Lite | Debug with full history of changes
packageVersion: 1.0.1
assetPath: Assets/LiveWatchLite/TowerDefenceDemo/Scripts/UI/SpeedPanelUI.cs
uploadId: 770587

View File

@@ -0,0 +1,42 @@
using System;
using UnityEngine;
using UnityEngine.UI;
namespace Ingvar.LiveWatch.TowerDefenceDemo.UI
{
public class WaveButtonUI : MonoBehaviour
{
[SerializeField] private Button playWaveButton;
private LevelScene _levelScene;
private void Awake()
{
_levelScene = FindObjectOfType<LevelScene>();
}
private void OnEnable()
{
_levelScene.LevelStateManager.StateChanged += RefreshButton;
playWaveButton.onClick.AddListener(OnPlayButtonClicked);
RefreshButton();
}
private void OnDisable()
{
_levelScene.LevelStateManager.StateChanged -= RefreshButton;
playWaveButton.onClick.RemoveListener(OnPlayButtonClicked);
}
private void RefreshButton()
{
playWaveButton.interactable = _levelScene.LevelStateManager.CurrentState == LevelStateType.Waiting;
}
private void OnPlayButtonClicked()
{
_levelScene.WaveManager.StartWave();
}
}
}

View File

@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 25bd98f41f9b4d7eb3cb2459efb29153
timeCreated: 1725819869
AssetOrigin:
serializedVersion: 1
productId: 324001
packageName: LiveWatch Lite | Debug with full history of changes
packageVersion: 1.0.1
assetPath: Assets/LiveWatchLite/TowerDefenceDemo/Scripts/UI/WaveButtonUI.cs
uploadId: 770587

View File

@@ -0,0 +1,38 @@
using System;
using UnityEngine;
using UnityEngine.UI;
namespace Ingvar.LiveWatch.TowerDefenceDemo.UI
{
public class WavePanelUI : MonoBehaviour
{
[SerializeField] private Text waveText;
private LevelScene _levelScene;
private void Awake()
{
_levelScene = FindObjectOfType<LevelScene>();
}
private void OnEnable()
{
_levelScene.WaveManager.WaveChanged += RefreshWave;
}
private void OnDisable()
{
_levelScene.WaveManager.WaveChanged -= RefreshWave;
}
private void Start()
{
RefreshWave();
}
private void RefreshWave()
{
waveText.text = $"WAVE: {_levelScene.WaveManager.CurrentWave+1}/{_levelScene.WaveManager.MaxWave+1}";
}
}
}

View File

@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 917360a2cc324e4bb5304ceb3a8d028e
timeCreated: 1725811761
AssetOrigin:
serializedVersion: 1
productId: 324001
packageName: LiveWatch Lite | Debug with full history of changes
packageVersion: 1.0.1
assetPath: Assets/LiveWatchLite/TowerDefenceDemo/Scripts/UI/WavePanelUI.cs
uploadId: 770587