[Fix] UI Logic
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
using System;
|
||||
using Minesweeper.Config;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Minesweeper.Presentation.Views
|
||||
{
|
||||
public sealed class TopPanelView : MonoBehaviour, ITopPanelView
|
||||
{
|
||||
[SerializeField] private GameObject root;
|
||||
[SerializeField] private TMP_Text mineText;
|
||||
[SerializeField] private TMP_Text timerText;
|
||||
[SerializeField] private Button smileButton;
|
||||
[SerializeField] private Image smileImage;
|
||||
[SerializeField] private MinesweeperUiConfig uiConfig;
|
||||
|
||||
public event Action SmileClicked;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
if (root == null)
|
||||
{
|
||||
root = gameObject;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
if (smileButton != null)
|
||||
{
|
||||
smileButton.onClick.AddListener(OnSmileClicked);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
if (smileButton != null)
|
||||
{
|
||||
smileButton.onClick.RemoveListener(OnSmileClicked);
|
||||
}
|
||||
}
|
||||
|
||||
public void SetActive(bool active)
|
||||
{
|
||||
root.SetActive(active);
|
||||
}
|
||||
|
||||
public void SetRemainingMines(int remainingMines)
|
||||
{
|
||||
if (mineText != null)
|
||||
{
|
||||
mineText.text = Mathf.Max(0, remainingMines).ToString("00000");
|
||||
}
|
||||
}
|
||||
|
||||
public void SetTimer(float seconds)
|
||||
{
|
||||
if (timerText != null)
|
||||
{
|
||||
timerText.text = Mathf.FloorToInt(seconds).ToString("00000");
|
||||
}
|
||||
}
|
||||
|
||||
public void SetSmile(SmileFaceState state)
|
||||
{
|
||||
if (smileImage == null || uiConfig == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var sprite = uiConfig.GetSmileSprite(state);
|
||||
if (sprite != null)
|
||||
{
|
||||
smileImage.sprite = sprite;
|
||||
}
|
||||
|
||||
smileImage.color = Color.white;
|
||||
}
|
||||
|
||||
public void BindConfig(MinesweeperUiConfig config)
|
||||
{
|
||||
uiConfig = config;
|
||||
}
|
||||
|
||||
private void OnSmileClicked()
|
||||
{
|
||||
SmileClicked?.Invoke();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user