Skip to content

Commit

Permalink
Add: Add TNT encoding calculator
Browse files Browse the repository at this point in the history
  • Loading branch information
whats2000 committed Sep 7, 2024
1 parent e0ddddb commit b0e5055
Show file tree
Hide file tree
Showing 15 changed files with 441 additions and 79 deletions.
83 changes: 48 additions & 35 deletions Components/GeneralFtl.razor
Original file line number Diff line number Diff line change
@@ -1,27 +1,34 @@
@page "/GeneralFtl"
@using PearlCalculatorBlazor.Localizer

<div class="calculator-general-root-default">
<Card>
<CardTabs>
<Tabs @bind-ActiveKey="_activeKey">
<TabPane Key="GeneralFtlGeneral" Tab="@TranslateText.GetTranslateText("GeneralFtlGeneral")">
<ChildContent>
<GeneralFtlGeneral/>
</ChildContent>
</TabPane>

<TabPane Key="GeneralFtlAdvanced" Tab="@TranslateText.GetTranslateText("GeneralFtlAdvanced")">
<ChildContent>
<GeneralFtlAdvanced/>
</ChildContent>
</TabPane>

<TabPane Key="GeneralFtlSettings" Tab="@TranslateText.GetTranslateText("GeneralFtlSettings")">
<ChildContent>
<GeneralFtlSettings/>
</ChildContent>
</TabPane>
@foreach (var tab in _selectList)
{
<TabPane Key="@tab.ActiveKey" Tab="@tab.DisplayName">
<ChildContent>
@switch (tab.ActiveKey)
{
case "GeneralFtlGeneral":
<GeneralFtlGeneral/>
break;
case "GeneralFtlAdvanced":
<GeneralFtlAdvanced/>
break;
case "GeneralFtlSettings":
<GeneralFtlSettings/>
break;
case "GeneralFtlTntEncoding":
<GeneralFtlTntEncoding/>
break;
default:
<Empty/>
break;
}
</ChildContent>
</TabPane>
}
</Tabs>
</CardTabs>
</Card>
Expand All @@ -33,27 +40,33 @@
<Select DataSource="@_selectList"
DefaultValue="@("GeneralFtlGeneral")"
@bind-Value="_activeKey"
ValueName="@nameof(Array.ActiveKey)"
LabelName="@nameof(Array.DisplayName)"
ValueName="@nameof(TabItem.ActiveKey)"
LabelName="@nameof(TabItem.DisplayName)"
IgnoreItemChanges="false">
</Select>
</SpaceItem>
<Divider></Divider>
<SpaceItem>
@if (_activeKey == "GeneralFtlGeneral")
{
<GeneralFtlGeneral/>
}
else if (_activeKey == "GeneralFtlAdvanced")
{
<GeneralFtlAdvanced/>
}
else
{
<GeneralFtlSettings/>
}
<ChildContent>
@switch (_activeKey)
{
case "GeneralFtlGeneral":
<GeneralFtlGeneral/>
break;
case "GeneralFtlAdvanced":
<GeneralFtlAdvanced/>
break;
case "GeneralFtlSettings":
<GeneralFtlSettings/>
break;
case "GeneralFtlTntEncoding":
<GeneralFtlTntEncoding/>
break;
default:
<Empty/>
break;
}
</ChildContent>
</SpaceItem>
</Space>
</div>

@code { private string _activeKey = "GeneralFtlGeneral"; }
</div>
21 changes: 15 additions & 6 deletions Components/GeneralFtl.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,32 @@ namespace PearlCalculatorBlazor.Components;

