Skip to content

Commit 13c30e2

Browse files
author
Bronson Zgeb
committed
Added a Load function to StartGame.
Can now load a previously saved game from disk.
1 parent 04a50f2 commit 13c30e2

File tree

3 files changed

+48
-6
lines changed

3 files changed

+48
-6
lines changed

UOP1_Project/Assets/Scenes/Menus/MainMenu.unity

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1158,6 +1158,7 @@ MonoBehaviour:
11581158
locationsToLoad:
11591159
- {fileID: 11400000, guid: 2f386bbc670c05145834a0f9c7d55798, type: 2}
11601160
showLoadScreen: 1
1161+
saveSystem: {fileID: 11400000, guid: edc355c4a7d5028408d322b90814e19e, type: 2}
11611162
--- !u!1 &2140469179
11621163
GameObject:
11631164
m_ObjectHideFlags: 0

UOP1_Project/Assets/Scripts/SaveSystem/SaveSystem.cs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
using UnityEngine;
1+
using System.Collections;
2+
using UnityEngine;
3+
using UnityEngine.AddressableAssets;
4+
using UnityEngine.ResourceManagement.AsyncOperations;
25

36
public class SaveSystem : ScriptableObject
47
{
@@ -26,19 +29,33 @@ private void CacheLoadLocations(GameSceneSO[] locationsToLoad, bool showLoadingS
2629
saveData._locationId = locationSo.Guid;
2730
}
2831

29-
SaveGame();
32+
SaveDataToDisk();
3033
}
3134

32-
public void LoadGame()
35+
public void LoadSaveDataFromDisk()
3336
{
3437
if (FileManager.LoadFromFile(saveFilename, out var json))
3538
{
3639
saveData.LoadFromJson(json);
3740
}
3841
}
3942

43+
public IEnumerator LoadSavedInventory()
44+
{
45+
_playerInventory.Items.Clear();
46+
foreach (var serializedItemStack in saveData._itemStacks)
47+
{
48+
var loadItemOperationHandle = Addressables.LoadAssetAsync<Item>(serializedItemStack.itemGuid);
49+
yield return loadItemOperationHandle;
50+
if (loadItemOperationHandle.Status == AsyncOperationStatus.Succeeded)
51+
{
52+
var itemSo = loadItemOperationHandle.Result;
53+
_playerInventory.Add(itemSo, serializedItemStack.amount);
54+
}
55+
}
56+
}
4057

41-
public void SaveGame()
58+
public void SaveDataToDisk()
4259
{
4360
saveData._itemStacks.Clear();
4461
foreach (var itemStack in _playerInventory.Items)
Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,41 @@
1-
using UnityEngine;
1+
using System.Collections;
2+
using UnityEngine;
3+
using UnityEngine.AddressableAssets;
4+
using UnityEngine.ResourceManagement.AsyncOperations;
25

36
/// <summary>
47
/// This class contains the function to call when play button is pressed
58
/// </summary>
6-
79
public class StartGame : MonoBehaviour
810
{
911
public LoadEventChannelSO onPlayButtonPress;
1012
public GameSceneSO[] locationsToLoad;
1113
public bool showLoadScreen;
1214

15+
public SaveSystem saveSystem;
16+
1317
public void OnPlayButtonPress()
1418
{
1519
onPlayButtonPress.RaiseEvent(locationsToLoad, showLoadScreen);
1620
}
21+
22+
public void OnLoadButtonPress()
23+
{
24+
StartCoroutine(LoadSaveGame());
25+
}
26+
27+
public IEnumerator LoadSaveGame()
28+
{
29+
saveSystem.LoadSaveDataFromDisk();
30+
yield return StartCoroutine(saveSystem.LoadSavedInventory());
31+
32+
var locationGuid = saveSystem.saveData._locationId;
33+
var asyncOperationHandle = Addressables.LoadAssetAsync<LocationSO>(locationGuid);
34+
yield return asyncOperationHandle;
35+
if (asyncOperationHandle.Status == AsyncOperationStatus.Succeeded)
36+
{
37+
var locationSo = asyncOperationHandle.Result;
38+
onPlayButtonPress.RaiseEvent(new[] {(GameSceneSO)locationSo}, showLoadScreen);
39+
}
40+
}
1741
}

0 commit comments

Comments
 (0)