using System; using System.Collections.Generic; using System.Linq; using Facebook.Yoga; using UnityEngine; using UnityEngine.UI; using Vocaluxe.UI; using Vocaluxe.UI.AbstractElements; using Vocaluxe.UI.BasicElements.Button; using Vocaluxe.UI.BasicElements.Text; using Vocaluxe.UI.Screens; public class ScreenHandler : MonoBehaviour { private CUiConnector _connector; private Dictionary _screens = new Dictionary(); private EUiScreenType _currentScreen = EUiScreenType.None; public GameObject ScreenPrefab; public GameObject ButtonPrefab; public GameObject TextPrefab; // Use this for initialization void Start () { useGUILayout = false; RectTransform rt = (RectTransform)transform; _connector = new CUiConnector(Convert.ToInt32(rt.rect.width), Convert.ToInt32(rt.rect.height)); foreach (var screenInfo in _connector.GetAllScreens()) { _CreateScreen(screenInfo); } } // Update is called once per frame void Update () { if (_currentScreen == DummyClass.CurrentScreen) return; ChangeScreen(_currentScreen, DummyClass.CurrentScreen); } private void ChangeScreen(EUiScreenType currentScreen, EUiScreenType targetScreen) { if (currentScreen == targetScreen) return; DeactivateScreen(currentScreen); ActivateScreen(targetScreen); } private void ActivateScreen(EUiScreenType screen) { if(screen == EUiScreenType.None) return; _screens[screen].SetActive(true); _currentScreen = screen; } private void DeactivateScreen(EUiScreenType screen) { if (screen == EUiScreenType.None) return; _screens[screen].SetActive(false); _currentScreen = DummyClass.CurrentScreen; } private void _CreateScreen(KeyValuePair screenNameAndInfo) { GameObject newScreen = CreateElement(screenNameAndInfo.Value, screenNameAndInfo.Key.ToString()); _screens.Add(screenNameAndInfo.Key, newScreen); newScreen.GetComponent().SetParent(this.transform); newScreen.SetActive(false); } private GameObject CreateElement(CUiScreen screenInfo, string screenName = "") { GameObject screen = Instantiate(ScreenPrefab); screen.name = screenName; SetProperties(screenInfo, screen); return screen; } private void SetProperties(CUiScreen screenInfo, GameObject screen) { PositionElement(screenInfo, screen); AddChildren(screenInfo, screen); } private GameObject CreateElement(CUiElementButton buttonInfo) { var button = Instantiate(ButtonPrefab); SetProperties(buttonInfo, button); return button; } private void SetProperties(CUiElementButton buttonInfo, GameObject button, bool setPosition = true) { Button btnComponent = button.GetComponent