create menu UI

This commit is contained in:
2022-11-12 18:08:21 +05:00
parent a488ab8f99
commit 800e5fbbd6
17 changed files with 4936 additions and 2589 deletions
+29 -23
View File
@@ -14,7 +14,7 @@ public enum Location
Sherbinka,
BulevardSlavyanski,
Solnechaya,
Shukenskaya,
Shukinskaya,
AprelevkaDepo
}
@@ -23,37 +23,44 @@ public class GameSystem : MonoBehaviour
public static GameSystem Instance { get; private set; }
public List<IGameComponent> gameComponents { get; private set; } = new List<IGameComponent>();
[SerializeField] UIMainMenu mainMenu;
[Space]
[SerializeField] GameObject[] sigletonComponents;
[SerializeField] CanvasGroup loadingCanvas;
public event Action OnSceneLoaded;
public Dictionary<string, string> locationsName { get; private set; } = new()
public Dictionary<string, Location> locationsName { get; private set; } = new()
{
{"StationPechatnici", "Станция Печатники"},
{"", "Станция Щербинка"},
{"", "Станция Славянский бульвар"},
{"StationSolnechnaya", "Станция Солнечная"},
{"StationShchukinskaya", "Станция Щукенская"},
{"", "Депо Апрелевка"}
{"StationPechatnici", Location.Pechatniki},
{"1", Location.Sherbinka},
{"2", Location.BulevardSlavyanski},
{"StationSolnechnaya", Location.Solnechaya},
{"StationShchukinskaya", Location.Shukinskaya},
{"3", Location.AprelevkaDepo}
};
public void LoadScene(string sceneName)
public async void LoadScene(string sceneName)
{
if(!loadingCanvas.gameObject.activeSelf)
loadingCanvas.gameObject.SetActive(true);
loadingCanvas.DOFade(1, .5f).OnComplete(async() =>
mainMenu.UpdateLocationMenu(locationsName[sceneName]);
var qrReader = FindObjectOfType<QRCodeReader>();
qrReader.camTexture.Stop();
var sceneLoadingOperation = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Single);
while(!sceneLoadingOperation.isDone) await Task.Yield();
OnSceneLoaded?.Invoke();
FindObjectOfType<SceneHandler>().OnSceneLoaded += ()=>
{
var qrReader = FindObjectOfType<QRCodeReader>();
qrReader.camTexture.Stop();
mainMenu.gameObject.SetActive(true);
};
}
var sceneLoadingOperation = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Single);
while(!sceneLoadingOperation.isDone) await Task.Yield();
OnSceneLoaded?.Invoke();
loadingCanvas.gameObject.SetActive(false);
});
public void LeaveScene()
{
var sceneLoadingOperation = SceneManager.LoadSceneAsync("MainMenu",
LoadSceneMode.Single);
}
public void AddGameComponent(IGameComponent component)
@@ -80,7 +87,6 @@ public class GameSystem : MonoBehaviour
}
DontDestroyOnLoad(this);
QRCodeReader.Instance.OnQRCodeRead += LoadScene;
}
void Update()