using System; using System.Collections; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.ResourceManagement.AsyncOperations; using UnityEngine.UI; /// /// This class contains the function to call when play button is pressed /// public class StartGame : MonoBehaviour { public LoadEventChannelSO onPlayButtonPress; public GameSceneSO[] locationsToLoad; public bool showLoadScreen; public SaveSystem saveSystem; public Text startText; public Button resetSaveDataButton; private bool _hasSaveData; private void Start() { _hasSaveData = saveSystem.LoadSaveDataFromDisk(); if (_hasSaveData) { startText.text = "Continue"; resetSaveDataButton.gameObject.SetActive(true); } else { resetSaveDataButton.gameObject.SetActive(false); } } public void OnPlayButtonPress() { if (!_hasSaveData) { //Start new game onPlayButtonPress.RaiseEvent(locationsToLoad, showLoadScreen); } else { //Load Game StartCoroutine(LoadSaveGame()); } } public void OnResetSaveDataPress() { _hasSaveData = false; startText.text = "Play"; resetSaveDataButton.gameObject.SetActive(false); } public IEnumerator LoadSaveGame() { yield return StartCoroutine(saveSystem.LoadSavedInventory()); var locationGuid = saveSystem.saveData._locationId; var asyncOperationHandle = Addressables.LoadAssetAsync(locationGuid); yield return asyncOperationHandle; if (asyncOperationHandle.Status == AsyncOperationStatus.Succeeded) { var locationSo = asyncOperationHandle.Result; onPlayButtonPress.RaiseEvent(new[] { (GameSceneSO)locationSo }, showLoadScreen); } } }