Park/ParkManager.Persistence.cs
using HC3.Persistence;
/// <summary>
/// Handles persistence for the park's top-level data, like money, and rating.
/// </summary>
public sealed partial class ParkManager : ISaveDataProperty<ParkManager.SaveData>
{
/// <summary>
/// A record representing the save data for the park manager.
/// </summary>
/// <param name="Money"></param>
/// <param name="Rating"></param>
private sealed record SaveData( int Money, float Rating );
string ISaveDataProperty.PropertyName => "Park";
int ISaveDataProperty.PropertyOrder => -5_000;
SaveData ISaveDataProperty<SaveData>.WriteValue( Scene scene ) =>
new( Money, Rating );
void ISaveDataProperty<SaveData>.ReadValue( Scene scene, SaveData saveData )
{
Money = saveData.Money;
Rating = saveData.Rating;
}
string GetPlaceSound( ObjectMaterial material )
{
return material switch
{
ObjectMaterial.Default => "place_object_default_1",
ObjectMaterial.Wood => "place_object_wood_1",
ObjectMaterial.Metal => "place_object_metal_1",
ObjectMaterial.Natural => "place_object_nature_1",
_ => "place_object_default_1"
};
}
}