dev undo
This commit is contained in:
parent
92899f96f9
commit
0cc84e31e0
|
|
@ -2,6 +2,7 @@
|
||||||
@using KoogleApp.Store.Game
|
@using KoogleApp.Store.Game
|
||||||
@using KoogleApp.Store.Game.ThrowPanel
|
@using KoogleApp.Store.Game.ThrowPanel
|
||||||
@using KoogleApp.Store.Game.UndoRedo
|
@using KoogleApp.Store.Game.UndoRedo
|
||||||
|
@using Microsoft.AspNetCore.Mvc.TagHelpers
|
||||||
|
|
||||||
@inherits FluxorComponent
|
@inherits FluxorComponent
|
||||||
|
|
||||||
|
|
@ -12,44 +13,80 @@
|
||||||
@if (ThrowPanelState.Value.IsStated)
|
@if (ThrowPanelState.Value.IsStated)
|
||||||
{
|
{
|
||||||
<MudGrid>
|
<MudGrid>
|
||||||
<NumberPinPanel />
|
|
||||||
<MudItem xs="4">
|
<NumberPinPanel/>
|
||||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
@if ((@UndoRedoState.Value.CanRedo && _locked) && (!_correcting))
|
||||||
<MudButton OnClick="SinkLeftClick"
|
{
|
||||||
Disabled="@(ThrowPanelState.Value.ThrowPanelStateStatus == ThrowPanelStateStatus.BeforeThrow && UndoRedoState.Value.CanRedo)">
|
<MudItem xs="6">
|
||||||
<MudIcon Class="ma-2" Icon="@Icons.Material.Filled.ArrowCircleLeft"
|
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||||
Color="@(ThrowPanelState.Value.ThrowPanelStateStatus == ThrowPanelStateStatus.BeforeThrow && UndoRedoState.Value.CanRedo ? Color.Dark : Color.Error)"
|
@if (!_canUnlock)
|
||||||
Style="font-size: 3rem;"/>
|
{
|
||||||
Gosse
|
<MudText>Wurf @(UndoRedoState.Value.Version - 1) von XX um YY</MudText>
|
||||||
</MudButton>
|
}
|
||||||
</MudPaper>
|
else
|
||||||
</MudItem>
|
{
|
||||||
<MudItem xs="4">
|
<MudText>Bild @((UndoRedoState.Value.Version / 2) + 1)</MudText>
|
||||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
}
|
||||||
<MudButton OnClick="ThrowClick" Disabled="@(ThrowPanelState.Value.ThrowPanelStateStatus == ThrowPanelStateStatus.BeforeThrow && UndoRedoState.Value.CanRedo)">
|
</MudPaper>
|
||||||
<MudIcon Class="ma-2" Icon="@Icons.Material.Filled.ArrowCircleUp"
|
</MudItem>
|
||||||
Color="@(ThrowPanelState.Value.ThrowPanelStateStatus == ThrowPanelStateStatus.BeforeThrow && UndoRedoState.Value.CanRedo ? Color.Dark : Color.Success)"
|
|
||||||
Style="font-size: 3rem;"/>
|
<MudItem xs="6">
|
||||||
Wurf
|
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||||
</MudButton>
|
<MudButton OnClick="UnlockClick"
|
||||||
</MudPaper>
|
Disabled="!_canUnlock">
|
||||||
</MudItem>
|
<MudIcon Class="ma-2" Icon="@Icons.Material.Filled.ChangeHistory"
|
||||||
<MudItem xs="4">
|
Color="@(!_canUnlock ? Color.Dark : Color.Secondary)"
|
||||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
Style="font-size: 3rem;"/>
|
||||||
<MudButton OnClick="SinkRightClick"
|
Korrigieren
|
||||||
Disabled="@(ThrowPanelState.Value.ThrowPanelStateStatus == ThrowPanelStateStatus.BeforeThrow && UndoRedoState.Value.CanRedo)">
|
</MudButton>
|
||||||
<MudIcon Class="ma-2" Icon="@Icons.Material.Filled.ArrowCircleRight"
|
</MudPaper>
|
||||||
Color="@(ThrowPanelState.Value.ThrowPanelStateStatus == ThrowPanelStateStatus.BeforeThrow && UndoRedoState.Value.CanRedo ? Color.Dark : Color.Error)"
|
</MudItem>
|
||||||
Style="font-size: 3rem;"/>
|
}
|
||||||
Gosse
|
else
|
||||||
</MudButton>
|
{
|
||||||
</MudPaper>
|
<MudItem xs="4">
|
||||||
</MudItem>
|
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||||
|
<MudButton OnClick="SinkLeftClick"
|
||||||
|
Disabled="@_disabled">
|
||||||
|
<MudIcon Class="ma-2" Icon="@Icons.Material.Filled.ArrowCircleLeft"
|
||||||
|
Color="@(_disabled ? Color.Dark : Color.Error)"
|
||||||
|
Style="font-size: 3rem;"/>
|
||||||
|
Gosse
|
||||||
|
</MudButton>
|
||||||
|
</MudPaper>
|
||||||
|
</MudItem>
|
||||||
|
<MudItem xs="4">
|
||||||
|
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||||
|
<MudButton OnClick="ThrowClick" Disabled="_disabled">
|
||||||
|
<MudIcon Class="ma-2" Icon="@Icons.Material.Filled.ArrowCircleUp"
|
||||||
|
Color="@(_disabled ? Color.Dark : Color.Success)"
|
||||||
|
Style="font-size: 3rem;"/>
|
||||||
|
Wurf
|
||||||
|
</MudButton>
|
||||||
|
</MudPaper>
|
||||||
|
</MudItem>
|
||||||
|
<MudItem xs="4">
|
||||||
|
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||||
|
<MudButton OnClick="SinkRightClick"
|
||||||
|
Disabled="@_disabled">
|
||||||
|
<MudIcon Class="ma-2" Icon="@Icons.Material.Filled.ArrowCircleRight"
|
||||||
|
Color="@(_disabled ? Color.Dark : Color.Error)"
|
||||||
|
Style="font-size: 3rem;"/>
|
||||||
|
Gosse
|
||||||
|
</MudButton>
|
||||||
|
</MudPaper>
|
||||||
|
</MudItem>
|
||||||
|
}
|
||||||
</MudGrid>
|
</MudGrid>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
private bool _canUnlock => ThrowPanelState.Value.ThrowPanelStateStatus == ThrowPanelStateStatus.AfterThrow || ThrowPanelState.Value.ThrowPanelStateStatus == ThrowPanelStateStatus.GameStart;
|
||||||
|
private bool _locked = true;
|
||||||
|
|
||||||
|
private bool _disabled => (UndoRedoState.Value.CanRedo && _locked) && !_correcting;
|
||||||
|
private bool _correcting = false;
|
||||||
|
|
||||||
protected override void OnAfterRender(bool firstRender)
|
protected override void OnAfterRender(bool firstRender)
|
||||||
{
|
{
|
||||||
|
|
@ -57,7 +94,7 @@
|
||||||
{
|
{
|
||||||
Dispatcher.Dispatch(new LoadStateFromSessionAction());
|
Dispatcher.Dispatch(new LoadStateFromSessionAction());
|
||||||
}
|
}
|
||||||
|
_locked = true;
|
||||||
base.OnAfterRender(firstRender);
|
base.OnAfterRender(firstRender);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -78,6 +115,14 @@
|
||||||
|
|
||||||
private void DoThrow(bool leftSink, bool rightSink)
|
private void DoThrow(bool leftSink, bool rightSink)
|
||||||
{
|
{
|
||||||
|
_correcting = false;
|
||||||
Dispatcher.Dispatch(new ThrowAction(LeftSink: leftSink, RightSink: rightSink));
|
Dispatcher.Dispatch(new ThrowAction(LeftSink: leftSink, RightSink: rightSink));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void UnlockClick(MouseEventArgs obj)
|
||||||
|
{
|
||||||
|
_correcting = true;
|
||||||
|
_locked = false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
{
|
|
||||||
"IsStated": true,
|
|
||||||
"BellValue": false,
|
|
||||||
"Pin1Value": false,
|
|
||||||
"Pin2Value": false,
|
|
||||||
"Pin3Value": false,
|
|
||||||
"Pin4Value": false,
|
|
||||||
"Pin5Value": false,
|
|
||||||
"Pin6Value": false,
|
|
||||||
"Pin7Value": false,
|
|
||||||
"Pin8Value": false,
|
|
||||||
"Pin9Value": true,
|
|
||||||
"Pin1Disabled": false,
|
|
||||||
"Pin2Disabled": false,
|
|
||||||
"Pin3Disabled": false,
|
|
||||||
"Pin4Disabled": false,
|
|
||||||
"Pin5Disabled": false,
|
|
||||||
"Pin6Disabled": false,
|
|
||||||
"Pin7Disabled": false,
|
|
||||||
"Pin8Disabled": false,
|
|
||||||
"Pin9Disabled": true,
|
|
||||||
"ThrowsPerRound": 3,
|
|
||||||
"ThrowCounter": 2,
|
|
||||||
"ThrowMode": 1,
|
|
||||||
"ThrowPanelStateStatus": 2
|
|
||||||
}
|
|
||||||
|
|
@ -10,8 +10,8 @@
|
||||||
"Pin4Value": false,
|
"Pin4Value": false,
|
||||||
"Pin5Value": false,
|
"Pin5Value": false,
|
||||||
"Pin6Value": false,
|
"Pin6Value": false,
|
||||||
"Pin7Value": false,
|
"Pin7Value": true,
|
||||||
"Pin8Value": false,
|
"Pin8Value": true,
|
||||||
"Pin9Value": true,
|
"Pin9Value": true,
|
||||||
"Pin1Disabled": false,
|
"Pin1Disabled": false,
|
||||||
"Pin2Disabled": false,
|
"Pin2Disabled": false,
|
||||||
|
|
@ -19,20 +19,119 @@
|
||||||
"Pin4Disabled": false,
|
"Pin4Disabled": false,
|
||||||
"Pin5Disabled": false,
|
"Pin5Disabled": false,
|
||||||
"Pin6Disabled": false,
|
"Pin6Disabled": false,
|
||||||
"Pin7Disabled": false,
|
"Pin7Disabled": true,
|
||||||
"Pin8Disabled": false,
|
"Pin8Disabled": true,
|
||||||
"Pin9Disabled": false,
|
"Pin9Disabled": true,
|
||||||
"ThrowsPerRound": 3,
|
"ThrowsPerRound": 3,
|
||||||
"ThrowCounter": 1,
|
"ThrowCounter": 3,
|
||||||
"ThrowMode": 1,
|
"ThrowMode": 1,
|
||||||
"ThrowPanelStateStatus": 2
|
"ThrowPanelStateStatus": 3
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Version": 2,
|
"Version": 5,
|
||||||
"LastModified": "2025-11-11T12:00:22.6133973+01:00",
|
"LastModified": "2025-11-11T13:46:24.8835415+01:00",
|
||||||
"LastModifiedBy": "test1@test.de"
|
"LastModifiedBy": "test1@test.de"
|
||||||
},
|
},
|
||||||
"UndoHistory": [
|
"UndoHistory": [
|
||||||
|
{
|
||||||
|
"Status": {
|
||||||
|
"ThrowPanelState": {
|
||||||
|
"IsStated": true,
|
||||||
|
"BellValue": false,
|
||||||
|
"Pin1Value": false,
|
||||||
|
"Pin2Value": false,
|
||||||
|
"Pin3Value": false,
|
||||||
|
"Pin4Value": false,
|
||||||
|
"Pin5Value": false,
|
||||||
|
"Pin6Value": false,
|
||||||
|
"Pin7Value": true,
|
||||||
|
"Pin8Value": true,
|
||||||
|
"Pin9Value": true,
|
||||||
|
"Pin1Disabled": false,
|
||||||
|
"Pin2Disabled": false,
|
||||||
|
"Pin3Disabled": false,
|
||||||
|
"Pin4Disabled": false,
|
||||||
|
"Pin5Disabled": false,
|
||||||
|
"Pin6Disabled": false,
|
||||||
|
"Pin7Disabled": true,
|
||||||
|
"Pin8Disabled": false,
|
||||||
|
"Pin9Disabled": true,
|
||||||
|
"ThrowsPerRound": 3,
|
||||||
|
"ThrowCounter": 2,
|
||||||
|
"ThrowMode": 1,
|
||||||
|
"ThrowPanelStateStatus": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Version": 4,
|
||||||
|
"LastModified": "2025-11-11T13:46:24.8797561+01:00",
|
||||||
|
"LastModifiedBy": "test1@test.de"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Status": {
|
||||||
|
"ThrowPanelState": {
|
||||||
|
"IsStated": true,
|
||||||
|
"BellValue": false,
|
||||||
|
"Pin1Value": false,
|
||||||
|
"Pin2Value": false,
|
||||||
|
"Pin3Value": false,
|
||||||
|
"Pin4Value": false,
|
||||||
|
"Pin5Value": false,
|
||||||
|
"Pin6Value": false,
|
||||||
|
"Pin7Value": true,
|
||||||
|
"Pin8Value": false,
|
||||||
|
"Pin9Value": true,
|
||||||
|
"Pin1Disabled": false,
|
||||||
|
"Pin2Disabled": false,
|
||||||
|
"Pin3Disabled": false,
|
||||||
|
"Pin4Disabled": false,
|
||||||
|
"Pin5Disabled": false,
|
||||||
|
"Pin6Disabled": false,
|
||||||
|
"Pin7Disabled": true,
|
||||||
|
"Pin8Disabled": false,
|
||||||
|
"Pin9Disabled": true,
|
||||||
|
"ThrowsPerRound": 3,
|
||||||
|
"ThrowCounter": 2,
|
||||||
|
"ThrowMode": 1,
|
||||||
|
"ThrowPanelStateStatus": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Version": 3,
|
||||||
|
"LastModified": "2025-11-11T13:45:23.5062354+01:00",
|
||||||
|
"LastModifiedBy": "test1@test.de"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Status": {
|
||||||
|
"ThrowPanelState": {
|
||||||
|
"IsStated": true,
|
||||||
|
"BellValue": false,
|
||||||
|
"Pin1Value": false,
|
||||||
|
"Pin2Value": false,
|
||||||
|
"Pin3Value": false,
|
||||||
|
"Pin4Value": false,
|
||||||
|
"Pin5Value": false,
|
||||||
|
"Pin6Value": false,
|
||||||
|
"Pin7Value": true,
|
||||||
|
"Pin8Value": false,
|
||||||
|
"Pin9Value": true,
|
||||||
|
"Pin1Disabled": false,
|
||||||
|
"Pin2Disabled": false,
|
||||||
|
"Pin3Disabled": false,
|
||||||
|
"Pin4Disabled": false,
|
||||||
|
"Pin5Disabled": false,
|
||||||
|
"Pin6Disabled": false,
|
||||||
|
"Pin7Disabled": false,
|
||||||
|
"Pin8Disabled": false,
|
||||||
|
"Pin9Disabled": false,
|
||||||
|
"ThrowsPerRound": 3,
|
||||||
|
"ThrowCounter": 1,
|
||||||
|
"ThrowMode": 1,
|
||||||
|
"ThrowPanelStateStatus": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Version": 2,
|
||||||
|
"LastModified": "2025-11-11T13:45:23.4953972+01:00",
|
||||||
|
"LastModifiedBy": "test1@test.de"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"Status": {
|
"Status": {
|
||||||
"ThrowPanelState": {
|
"ThrowPanelState": {
|
||||||
|
|
@ -67,39 +166,5 @@
|
||||||
"LastModifiedBy": "test1@test.de"
|
"LastModifiedBy": "test1@test.de"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"RedoHistory": [
|
"RedoHistory": []
|
||||||
{
|
|
||||||
"Status": {
|
|
||||||
"ThrowPanelState": {
|
|
||||||
"IsStated": true,
|
|
||||||
"BellValue": false,
|
|
||||||
"Pin1Value": false,
|
|
||||||
"Pin2Value": false,
|
|
||||||
"Pin3Value": false,
|
|
||||||
"Pin4Value": false,
|
|
||||||
"Pin5Value": false,
|
|
||||||
"Pin6Value": false,
|
|
||||||
"Pin7Value": false,
|
|
||||||
"Pin8Value": false,
|
|
||||||
"Pin9Value": true,
|
|
||||||
"Pin1Disabled": false,
|
|
||||||
"Pin2Disabled": false,
|
|
||||||
"Pin3Disabled": false,
|
|
||||||
"Pin4Disabled": false,
|
|
||||||
"Pin5Disabled": false,
|
|
||||||
"Pin6Disabled": false,
|
|
||||||
"Pin7Disabled": false,
|
|
||||||
"Pin8Disabled": false,
|
|
||||||
"Pin9Disabled": true,
|
|
||||||
"ThrowsPerRound": 3,
|
|
||||||
"ThrowCounter": 2,
|
|
||||||
"ThrowMode": 1,
|
|
||||||
"ThrowPanelStateStatus": 3
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Version": 3,
|
|
||||||
"LastModified": "2025-11-11T12:00:22.6164777+01:00",
|
|
||||||
"LastModifiedBy": "test1@test.de"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue