Skip to content

Commit 16286fe

Browse files
authored
Merge branch 'dev' into fb-streamingassets
2 parents 5142a98 + d4dfb60 commit 16286fe

5 files changed

Lines changed: 45 additions & 11 deletions

File tree

README.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<h1 align="center">Gameframe.SaveLoad 👋</h1>
22
<p>
3-
<img alt="Version" src="https://img.shields.io/badge/version-1.0.6-blue.svg?cacheSeconds=2592000" />
3+
<img alt="Version" src="https://img.shields.io/badge/version-1.0.7-blue.svg?cacheSeconds=2592000" />
44
<a href="https://twitter.com/Cory Leach">
55
<img alt="Twitter: coryleach" src="https://img.shields.io/twitter/follow/coryleach.svg?style=social" target="_blank" />
66
</a>
@@ -13,15 +13,15 @@ Serialization helper utility that supports save, load and encryption.
1313
#### Using UnityPackageManager (for Unity 2019.3 or later)
1414
Open the package manager window (menu: Window > Package Manager)<br/>
1515
Select "Add package from git URL...", fill in the pop-up with the following link:<br/>
16-
https://github.com/coryleach/UnitySaveLoad.git#1.0.6<br/>
16+
https://github.com/coryleach/UnitySaveLoad.git#1.0.7<br/>
1717

1818
#### Using UnityPackageManager (for Unity 2019.1 or later)
1919

