maint: added livewatch asset
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -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}";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user