Skip to content

Commit e794db9

Browse files
author
Bronson Zgeb
committed
Keep a backup of previous save. Added Continue from save to Menu.
1 parent 14f7345 commit e794db9

File tree

4 files changed

+292
-11
lines changed

4 files changed

+292
-11
lines changed

UOP1_Project/Assets/Scenes/Menus/MainMenu.unity

Lines changed: 225 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ RectTransform:
153153
m_Children:
154154
- {fileID: 1806157293}
155155
m_Father: {fileID: 2140469183}
156-
m_RootOrder: 3
156+
m_RootOrder: 4
157157
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
158158
m_AnchorMin: {x: 0.5, y: 0.5}
159159
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -251,6 +251,84 @@ CanvasRenderer:
251251
m_PrefabAsset: {fileID: 0}
252252
m_GameObject: {fileID: 403475996}
253253
m_CullTransparentMesh: 0
254+
--- !u!1 &589059405
255+
GameObject:
256+
m_ObjectHideFlags: 0
257+
m_CorrespondingSourceObject: {fileID: 0}
258+
m_PrefabInstance: {fileID: 0}
259+
m_PrefabAsset: {fileID: 0}
260+
serializedVersion: 6
261+
m_Component:
262+
- component: {fileID: 589059406}
263+
- component: {fileID: 589059408}
264+
- component: {fileID: 589059407}
265+
m_Layer: 5
266+
m_Name: Text
267+
m_TagString: Untagged
268+
m_Icon: {fileID: 0}
269+
m_NavMeshLayer: 0
270+
m_StaticEditorFlags: 0
271+
m_IsActive: 1
272+
--- !u!224 &589059406
273+
RectTransform:
274+
m_ObjectHideFlags: 0
275+
m_CorrespondingSourceObject: {fileID: 0}
276+
m_PrefabInstance: {fileID: 0}
277+
m_PrefabAsset: {fileID: 0}
278+
m_GameObject: {fileID: 589059405}
279+
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
280+
m_LocalPosition: {x: 0, y: 0, z: 0}
281+
m_LocalScale: {x: 1, y: 1, z: 1}
282+
m_Children: []
283+
m_Father: {fileID: 763294101}
284+
m_RootOrder: 0
285+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
286+
m_AnchorMin: {x: 0, y: 0}
287+
m_AnchorMax: {x: 1, y: 1}
288+
m_AnchoredPosition: {x: 0, y: 0}
289+
m_SizeDelta: {x: 0, y: 0}
290+
m_Pivot: {x: 0.5, y: 0.5}
291+
--- !u!114 &589059407
292+
MonoBehaviour:
293+
m_ObjectHideFlags: 0
294+
m_CorrespondingSourceObject: {fileID: 0}
295+
m_PrefabInstance: {fileID: 0}
296+
m_PrefabAsset: {fileID: 0}
297+
m_GameObject: {fileID: 589059405}
298+
m_Enabled: 1
299+
m_EditorHideFlags: 0
300+
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
301+
m_Name:
302+
m_EditorClassIdentifier:
303+
m_Material: {fileID: 0}
304+
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
305+
m_RaycastTarget: 1
306+
m_Maskable: 1
307+
m_OnCullStateChanged:
308+
m_PersistentCalls:
309+
m_Calls: []
310+
m_FontData:
311+
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
312+
m_FontSize: 40
313+
m_FontStyle: 0
314+
m_BestFit: 0
315+
m_MinSize: 4
316+
m_MaxSize: 60
317+
m_Alignment: 4
318+
m_AlignByGeometry: 0
319+
m_RichText: 1
320+
m_HorizontalOverflow: 0
321+
m_VerticalOverflow: 0
322+
m_LineSpacing: 1
323+
m_Text: Reset Save Data
324+
--- !u!222 &589059408
325+
CanvasRenderer:
326+
m_ObjectHideFlags: 0
327+
m_CorrespondingSourceObject: {fileID: 0}
328+
m_PrefabInstance: {fileID: 0}
329+
m_PrefabAsset: {fileID: 0}
330+
m_GameObject: {fileID: 589059405}
331+
m_CullTransparentMesh: 0
254332
--- !u!1 &622178817
255333
GameObject:
256334
m_ObjectHideFlags: 0
@@ -359,7 +437,7 @@ RectTransform:
359437
m_LocalScale: {x: 1, y: 1, z: 1}
360438
m_Children: []
361439
m_Father: {fileID: 2140469183}
362-
m_RootOrder: 4
440+
m_RootOrder: 5
363441
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
364442
m_AnchorMin: {x: 0, y: 1}
365443
m_AnchorMax: {x: 1, y: 1}
@@ -408,6 +486,147 @@ CanvasRenderer:
408486
m_PrefabAsset: {fileID: 0}
409487
m_GameObject: {fileID: 684748716}
410488
m_CullTransparentMesh: 0
489+
--- !u!1 &763294100
490+
GameObject:
491+
m_ObjectHideFlags: 0
492+
m_CorrespondingSourceObject: {fileID: 0}
493+
m_PrefabInstance: {fileID: 0}
494+
m_PrefabAsset: {fileID: 0}
495+
serializedVersion: 6
496+
m_Component:
497+
- component: {fileID: 763294101}
498+
- component: {fileID: 763294105}
499+
- component: {fileID: 763294104}
500+
- component: {fileID: 763294103}
501+
m_Layer: 5
502+
m_Name: Reset Save Game
503+
m_TagString: Untagged
504+
m_Icon: {fileID: 0}
505+
m_NavMeshLayer: 0
506+
m_StaticEditorFlags: 0
507+
m_IsActive: 1
508+
--- !u!224 &763294101
509+
RectTransform:
510+
m_ObjectHideFlags: 0
511+
m_CorrespondingSourceObject: {fileID: 0}
512+
m_PrefabInstance: {fileID: 0}
513+
m_PrefabAsset: {fileID: 0}
514+
m_GameObject: {fileID: 763294100}
515+
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
516+
m_LocalPosition: {x: 0, y: 0, z: 0}
517+
m_LocalScale: {x: 1, y: 1, z: 1}
518+
m_Children:
519+
- {fileID: 589059406}
520+
m_Father: {fileID: 2140469183}
521+
m_RootOrder: 3
522+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
523+
m_AnchorMin: {x: 0.5, y: 0.5}
524+
m_AnchorMax: {x: 0.5, y: 0.5}
525+
m_AnchoredPosition: {x: 280.6552, y: -81}
526+
m_SizeDelta: {x: 240.65524, y: 116.64508}
527+
m_Pivot: {x: 0.5, y: 0.5}
528+
--- !u!114 &763294103
529+
MonoBehaviour:
530+
m_ObjectHideFlags: 0
531+
m_CorrespondingSourceObject: {fileID: 0}
532+
m_PrefabInstance: {fileID: 0}
533+
m_PrefabAsset: {fileID: 0}
534+
m_GameObject: {fileID: 763294100}
535+
m_Enabled: 1
536+
m_EditorHideFlags: 0
537+
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
538+
m_Name:
539+
m_EditorClassIdentifier:
540+
m_Navigation:
541+
m_Mode: 3
542+
m_SelectOnUp: {fileID: 0}
543+
m_SelectOnDown: {fileID: 0}
544+
m_SelectOnLeft: {fileID: 0}
545+
m_SelectOnRight: {fileID: 0}
546+
m_Transition: 1
547+
m_Colors:
548+
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
549+
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
550+
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
551+
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
552+
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
553+
m_ColorMultiplier: 1
554+
m_FadeDuration: 0.1
555+
m_SpriteState:
556+
m_HighlightedSprite: {fileID: 0}
557+
m_PressedSprite: {fileID: 0}
558+
m_SelectedSprite: {fileID: 0}
559+
m_DisabledSprite: {fileID: 0}
560+
m_AnimationTriggers:
561+
m_NormalTrigger: Normal
562+
m_HighlightedTrigger: Highlighted
563+
m_PressedTrigger: Pressed
564+
m_SelectedTrigger: Selected
565+
m_DisabledTrigger: Disabled
566+
m_Interactable: 1
567+
m_TargetGraphic: {fileID: 763294104}
568+
m_OnClick:
569+
m_PersistentCalls:
570+
m_Calls:
571+
- m_Target: {fileID: 1967191115}
572+
m_MethodName: OnResetSaveDataPress
573+
m_Mode: 1
574+
m_Arguments:
575+
m_ObjectArgument: {fileID: 0}
576+
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
577+
m_IntArgument: 0
578+
m_FloatArgument: 0
579+
m_StringArgument:
580+
m_BoolArgument: 0
581+
m_CallState: 2
582+
- m_Target: {fileID: 0}
583+
m_MethodName: SetActive
584+
m_Mode: 6
585+
m_Arguments:
586+
m_ObjectArgument: {fileID: 0}
587+
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
588+
m_IntArgument: 0
589+
m_FloatArgument: 0
590+
m_StringArgument:
591+
m_BoolArgument: 0
592+
m_CallState: 2
593+
--- !u!114 &763294104
594+
MonoBehaviour:
595+
m_ObjectHideFlags: 0
596+
m_CorrespondingSourceObject: {fileID: 0}
597+
m_PrefabInstance: {fileID: 0}
598+
m_PrefabAsset: {fileID: 0}
599+
m_GameObject: {fileID: 763294100}
600+
m_Enabled: 1
601+
m_EditorHideFlags: 0
602+
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
603+
m_Name:
604+
m_EditorClassIdentifier:
605+
m_Material: {fileID: 0}
606+
m_Color: {r: 1, g: 1, b: 1, a: 1}
607+
m_RaycastTarget: 1
608+
m_Maskable: 1
609+
m_OnCullStateChanged:
610+
m_PersistentCalls:
611+
m_Calls: []
612+
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
613+
m_Type: 1
614+
m_PreserveAspect: 0
615+
m_FillCenter: 1
616+
m_FillMethod: 4
617+
m_FillAmount: 1
618+
m_FillClockwise: 1
619+
m_FillOrigin: 0
620+
m_UseSpriteMesh: 0
621+
m_PixelsPerUnitMultiplier: 1
622+
--- !u!222 &763294105
623+
CanvasRenderer:
624+
m_ObjectHideFlags: 0
625+
m_CorrespondingSourceObject: {fileID: 0}
626+
m_PrefabInstance: {fileID: 0}
627+
m_PrefabAsset: {fileID: 0}
628+
m_GameObject: {fileID: 763294100}
629+
m_CullTransparentMesh: 0
411630
--- !u!1 &821853654
412631
GameObject:
413632
m_ObjectHideFlags: 0
@@ -438,7 +657,7 @@ RectTransform:
438657
m_LocalScale: {x: 1, y: 1, z: 1}
439658
m_Children: []
440659
m_Father: {fileID: 2140469183}
441-
m_RootOrder: 5
660+
m_RootOrder: 6
442661
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
443662
m_AnchorMin: {x: 1, y: 0}
444663
m_AnchorMax: {x: 1, y: 0}
@@ -1159,6 +1378,8 @@ MonoBehaviour:
11591378
- {fileID: 11400000, guid: 2f386bbc670c05145834a0f9c7d55798, type: 2}
11601379
showLoadScreen: 1
11611380
saveSystem: {fileID: 11400000, guid: edc355c4a7d5028408d322b90814e19e, type: 2}
1381+
startText: {fileID: 622178819}
1382+
resetSaveDataButton: {fileID: 763294103}
11621383
--- !u!1 &2140469179
11631384
GameObject:
11641385
m_ObjectHideFlags: 0
@@ -1252,6 +1473,7 @@ RectTransform:
12521473
- {fileID: 1312122616}
12531474
- {fileID: 1228641980}
12541475
- {fileID: 1967191111}
1476+
- {fileID: 763294101}
12551477
- {fileID: 403475997}
12561478
- {fileID: 684748717}
12571479
- {fileID: 821853655}

