Convert multiplayer mode editor to not have entire Game passed through

This commit is contained in:
Pat Hartl 2023-03-20 18:56:22 -05:00
parent 7c1f282feb
commit 503c77f9fe
2 changed files with 27 additions and 10 deletions

View file

@ -3,7 +3,7 @@
<Space Direction="DirectionVHType.Vertical" Size="@("large")" Style="width: 100%"> <Space Direction="DirectionVHType.Vertical" Size="@("large")" Style="width: 100%">
<SpaceItem> <SpaceItem>
<Table TItem="MultiplayerMode" DataSource="@Game.MultiplayerModes" HidePagination="true"> <Table TItem="MultiplayerMode" DataSource="@Value" HidePagination="true">
<PropertyColumn Property="m => m.Type"> <PropertyColumn Property="m => m.Type">
<Select @bind-Value="context.Type" TItem="MultiplayerType" TItemValue="MultiplayerType" DataSource="Enum.GetValues<MultiplayerType>()" /> <Select @bind-Value="context.Type" TItem="MultiplayerType" TItemValue="MultiplayerType" DataSource="Enum.GetValues<MultiplayerType>()" />
</PropertyColumn> </PropertyColumn>
@ -36,24 +36,41 @@
</Space> </Space>
@code { @code {
[Parameter] public ICollection<MultiplayerMode> Value { get; set; }
[Parameter] public EventCallback<ICollection<MultiplayerMode>> ValueChanged { get; set; }
[Parameter] public Game Game { get; set; } [Parameter] public Game Game { get; set; }
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
if (Game.MultiplayerModes == null) if (Value == null)
Game.MultiplayerModes = new List<MultiplayerMode>(); Value = new List<MultiplayerMode>();
if (ValueChanged.HasDelegate)
await ValueChanged.InvokeAsync(Value);
StateHasChanged();
} }
private void AddMode() private async Task AddMode()
{ {
if (Game.MultiplayerModes == null) if (Value == null)
Game.MultiplayerModes = new List<MultiplayerMode>(); Value = new List<MultiplayerMode>();
Game.MultiplayerModes.Add(new MultiplayerMode()); Value.Add(new MultiplayerMode());
if (ValueChanged.HasDelegate)
await ValueChanged.InvokeAsync(Value);
StateHasChanged();
} }
private void RemoveMode(MultiplayerMode mode) private async Task RemoveMode(MultiplayerMode mode)
{ {
Game.MultiplayerModes.Remove(mode); Value.Remove(mode);
if (ValueChanged.HasDelegate)
await ValueChanged.InvokeAsync(Value);
StateHasChanged();
} }
} }

View file

@ -88,7 +88,7 @@
<SpaceItem> <SpaceItem>
<Card Title="Multiplayer Modes"> <Card Title="Multiplayer Modes">
<Body> <Body>
<MultiplayerModeEditor Game="Game" /> <MultiplayerModeEditor @bind-Value="Game.MultiplayerModes" />
</Body> </Body>
</Card> </Card>
</SpaceItem> </SpaceItem>