Skip to content

Commit

Permalink
Remove deleted states from an .rsi
Browse files Browse the repository at this point in the history
  • Loading branch information
DrSmugleaf committed Nov 2, 2023
1 parent f7fab8b commit ec95064
Showing 1 changed file with 21 additions and 7 deletions.
28 changes: 21 additions & 7 deletions SpaceWizards.RsiLib/RSI/Rsi.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ public Rsi(
Copyright = copyright;
Size = size;
States = states ?? new List<RsiState>();
OriginalStateNames = new HashSet<string>(States.Select(s => s.Name));
}

public Rsi(
Expand All @@ -50,6 +51,8 @@ public Rsi(

public List<RsiState> States { get; set; }

public HashSet<string> OriginalStateNames { get; set; }

public static Rsi FromFolder(
string rsiFolder,
JsonSerializerOptions? options = null)
Expand Down Expand Up @@ -102,11 +105,13 @@ public void SaveToFolder(string rsiFolder)
SaveImagesToFolder(rsiFolder);
SaveMetadataToFolder(rsiFolder);
}

public void SaveImagesToFolder(string rsiFolder)
{
foreach (var state in States)
{
OriginalStateNames.Remove(state.Name);

var image = state.GetFullImage(Size);
var path = Path.Combine(rsiFolder, $"{state.Name}.png");

Expand All @@ -119,6 +124,15 @@ public void SaveImagesToFolder(string rsiFolder)
File.Copy(state.ImagePath, path, true);
}
}

foreach (var name in OriginalStateNames)
{
var path = Path.Combine(rsiFolder, $"{name}.png");
File.Delete(path);
}

OriginalStateNames.Clear();
OriginalStateNames.UnionWith(States.Select(s => s.Name));
}

public void SaveMetadataToFolder(string rsiFolder)
Expand All @@ -138,15 +152,15 @@ public void SaveMetadataToStream(Stream stream)
state.Directions = x.Directions;
var delays = OmitDefaultDelays(x.Delays);
if (delays != null)
if (delays != null)
state.Delays = delays;
if (x.Flags is { Count: > 0 })
state.Flags = x.Flags;
return state;
}).ToArray();

var data = new RsiJsonData(Version, License, Copyright, Size, statesData);
JsonSerializer.Serialize(stream, data, RsiJsonSourceGenerationContext.Default.RsiJsonData);
}
Expand All @@ -158,12 +172,12 @@ public void Dispose()
state.Dispose();
}
}

private static float[][]? OmitDefaultDelays(List<List<float>>? valueDelays)
{
if (valueDelays == null)
return null;

var cleanedDelays = new float[valueDelays.Count][];
var allWereEmpty = true;

Expand All @@ -186,4 +200,4 @@ public void Dispose()

return cleanedDelays;
}
}
}

0 comments on commit ec95064

Please sign in to comment.