This repository has been archived on 2026-04-18. You can view files and clone it, but cannot push or open issues or pull requests.
Virtual-Memory-Demo/Assets/Scripts/UI/SimulationControlView.cs

75 lines
1.9 KiB
C#

using System;
using UnityEngine;
using UnityEngine.UI;
namespace VMdemo.UI
{
public class SimulationControlView : MonoBehaviour
{
[SerializeField] private Button stepButton;
[SerializeField] private Button playButton;
[SerializeField] private Button pauseButton;
[SerializeField] private Button resetButton;
public event Action StepClicked;
public event Action PlayClicked;
public event Action PauseClicked;
public event Action ResetClicked;
private void Awake()
{
Bind();
}
public void SetPlaying(bool isPlaying)
{
if (stepButton != null)
{
stepButton.interactable = !isPlaying;
}
if (playButton != null)
{
playButton.interactable = !isPlaying;
}
if (pauseButton != null)
{
pauseButton.interactable = isPlaying;
}
if (resetButton != null)
{
resetButton.interactable = true;
}
}
private void Bind()
{
if (stepButton != null)
{
stepButton.onClick.RemoveAllListeners();
stepButton.onClick.AddListener(() => StepClicked?.Invoke());
}
if (playButton != null)
{
playButton.onClick.RemoveAllListeners();
playButton.onClick.AddListener(() => PlayClicked?.Invoke());
}
if (pauseButton != null)
{
pauseButton.onClick.RemoveAllListeners();
pauseButton.onClick.AddListener(() => PauseClicked?.Invoke());
}
if (resetButton != null)
{
resetButton.onClick.RemoveAllListeners();
resetButton.onClick.AddListener(() => ResetClicked?.Invoke());
}
}
}
}