2020
Find the manifest.json file in the Packages folder of your project and edit it to look like this:
2121
```js
2222
{
2323
"dependencies": {
24-
"com.gameframe.saveload": "https://github.com/coryleach/UnitySaveLoad.git#1.0.6",
24+
"com.gameframe.saveload": "https://github.com/coryleach/UnitySaveLoad.git#1.0.7",
2525
...
2626
},
2727
}
@@ -70,7 +70,11 @@ manager.LoadUnityObjectOverwrite(myScriptableObject,"MyUnityObjectData.data");
7070

7171
## Enable Json.Net Support
7272

73-
Ensure the [Json.Net for Unity](https://assetstore.unity.com/packages/tools/input-management/json-net-for-unity-11347) package has been imported.</br>
73+
This package has been tested with version 3.0.2 of the newtonsoft json package.
74+
Import the Netwonsoft Json package from the package manager or copy and paste the below into your package manifest.
75+
```C#
76+
"com.unity.nuget.newtonsoft-json": "3.0.2"
77+
```
7478
In player settings add the string 'JSON_DOT_NET' to Scripting Define Symbols.
7579

7680
<!-- DOC-END -->

Runtime/SaveLoadManager.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ public void GetFiles(List<string> list, string folder = null, bool streamingAsse
101101
{
102102
folder = defaultFolder;
103103
}
104+
104105
SaveLoadUtility.GetSavedFiles(list, folder,baseFolder, streamingAssets);
105106
}
106107

Runtime/SaveLoadUtility.cs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,10 @@ public static object Load(System.Type objectType, ISerializationMethod serializa
122122
/// </summary>
123123
/// <param name="folderName">folder containing the save files</param>
124124
/// <param name="baseFolderPath">base path to the folder</param>
125+
/// <param name="extension">include only files with this extension</param>
125126
/// <param name="streamingAssets">Will use Application.streamingAssetsPath as base path if true otherwise Application.persistentDataPath</param>
126127
/// <returns>list of file names</returns>
127-
public static IEnumerable<string> EnumerateSavedFiles(string folderName = null, string baseFolderPath = null, bool streamingAssets = false)
128+
public static IEnumerable<string> EnumerateSavedFiles(string folderName = null, string baseFolderPath = null, string extension = null, bool streamingAssets = false)
128129
{
129130
var savePath = GetSavePath(folderName,baseFolderPath,streamingAssets);
130131

@@ -134,7 +135,8 @@ public static IEnumerable<string> EnumerateSavedFiles(string folderName = null,
134135
yield break;
135136
}
136137

137-
foreach ( var file in Directory.EnumerateFiles(savePath,"*",SearchOption.AllDirectories) )
138+
var searchPattern = string.IsNullOrEmpty(extension) ? "*" : $"*.{extension}";
139+
foreach ( var file in Directory.EnumerateFiles(savePath,searchPattern,SearchOption.AllDirectories) )
138140
{
139141
yield return Path.GetFileName(file);
140142
}
@@ -145,11 +147,12 @@ public static IEnumerable<string> EnumerateSavedFiles(string folderName = null,
145147
/// </summary>
146148
/// <param name="folderName"></param>
147149
/// <param name="baseFolderPath"></param>
150+
/// <param name="extension">include only files with this extension</param>
148151
/// <param name="streamingAssets">Will use Application.streamingAssetsPath as base path if true otherwise Application.persistentDataPath</param>
149152
/// <returns>Array of file names</returns>
150-
public static string[] GetSavedFiles(string folderName = null, string baseFolderPath = null, bool streamingAssets = false)
153+
public static string[] GetSavedFiles(string folderName = null, string baseFolderPath = null, string extension = null, bool streamingAssets = false)
151154
{
152-
return EnumerateSavedFiles(folderName, baseFolderPath).ToArray();
155+
return EnumerateSavedFiles(folderName, baseFolderPath, extension, streamingAssets).ToArray();
153156
}
154157

155158
/// <summary>
@@ -158,12 +161,13 @@ public static string[] GetSavedFiles(string folderName = null, string baseFolder
158161
/// <param name="list">list to be populated with file names</param>
159162
/// <param name="folderName"></param>
160163
/// <param name="baseFolderPath"></param>
164+
/// <param name="extension">include only files with this extension</param>
161165
/// <param name="streamingAssets">Will use Application.streamingAssetsPath as base path if true otherwise Application.persistentDataPath</param>
162166
/// <returns>Array of file names</returns>
163-
public static void GetSavedFiles(List<string> list, string folderName = null, string baseFolderPath = null, bool streamingAssets = false)
167+
public static void GetSavedFiles(List<string> list, string folderName = null, string baseFolderPath = null, string extension = null, bool streamingAssets = false)
164168
{
165169
list.Clear();
166-
list.AddRange(EnumerateSavedFiles(folderName, baseFolderPath, streamingAssets));
170+
list.AddRange(EnumerateSavedFiles(folderName, baseFolderPath, extension streamingAssets));
167171
}
168172

169173
/// <summary>

Tests/Editor/SaveLoadUtilityTests.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,12 @@ private ISerializationMethod GetSerializationMethod(SerializationMethodType meth
2626
return new SerializationMethodUnityJson();
2727
case SerializationMethodType.UnityJsonEncrypted:
2828
return new SerializationMethodUnityJsonEncrypted(TestKey,TestSalt);
29+
#if JSON_DOT_NET
2930
case SerializationMethodType.JsonDotNet:
3031
return new SerializationMethodJsonDotNet();
3132
case SerializationMethodType.JsonDotNetEncrypted:
3233
return new SerializationMethodJsonDotNetEncrypted(TestKey,TestSalt);
34+
#endif
3335
case SerializationMethodType.Custom:
3436
return new SerializationMethodBinary();
3537
default:
@@ -93,6 +95,29 @@ public void CanGetFiles()
9395
Assert.IsTrue(files.Length == 0);
9496
}
9597

98+
[Test]
99+
public void CanGetFilesWithExtension()
100+
{
101+
var testSave = new SaveLoadTestObject() {testData = "SaveFileExists"};
102+
var serializationMethod = GetSerializationMethod(SerializationMethodType.Binary);
103+
var filename = "TestSave.sav";
104+
var folder = "TestFolder";
105+
106+
SaveLoadUtility.Save(testSave,serializationMethod,filename,folder);
107+
108+
var files = SaveLoadUtility.GetSavedFiles(folder,null, "sav");
109+
Assert.IsTrue(files.Length == 1);
110+
111+
//Files should contain a list of names that exactly match the file name used
112+
//omits the path of the file
113+
Assert.IsTrue(files[0] == filename);
114+
115+
SaveLoadUtility.DeleteSavedFile(filename,folder);
116+
117+
files = SaveLoadUtility.GetSavedFiles();
118+
Assert.IsTrue(files.Length == 0);
119+
}
120+
96121
[TearDown]
97122
public void TearDown()
98123
{

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "com.gameframe.saveload",
33
"displayName": "Gameframe.SaveLoad",
4-
"version": "1.0.6",
4+
"version": "1.0.7",
55
"description": "Serialization helper utility that supports save, load and encryption.",
66
"keywords": [],
77
"author": {

0 commit comments

Comments
 (0)