Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 13 additions & 16 deletions src/MagusEngine/Services/SavingService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,8 @@ namespace MagusEngine.Services
/// </summary>
public sealed class SavingService
{
private const string _folderName = "saves";
private const int chunkPartition = 500;
private static readonly string dir = AppDomain.CurrentDomain.BaseDirectory;
private readonly static string _dirPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "saves");
private readonly JsonSerializerSettings settings;

[DataMember]
Expand All @@ -46,9 +45,9 @@ public SavingService()
/// </summary>
private static void CreateNewSaveFolder()
{
if (!Directory.Exists(dir + $@"\{_folderName}"))
if (!Directory.Exists(_dirPath))
{
Directory.CreateDirectory(_folderName);
Directory.CreateDirectory(_dirPath);
}
}

Expand All @@ -69,11 +68,11 @@ public void SaveGameToFolder(Universe gameState, string saveName)

try
{
Serializer.Save(gameState, @$"{_folderName}\{saveName}\game_state.mr", true);
Serializer.Save(gameState, Path.Combine(_dirPath, saveName, "game_state.mr"), true);
}
catch (Exception)
{
Directory.Delete(Path.Combine(dir, _folderName, saveName), true);
Directory.Delete(Path.Combine(_dirPath, saveName), true);
throw;
}
}
Expand All @@ -86,7 +85,7 @@ private void CreateSaveNameFolder(string saveName)
{
if (SavePathName?.Equals(saveName) == true) return;
SavePathName = saveName;
string path = dir + $@"{_folderName}\{saveName}";
string path = Path.Combine(_dirPath, saveName);

if (!Directory.Exists(path))
{
Expand Down Expand Up @@ -120,9 +119,9 @@ private void SaveChuncksToFile(RegionChunk[] chunks, int indexToStart = 0)
if (i % chunkPartition == 0 || i != 0 || i == chunks.Length)
{
if (indexToStart == 0)
Serializer.Save(newChunks, @$"{_folderName}\{SavePathName}\chunks_{i / chunkPartition}.mr", true);
Serializer.Save(newChunks, Path.Combine(_dirPath, SavePathName!, $"chunks_{i / chunkPartition}.mr"), true);
else
Serializer.Save(newChunks, @$"{_folderName}\{SavePathName}\chunks_{indexToStart / chunkPartition}.mr", true);
Serializer.Save(newChunks, Path.Combine(_dirPath, SavePathName!, $"chunks_{indexToStart / chunkPartition}.mr"), true);
break;
}
}
Expand Down Expand Up @@ -151,7 +150,7 @@ public static Universe LoadGame(string saveName)
{
try
{
string path = $@"{_folderName}\{saveName}\game_state.mr";
string path = Path.Combine(_dirPath, saveName, "game_state.mr");
return Serializer.Load<Universe>(path, true);
}
catch (Exception ex)
Expand Down Expand Up @@ -215,16 +214,14 @@ public void SaveChunkInPos(RegionChunk chunk, int index)
private string? GetChunckFile(int index)
{
// need to remake, so that it will only load the relevant chunk
string path = $@"{SaveDir}\chunks_{index / chunkPartition}.mr";
string path = Path.Combine(SaveDir!, $"chunks_{index / chunkPartition}.mr");
string pattern = Path.GetFileName(path);
string realDir = path[..^pattern.Length];
string fullPath = Path.Combine(dir, realDir);
return Directory.GetFiles(fullPath, pattern, SearchOption.TopDirectoryOnly).FirstOrDefault();
return Directory.GetFiles(_dirPath, pattern, SearchOption.TopDirectoryOnly).FirstOrDefault();
}

private string GetChunckRelativeFile(int index)
{
return $@"{_folderName}\{SavePathName}\chunks_{index / chunkPartition}.mr";
return Path.Combine(_dirPath, SavePathName!, $"chunks_{index / chunkPartition}.mr");
}

/// <summary>
Expand Down Expand Up @@ -281,7 +278,7 @@ public static void DeleteSave(string saveName)
{
try
{
Directory.Delete(Path.Combine(dir, _folderName, saveName), true);
Directory.Delete(Path.Combine(_dirPath, saveName), true);
}
catch (Exception)
{
Expand Down
Loading