public partial class GeneralFtl
{
private List<Array> _selectList;
private string _activeKey = "GeneralFtlGeneral";
private List<TabItem> _selectList;

protected override void OnInitialized()
{
_selectList = new List<Array>
_selectList = new List<TabItem>
{
new()
{
ActiveKey = "GeneralFtlGeneral", DisplayName = TranslateText.GetTranslateText("GeneralFtlGeneral")
ActiveKey = "GeneralFtlGeneral",
DisplayName = TranslateText.GetTranslateText("GeneralFtlGeneral")
},
new()
{
ActiveKey = "GeneralFtlAdvanced", DisplayName = TranslateText.GetTranslateText("GeneralFtlAdvanced")
ActiveKey = "GeneralFtlAdvanced",
DisplayName = TranslateText.GetTranslateText("GeneralFtlAdvanced")
},
new()
{
ActiveKey = "GeneralFtlSettings", DisplayName = TranslateText.GetTranslateText("GeneralFtlSettings")
ActiveKey = "GeneralFtlSettings",
DisplayName = TranslateText.GetTranslateText("GeneralFtlSettings")
},
new()
{
ActiveKey = "GeneralFtlTntEncoding",
DisplayName = TranslateText.GetTranslateText("GeneralFtlTntEncoding")
}
};

Expand All @@ -36,7 +45,7 @@ private void RefreshPage()
StateHasChanged();
}

private class Array
private class TabItem
{
public string DisplayName { get; set; }
public string ActiveKey { get; set; }
Expand Down
2 changes: 1 addition & 1 deletion Components/GeneralFtl.razor.css
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
display: none;
}

@media screen and (max-width: 420px) {
@media screen and (max-width: 576px) {
.calculator-general-root-default {
display: none;
}
Expand Down
23 changes: 7 additions & 16 deletions Components/GeneralFtlComponents/GeneralFtlGeneral.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,18 +72,6 @@ private Direction Direction
set => Data.Direction = value;
}

private Direction DefaultRedTntDirection
{
get => Data.DefaultRedDuper;
set => Data.DefaultRedDuper = value;
}

private Direction DefaultBlueTntDirection
{
get => Data.DefaultBlueDuper;
set => Data.DefaultBlueDuper = value;
}

private uint RedTnt
{
get => (uint)Data.RedTNT;
Expand All @@ -109,15 +97,15 @@ await Notice.Open(new NotificationConfig
protected override void OnInitialized()
{
TranslateText.OnLanguageChange += RefreshPage;

EventManager.Instance.AddListener<SetRtCountArgs>("tntAmountSetRTCount", (_, args) =>
{
Direction = DirectionUtils.GetDirection(Data.Pearl.Position.WorldAngle(Data.Destination));
RedTnt = (uint)args.Red;
BlueTnt = (uint)args.Blue;
StateHasChanged();
});

EventManager.Instance.AddListener<BaseEventArgs>("dataChanged", (_, _) => { RefreshPage(); });
}

Expand Down Expand Up @@ -241,15 +229,18 @@ private void LoadJson(ReadOnlySpan<byte> jsonData)

if (!string.IsNullOrEmpty(settingsCollection.SelectedCannon))
{
var index = SettingsManager.SettingsList.FindIndex(x => x.CannonName == settingsCollection.SelectedCannon);
var index = SettingsManager.SettingsList.FindIndex(x =>
x.CannonName == settingsCollection.SelectedCannon);
SettingsManager.SelectCannon(index);
}
else
{
SettingsManager.SelectCannon(0);
}
}

PearlSimulate();

EventManager.Instance.PublishEvent(this, "importSettings", new BaseEventArgs(PublishKey));
}
catch (Exception e)
Expand Down
83 changes: 83 additions & 0 deletions Components/GeneralFtlComponents/GeneralFtlTntEncoding.razor
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
@using PearlCalculatorBlazor.Localizer
@using PearlCalculatorLib.PearlCalculationLib.World
@inject IMessageService AntMessage
@inject NotificationService Notice

<Space Direction="DirectionVHType.Vertical" Wrap="true" Style="width: 100%;">
<SpaceItem>
<Text>
@TranslateText.GetTranslateText("TNTEncodingConfigurationRed") :
</Text>
</SpaceItem>
<SpaceItem>
<Input @bind-Value="RedTntInput" @onblur="ValidateRedTntInput" Placeholder="e.g. 10, 20, 30"/>
</SpaceItem>

<SpaceItem>
<Text>
@TranslateText.GetTranslateText("TNTEncodingConfigurationBlue") :
</Text>
</SpaceItem>
<SpaceItem>
<Input @bind-Value="BlueTntInput" @onblur="ValidateBlueTntInput" Placeholder="e.g. 15, 25, 35"/>
</SpaceItem>
<SpaceItem>
<Space Direction="DirectionVHType.Vertical" Style="width: 100%">
<SpaceItem>
<Text>@TranslateText.GetTranslateText("Direction")</Text>
</SpaceItem>
<SpaceItem>
<RadioGroup @bind-Value="@Direction" Style="width: 100%;">
<Row>
<AntDesign.Col Span="6">
<Radio Value="@Direction.North">
@TranslateText.GetTranslateText("North")
</Radio>
</AntDesign.Col>
<AntDesign.Col Span="6">
<Radio Value="@Direction.South">
@TranslateText.GetTranslateText("South")
</Radio>
</AntDesign.Col>
<AntDesign.Col Span="6">
<Radio Value="@Direction.East">
@TranslateText.GetTranslateText("East")
</Radio>
</AntDesign.Col>
<AntDesign.Col Span="6">
<Radio Value="@Direction.West">
@TranslateText.GetTranslateText("West")
</Radio>
</AntDesign.Col>
</Row>
</RadioGroup>
</SpaceItem>
</Space>
</SpaceItem>
<SpaceItem>
<Space Direction="DirectionVHType.Vertical" Style="width: 100%">
<SpaceItem>
<Text>@TranslateText.GetTranslateText("RedTNT")</Text>
</SpaceItem>
<SpaceItem>
<InputNumber Style="width: 100%" @bind-Value="@RedTnt"/>
</SpaceItem>
</Space>
</SpaceItem>
<SpaceItem>
<Space Direction="DirectionVHType.Vertical" Style="width: 100%">
<SpaceItem>
<Text>@TranslateText.GetTranslateText("BlueTNT")</Text>
</SpaceItem>
<SpaceItem>
<InputNumber Style="width: 100%" @bind-Value="@BlueTnt"/>
</SpaceItem>
</Space>
</SpaceItem>
<SpaceItem>
<div class="button-block">
<Button Block="true" @onclick="PearlSimulate">@TranslateText.GetTranslateText("PearlSimulate")</Button>
<Button Block="true" @onclick="CalculateTntEncoding">@TranslateText.GetTranslateText("CalculateTNTEncoding")</Button>
</div>
</SpaceItem>
</Space>
Loading

0 comments on commit b0e5055

Please sign in to comment.