UOP1_Project/Assets/Scripts/SaveSystem/FileManager.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,26 @@ public static bool LoadFromFile(string fileName, out string result)
3636
return false;
3737
}
3838
}
39+
40+
public static bool MoveFile(string fileName, string newFileName)
41+
{
42+
var fullPath = Path.Combine(Application.persistentDataPath, fileName);
43+
var newFullPath = Path.Combine(Application.persistentDataPath, newFileName);
44+
45+
try
46+
{
47+
if (File.Exists(newFullPath))
48+
{
49+
File.Delete(newFullPath);
50+
}
51+
File.Move(fullPath, newFullPath);
52+
}
53+
catch (Exception e)
54+
{
55+
Debug.LogError($"Failed to move file from {fullPath} to {newFullPath} with exception {e}");
56+
return false;
57+
}
58+
59+
return true;
60+
}
3961
}

UOP1_Project/Assets/Scripts/SaveSystem/SaveSystem.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public class SaveSystem : ScriptableObject
99
[SerializeField] private Inventory _playerInventory;
1010

1111
public string saveFilename = "save.chop";
12+
public string backupSaveFilename = "save.chop.bak";
1213
public Save saveData = new Save();
1314

1415
void OnEnable()
@@ -32,12 +33,15 @@ private void CacheLoadLocations(GameSceneSO[] locationsToLoad, bool showLoadingS
3233
SaveDataToDisk();
3334
}
3435

35-
public void LoadSaveDataFromDisk()
36+
public bool LoadSaveDataFromDisk()
3637
{
3738
if (FileManager.LoadFromFile(saveFilename, out var json))
3839
{
3940
saveData.LoadFromJson(json);
41+
return true;
4042
}
43+
44+
return false;
4145
}
4246

4347
public IEnumerator LoadSavedInventory()
@@ -63,9 +67,12 @@ public void SaveDataToDisk()
6367
saveData._itemStacks.Add(new SerializedItemStack(itemStack.Item.Guid, itemStack.Amount));
6468
}
6569

66-
if (FileManager.WriteToFile(saveFilename, saveData.ToJson()))
70+
if (FileManager.MoveFile(saveFilename, backupSaveFilename))
6771
{
68-
Debug.Log("Save successful");
72+
if (FileManager.WriteToFile(saveFilename, saveData.ToJson()))
73+
{
74+
Debug.Log("Save successful");
75+
}
6976
}
7077
}
7178
}

0 commit comments

Comments
 (0)