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