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; } } }