Skip to content

Commit

Permalink
Add: Add support for App setting
Browse files Browse the repository at this point in the history
  • Loading branch information
whats2000 committed Aug 21, 2024
1 parent 69d0cd2 commit f0e0c6f
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 5 deletions.
2 changes: 1 addition & 1 deletion Pages/Index.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ protected override async void OnInitialized()
TranslateText.OnLanguageChange += RefreshPage;

// Check if a language is stored in localStorage
var storedLanguage = await JSRuntime.InvokeAsync<string>("localStorage.getItem", "userLanguage");
var storedLanguage = await JSRuntime.InvokeAsync<string>("localStorage.getItem", "PearlCalculatorBlazor_userLanguage");

if (!string.IsNullOrEmpty(storedLanguage))
{
Expand Down
60 changes: 56 additions & 4 deletions SettingsJsonConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,24 @@ public override Settings Read(ref Utf8JsonReader reader, Type typeToConvert, Jso
var rootElement = document.RootElement;

var settings = new Settings();


// If the root element has a "Version" property, it's an app version, otherwise it's a web version
if (rootElement.TryGetProperty("Version", out _))
{
settings = ReadAppSettings(rootElement);
}
else
{
settings = ReadWebSettings(rootElement);
}

return settings;
}

private Settings ReadWebSettings(JsonElement rootElement)
{
var settings = new Settings();

settings.NorthEastTNT = ReadSpace3D(rootElement.GetProperty(nameof(settings.NorthEastTNT)));
settings.NorthWestTNT = ReadSpace3D(rootElement.GetProperty(nameof(settings.NorthWestTNT)));
settings.SouthEastTNT = ReadSpace3D(rootElement.GetProperty(nameof(settings.SouthEastTNT)));
Expand All @@ -36,16 +53,51 @@ public override Settings Read(ref Utf8JsonReader reader, Type typeToConvert, Jso
Enum.TryParse<Direction>(rootElement.GetProperty(nameof(settings.Direction)).GetString(),
out var direction)
? direction
: Direction.North;
: Direction.North;

var pearlElemRoot = rootElement.GetProperty(nameof(settings.Pearl));

settings.Pearl = new PearlEntity
{
Position = ReadSpace3D(pearlElemRoot.GetProperty(nameof(settings.Pearl.Position))),
Motion = ReadSpace3D(pearlElemRoot.GetProperty(nameof(settings.Pearl.Motion)))
};


return settings;
}

private Settings ReadAppSettings(JsonElement rootElement)
{
var settings = new Settings();

var cannonSettings = rootElement.GetProperty("CannonSettings")[0];

settings.NorthEastTNT = ReadSpace3D(cannonSettings.GetProperty(nameof(settings.NorthEastTNT)));
settings.NorthWestTNT = ReadSpace3D(cannonSettings.GetProperty(nameof(settings.NorthWestTNT)));
settings.SouthEastTNT = ReadSpace3D(cannonSettings.GetProperty(nameof(settings.SouthEastTNT)));
settings.SouthWestTNT = ReadSpace3D(cannonSettings.GetProperty(nameof(settings.SouthWestTNT)));

settings.Destination = ReadSurface2D(rootElement.GetProperty(nameof(settings.Destination))).ToSpace3D();
settings.Offset = ReadSurface2D(cannonSettings.GetProperty(nameof(settings.Offset)));

settings.RedTNT = rootElement.GetProperty(nameof(settings.RedTNT)).GetInt32();
settings.BlueTNT = rootElement.GetProperty(nameof(settings.BlueTNT)).GetInt32();
settings.MaxTNT = cannonSettings.GetProperty(nameof(settings.MaxTNT)).GetInt32();

settings.Direction =
Enum.TryParse<Direction>(rootElement.GetProperty(nameof(settings.Direction)).GetString(),
out var direction)
? direction
: Direction.North;

var pearlElemRoot = cannonSettings.GetProperty(nameof(settings.Pearl));

settings.Pearl = new PearlEntity
{
Position = ReadSpace3D(pearlElemRoot.GetProperty(nameof(settings.Pearl.Position))),
Motion = ReadSpace3D(pearlElemRoot.GetProperty(nameof(settings.Pearl.Motion)))
};

return settings;
}

Expand Down

0 comments on commit f0e0c6f

Please sign in to comment.