eye-therapy-2 / Assets / Scripts / Builder / BuilderPCUIBehaviour.cs
BuilderPCUIBehaviour.cs
Raw
using UnityEngine;
using UnityEngine.UI;

public class BuilderPCUIBehaviour : MonoBehaviour, IListener
{
    [SerializeField] private Slider distanceSlider = null;
    [SerializeField] private InputField distanceInput = null;
    [SerializeField] private Canvas gameWonCanvas = null;

    public float BuildingsAlphaLeft { get; private set; } = 1;
    public float BuildingsAlphaRight { get; private set; } = 1;
    public float DestinationsAlphaLeft { get; private set; } = 1;
    public float DestinationsAlphaRight { get; private set; } = 1;
    public float Distance { get; private set; } = 1;

    private void Start()
    {
        EventManager.Instance.AddListener(EVENT_TYPE.ON_BUILDING_WON, this);
    }

    public void OnBuildingsEyeChanged(int value)
    {
        //switch(value)
        //{
        //    case 0:
        //        BuildingsAlphaLeft = 1;
        //        BuildingsAlphaRight = 1;
        //        break;
        //    case 1:
        //        BuildingsAlphaLeft = 1;
        //        BuildingsAlphaRight = 0;
        //        break;
        //    case 2:
        //        BuildingsAlphaLeft = 0;
        //        BuildingsAlphaRight = 1;
        //        break;
        //}
        EventManager.Instance.PostNotification<int>(EVENT_TYPE.ON_BUILDING_EYE_CHANGED, this, value);
    }

    public void OnDestinationsEyeChanged(int value)
    {
        //switch (value)
        //{
        //    case 0:
        //        DestinationsAlphaLeft = 1;
        //        DestinationsAlphaRight = 1;
        //        break;
        //    case 1:
        //        DestinationsAlphaLeft = 1;
        //        DestinationsAlphaRight = 0;
        //        break;
        //    case 2:
        //        DestinationsAlphaLeft = 0;
        //        DestinationsAlphaRight = 1;
        //        break;
        //}
        EventManager.Instance.PostNotification<int>(EVENT_TYPE.ON_BUILDING_DEST_EYE_CHANGED, this, value);
    }

    public void OnDistanceChanged(float value)
    {
        Distance = value;
        distanceInput.text = value.ToString();
        EventManager.Instance.PostNotification<float>(EVENT_TYPE.ON_BUILDING_DISTANCE_CHANGED, this, value);
    }

    public void OnDistanceTyped(string text)
    {
        float d = float.Parse(text);
        if (d > distanceSlider.maxValue)
        {
            d = distanceSlider.maxValue;
            distanceInput.text = d.ToString();
        }
        else if (d < distanceSlider.minValue)
        {
            d = distanceSlider.minValue;
            distanceInput.text = d.ToString();
        }
        Distance = d;
        distanceSlider.value = d;
        EventManager.Instance.PostNotification<float>(EVENT_TYPE.ON_BUILDING_DISTANCE_CHANGED, this, d);
    }

    public void OnMenuButtonClicked()
    {
        LevelLoader.Instance.LoadLevel("MainMenu");
    }

    public void OnExitButtonClicked()
    {
    #if UNITY_EDITOR
        UnityEditor.EditorApplication.isPlaying = false;
    #else
        Application.Quit();
    #endif
    }

    public void UpdateDistance(float value)
    {
        Distance = value;
        distanceSlider.value = value;
        distanceInput.text = value.ToString();
    }

    public void OnEvent<T>(EVENT_TYPE eventType, Component Sender, T param = default)
    {
        switch (eventType)
        {
            case EVENT_TYPE.ON_BUILDING_WON:
                gameWonCanvas.gameObject.SetActive(true);
                break;
        }
    }
}