diff --git a/KoogleApp/Components/Controls/PinPanel.razor b/KoogleApp/Components/Controls/PinPanel.razor index 9b57126..1e263e0 100644 --- a/KoogleApp/Components/Controls/PinPanel.razor +++ b/KoogleApp/Components/Controls/PinPanel.razor @@ -23,8 +23,8 @@ @@ -34,16 +34,16 @@ @@ -53,24 +53,24 @@ @@ -80,16 +80,16 @@ @@ -98,8 +98,8 @@ @@ -107,99 +107,5 @@ } @code { - // [Parameter] - // public ThrowPanelState? ThrowPanelState { get; set; } - - // [Parameter] - // public EventCallback OnStateChanged { get; set; } - - // Pin? _pin1; - // Pin? _pin2; - // Pin? _pin3; - // Pin? _pin4; - // Pin? _pin5; - // Pin? _pin6; - // Pin? _pin7; - // Pin? _pin8; - // Pin? _pin9; - - - // readonly List> _pins = []; - - // protected override void OnInitialized() - // { - // EventAggregator.Subscribe(this); - // base.OnInitialized(); - // } - - // public void Dispose() - // { - // EventAggregator.Unsubscribe(this); - // } - - // protected override void OnAfterRender(bool firstRender) - // { - // if (firstRender) - // { - // if (ThrowPanelState != null) - // { - // _pins.Clear(); - // _pins.Add(_pin9); - // _pins.Add(_pin8); - // _pins.Add(_pin7); - // _pins.Add(_pin6); - // _pins.Add(_pin5); - // _pins.Add(_pin4); - // _pins.Add(_pin3); - // _pins.Add(_pin2); - // _pins.Add(_pin1); - // } - // } - // } - - // public async Task HandleAsync(NumberPanelMessage message) - // { - // var chgCnt = 0; - // foreach (var pin in _pins) - // { - // var nr = _pins.IndexOf(pin) + 1; - // if (!pin.Disabled) - // { - // pin.Value = chgCnt < message.Number; - // chgCnt++; - // } - // } - - // await InvokeAsync(StateHasChanged); - // } - - // public void UpdatePanelState(ThrowPanelState state) - // { - // _pin1.Value = state.Pin1Value; - // _pin2.Value = state.Pin2Value; - // } - - // private void OnPinStateChanged(bool value) - // { - // // OnStateChanged.InvokeAsync(ThrowPanelState); - // } - - // public async Task HandleAsync(PinToggleMessage message) - // { - // foreach (var pin in _pins) - // { - // if (!pin.Disabled) - // { - // pin.Value = !pin.Value; - // } - // } - - // // if (!ThrowPanelState.Pin1Disabled) - // // { - // // ThrowPanelState.Pin1Value = !ThrowPanelState.Pin1Value; - // // } - - // await InvokeAsync(StateHasChanged); - // } } diff --git a/KoogleApp/Store/Game/ThrowPanel/Reducers.cs b/KoogleApp/Store/Game/ThrowPanel/Reducers.cs index cbfae86..609d36a 100644 --- a/KoogleApp/Store/Game/ThrowPanel/Reducers.cs +++ b/KoogleApp/Store/Game/ThrowPanel/Reducers.cs @@ -16,23 +16,59 @@ namespace KoogleApp.Store.Game.ThrowPanel switch (action.PinNumber) { case 1: - return state with { Pin1Value = action.IsOn, ThrowPanelStateStatus = ThrowPanelStateStatus.BeforeThrow }; + return state with + { + Pin1State = action.IsOn ? PinStatus.Fallen : PinStatus.Standing, + ThrowPanelStateStatus = ThrowPanelStateStatus.BeforeThrow + }; case 2: - return state with { Pin2Value = action.IsOn, ThrowPanelStateStatus = ThrowPanelStateStatus.BeforeThrow }; + return state with + { + Pin2State = action.IsOn ? PinStatus.Fallen : PinStatus.Standing, + ThrowPanelStateStatus = ThrowPanelStateStatus.BeforeThrow + }; case 3: - return state with { Pin3Value = action.IsOn, ThrowPanelStateStatus = ThrowPanelStateStatus.BeforeThrow }; + return state with + { + Pin3State = action.IsOn ? PinStatus.Fallen : PinStatus.Standing, + ThrowPanelStateStatus = ThrowPanelStateStatus.BeforeThrow + }; case 4: - return state with { Pin4Value = action.IsOn, ThrowPanelStateStatus = ThrowPanelStateStatus.BeforeThrow }; + return state with + { + Pin4State = action.IsOn ? PinStatus.Fallen : PinStatus.Standing, + ThrowPanelStateStatus = ThrowPanelStateStatus.BeforeThrow + }; case 5: - return state with { Pin5Value = action.IsOn, ThrowPanelStateStatus = ThrowPanelStateStatus.BeforeThrow }; + return state with + { + Pin5State = action.IsOn ? PinStatus.Fallen : PinStatus.Standing, + ThrowPanelStateStatus = ThrowPanelStateStatus.BeforeThrow + }; case 6: - return state with { Pin6Value = action.IsOn, ThrowPanelStateStatus = ThrowPanelStateStatus.BeforeThrow }; + return state with + { + Pin6State = action.IsOn ? PinStatus.Fallen : PinStatus.Standing, + ThrowPanelStateStatus = ThrowPanelStateStatus.BeforeThrow + }; case 7: - return state with { Pin7Value = action.IsOn, ThrowPanelStateStatus = ThrowPanelStateStatus.BeforeThrow }; + return state with + { + Pin7State = action.IsOn ? PinStatus.Fallen : PinStatus.Standing, + ThrowPanelStateStatus = ThrowPanelStateStatus.BeforeThrow + }; case 8: - return state with { Pin8Value = action.IsOn, ThrowPanelStateStatus = ThrowPanelStateStatus.BeforeThrow }; + return state with + { + Pin8State = action.IsOn ? PinStatus.Fallen : PinStatus.Standing, + ThrowPanelStateStatus = ThrowPanelStateStatus.BeforeThrow + }; case 9: - return state with { Pin9Value = action.IsOn, ThrowPanelStateStatus = ThrowPanelStateStatus.BeforeThrow }; + return state with + { + Pin9State = action.IsOn ? PinStatus.Fallen : PinStatus.Standing, + ThrowPanelStateStatus = ThrowPanelStateStatus.BeforeThrow + }; } return state; @@ -66,47 +102,45 @@ namespace KoogleApp.Store.Game.ThrowPanel [ReducerMethod] public static ThrowPanelState OnToggleAllPins(ThrowPanelState state, ToggleAllPinsAction action) { - var _pins = new List + var pins = new List { - new(state.Pin9Value, state.Pin9Disabled), - new(state.Pin8Value, state.Pin8Disabled), - new(state.Pin7Value, state.Pin7Disabled), - new(state.Pin6Value, state.Pin6Disabled), - new(state.Pin5Value, state.Pin5Disabled), - new(state.Pin4Value, state.Pin4Disabled), - new(state.Pin3Value, state.Pin3Disabled), - new(state.Pin2Value, state.Pin2Disabled), - new(state.Pin1Value, state.Pin1Disabled), + new(state.Pin9State), + new(state.Pin8State), + new(state.Pin7State), + new(state.Pin6State), + new(state.Pin5State), + new(state.Pin4State), + new(state.Pin3State), + new(state.Pin2State), + new(state.Pin1State), }; - foreach (var pin in _pins) + foreach (var pin in pins) { - var nr = _pins.IndexOf(pin) + 1; - if (!pin.Disabled) + if (pin.PinStatus != PinStatus.Disabled) { - pin.Value = !pin.Value; + pin.PinStatus = pin.PinStatus == PinStatus.Standing ? PinStatus.Fallen : PinStatus.Standing; } } return state with { - Pin1Value = _pins[8].Value, - Pin2Value = _pins[7].Value, - Pin3Value = _pins[6].Value, - Pin4Value = _pins[5].Value, - Pin5Value = _pins[4].Value, - Pin6Value = _pins[3].Value, - Pin7Value = _pins[2].Value, - Pin8Value = _pins[1].Value, - Pin9Value = _pins[0].Value, + Pin1State = pins[8].PinStatus, + Pin2State = pins[7].PinStatus, + Pin3State = pins[6].PinStatus, + Pin4State = pins[5].PinStatus, + Pin5State = pins[4].PinStatus, + Pin6State = pins[3].PinStatus, + Pin7State = pins[2].PinStatus, + Pin8State = pins[1].PinStatus, + Pin9State = pins[0].PinStatus, ThrowPanelStateStatus = ThrowPanelStateStatus.BeforeThrow }; } - class PinState(bool value, bool disabled) + class PinState(PinStatus pinStatus) { - public bool Disabled { get; set; } = disabled; - public bool Value { get; set; } = value; + public PinStatus PinStatus { get; set; } = pinStatus; } [ReducerMethod] @@ -114,40 +148,46 @@ namespace KoogleApp.Store.Game.ThrowPanel { var chgCnt = 0; - var _pins = new List + var pins = new List { - new(state.Pin1Value, state.Pin1Disabled), - new(state.Pin2Value, state.Pin2Disabled), - new(state.Pin3Value, state.Pin3Disabled), - new(state.Pin4Value, state.Pin4Disabled), - new(state.Pin5Value, state.Pin5Disabled), - new(state.Pin6Value, state.Pin6Disabled), - new(state.Pin7Value, state.Pin7Disabled), - new(state.Pin8Value, state.Pin8Disabled), - new(state.Pin9Value, state.Pin9Disabled), + new(state.Pin1State), + new(state.Pin2State), + new(state.Pin3State), + new(state.Pin4State), + new(state.Pin5State), + new(state.Pin6State), + new(state.Pin7State), + new(state.Pin8State), + new(state.Pin9State), }; - foreach (var pin in _pins) + foreach (var pin in pins) { - var nr = _pins.IndexOf(pin) + 1; - if (!pin.Disabled) + //var nr = pins.IndexOf(pin) + 1; + //if (!pin.Disabled) + //{ + // pin.Value = chgCnt < action.Number; + // chgCnt++; + //} + + if (pin.PinStatus != PinStatus.Disabled) { - pin.Value = chgCnt < action.Number; + pin.PinStatus = chgCnt < action.Number ? PinStatus.Fallen : PinStatus.Standing; chgCnt++; } } return state with { - Pin1Value = _pins[8].Value, - Pin2Value = _pins[7].Value, - Pin3Value = _pins[6].Value, - Pin4Value = _pins[5].Value, - Pin5Value = _pins[4].Value, - Pin6Value = _pins[3].Value, - Pin7Value = _pins[2].Value, - Pin8Value = _pins[1].Value, - Pin9Value = _pins[0].Value, + Pin1State = pins[8].PinStatus, + Pin2State = pins[7].PinStatus, + Pin3State = pins[6].PinStatus, + Pin4State = pins[5].PinStatus, + Pin5State = pins[4].PinStatus, + Pin6State = pins[3].PinStatus, + Pin7State = pins[2].PinStatus, + Pin8State = pins[1].PinStatus, + Pin9State = pins[0].PinStatus, ThrowPanelStateStatus = ThrowPanelStateStatus.BeforeThrow }; } @@ -190,18 +230,17 @@ namespace KoogleApp.Store.Game.ThrowPanel var _pins = new List { - new(state.Pin9Value, state.Pin9Disabled), - new(state.Pin8Value, state.Pin8Disabled), - new(state.Pin7Value, state.Pin7Disabled), - new(state.Pin6Value, state.Pin6Disabled), - new(state.Pin5Value, state.Pin5Disabled), - new(state.Pin4Value, state.Pin4Disabled), - new(state.Pin3Value, state.Pin3Disabled), - new(state.Pin2Value, state.Pin2Disabled), - new(state.Pin1Value, state.Pin1Disabled), + new(state.Pin9State), new(state.Pin8State), + new(state.Pin7State), + new(state.Pin6State), + new(state.Pin5State), + new(state.Pin4State), + new(state.Pin3State), + new(state.Pin2State), + new( state.Pin1State), }; - if (_pins.All(_ => _.Value)) // abgeräumt + if (_pins.All(_ => _.PinStatus == PinStatus.Fallen)) // abgeräumt { reset = true; } @@ -210,12 +249,7 @@ namespace KoogleApp.Store.Game.ThrowPanel { foreach (var pin in _pins) { - var nr = _pins.IndexOf(pin) + 1; - //if (!pin.Disabled) - { - pin.Value = false; - pin.Disabled = false; - } + pin.PinStatus = PinStatus.Standing; } } else @@ -225,9 +259,9 @@ namespace KoogleApp.Store.Game.ThrowPanel foreach (var pin in _pins) { var nr = _pins.IndexOf(pin) + 1; - if (!pin.Disabled && pin.Value) + if (pin.PinStatus != PinStatus.Disabled && pin.PinStatus == PinStatus.Fallen) { - pin.Disabled = true; + pin.PinStatus = PinStatus.Disabled; } } } @@ -236,24 +270,15 @@ namespace KoogleApp.Store.Game.ThrowPanel return state with { - Pin1Value = _pins[8].Value, - Pin1Disabled = _pins[8].Disabled, - Pin2Value = _pins[7].Value, - Pin2Disabled = _pins[7].Disabled, - Pin3Value = _pins[6].Value, - Pin3Disabled = _pins[6].Disabled, - Pin4Value = _pins[5].Value, - Pin4Disabled = _pins[5].Disabled, - Pin5Value = _pins[4].Value, - Pin5Disabled = _pins[4].Disabled, - Pin6Value = _pins[3].Value, - Pin6Disabled = _pins[3].Disabled, - Pin7Value = _pins[2].Value, - Pin7Disabled = _pins[2].Disabled, - Pin8Value = _pins[1].Value, - Pin8Disabled = _pins[1].Disabled, - Pin9Value = _pins[0].Value, - Pin9Disabled = _pins[0].Disabled, + Pin1State = _pins[8].PinStatus, + Pin2State = _pins[7].PinStatus, + Pin3State = _pins[6].PinStatus, + Pin4State = _pins[5].PinStatus, + Pin5State = _pins[4].PinStatus, + Pin6State = _pins[3].PinStatus, + Pin7State = _pins[2].PinStatus, + Pin8State = _pins[1].PinStatus, + Pin9State = _pins[0].PinStatus, ThrowCounterPerRound = nextCounter, BellValue = false, ThrowPanelStateStatus = ThrowPanelStateStatus.AfterThrow, diff --git a/KoogleApp/Store/Game/ThrowPanel/State.cs b/KoogleApp/Store/Game/ThrowPanel/State.cs index b416f3e..b8fe38a 100644 --- a/KoogleApp/Store/Game/ThrowPanel/State.cs +++ b/KoogleApp/Store/Game/ThrowPanel/State.cs @@ -20,17 +20,22 @@ namespace KoogleApp.Store.Game.ThrowPanel GameEnd } + public enum PinStatus + { + Standing, + Fallen, + Disabled + } + [FeatureState] - public record ThrowPanelState(bool IsStated, bool BellValue, - bool Pin1Value, bool Pin2Value, bool Pin3Value, bool Pin4Value, bool Pin5Value, bool Pin6Value, bool Pin7Value, bool Pin8Value, bool Pin9Value, - bool Pin1Disabled, bool Pin2Disabled, bool Pin3Disabled, bool Pin4Disabled, bool Pin5Disabled, bool Pin6Disabled, bool Pin7Disabled, bool Pin8Disabled, bool Pin9Disabled, + public record ThrowPanelState(bool IsStated, bool BellValue, + PinStatus Pin1State, PinStatus Pin2State, PinStatus Pin3State, PinStatus Pin4State, PinStatus Pin5State, PinStatus Pin6State, PinStatus Pin7State, PinStatus Pin8State, PinStatus Pin9State, int ThrowsPerRound, int ThrowCounterPerRound, ThrowMode ThrowMode, ThrowPanelStateStatus ThrowPanelStateStatus, int ThrowCounter) { // Required for creating initial state - public ThrowPanelState() : this(BellValue:false, IsStated:false, - Pin1Value:false, Pin2Value:false, Pin3Value: false, Pin4Value: false, Pin5Value: false, Pin6Value: false, Pin7Value: false, Pin8Value: false, Pin9Value: false, - Pin1Disabled:false, Pin2Disabled:false, Pin3Disabled: false, Pin4Disabled: false, Pin5Disabled: false, Pin6Disabled: false, Pin7Disabled: false, Pin8Disabled: false, Pin9Disabled: false, - ThrowsPerRound : 3, ThrowCounterPerRound : 1, ThrowMode : ThrowMode.Reposition, ThrowPanelStateStatus: ThrowPanelStateStatus.Undefined, ThrowCounter:0 + public ThrowPanelState() : this(BellValue:false, IsStated:false, + Pin1State : PinStatus.Standing, Pin2State: PinStatus.Standing, Pin3State: PinStatus.Standing, Pin4State: PinStatus.Standing, Pin5State: PinStatus.Standing, Pin6State: PinStatus.Standing, Pin7State: PinStatus.Standing, Pin8State: PinStatus.Standing, Pin9State: PinStatus.Standing, + ThrowsPerRound : 3, ThrowCounterPerRound : 1, ThrowMode : ThrowMode.Reposition, ThrowPanelStateStatus: ThrowPanelStateStatus.Undefined, ThrowCounter:0 ) { } } diff --git a/KoogleApp/ThrowPanelState.json b/KoogleApp/ThrowPanelState.json deleted file mode 100644 index 23c85c3..0000000 --- a/KoogleApp/ThrowPanelState.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "IsStated": false, - "BellValue": false, - "Pin1Value": false, - "Pin2Value": false, - "Pin3Value": false, - "Pin4Value": false, - "Pin5Value": false, - "Pin6Value": false, - "Pin7Value": false, - "Pin8Value": false, - "Pin9Value": false, - "Pin1Disabled": false, - "Pin2Disabled": false, - "Pin3Disabled": false, - "Pin4Disabled": false, - "Pin5Disabled": false, - "Pin6Disabled": false, - "Pin7Disabled": false, - "Pin8Disabled": false, - "Pin9Disabled": false, - "ThrowsPerRound": 3, - "ThrowCounterPerRound": 1, - "ThrowMode": 0, - "ThrowPanelStateStatus": 4, - "ThrowCounter": 0 -} \ No newline at end of file diff --git a/KoogleApp/appdata.json b/KoogleApp/appdata.json new file mode 100644 index 0000000..83eb0fe --- /dev/null +++ b/KoogleApp/appdata.json @@ -0,0 +1,330 @@ +{ + "CurrentData": { + "Status": { + "ThrowPanelState": { + "IsStated": true, + "BellValue": false, + "Pin1State": 0, + "Pin2State": 0, + "Pin3State": 0, + "Pin4State": 0, + "Pin5State": 0, + "Pin6State": 0, + "Pin7State": 0, + "Pin8State": 0, + "Pin9State": 0, + "ThrowsPerRound": 3, + "ThrowCounterPerRound": 1, + "ThrowMode": 1, + "ThrowPanelStateStatus": 3, + "ThrowCounter": 6 + } + }, + "Version": 13, + "LastModified": "2025-11-11T21:28:53.8441622+01:00", + "LastModifiedBy": "test1@test.de" + }, + "UndoHistory": [ + { + "Status": { + "ThrowPanelState": { + "IsStated": true, + "BellValue": false, + "Pin1State": 0, + "Pin2State": 0, + "Pin3State": 0, + "Pin4State": 1, + "Pin5State": 2, + "Pin6State": 0, + "Pin7State": 2, + "Pin8State": 0, + "Pin9State": 0, + "ThrowsPerRound": 3, + "ThrowCounterPerRound": 3, + "ThrowMode": 1, + "ThrowPanelStateStatus": 2, + "ThrowCounter": 5 + } + }, + "Version": 12, + "LastModified": "2025-11-11T21:28:53.8383228+01:00", + "LastModifiedBy": "test1@test.de" + }, + { + "Status": { + "ThrowPanelState": { + "IsStated": true, + "BellValue": false, + "Pin1State": 0, + "Pin2State": 0, + "Pin3State": 0, + "Pin4State": 0, + "Pin5State": 2, + "Pin6State": 0, + "Pin7State": 2, + "Pin8State": 0, + "Pin9State": 0, + "ThrowsPerRound": 3, + "ThrowCounterPerRound": 3, + "ThrowMode": 1, + "ThrowPanelStateStatus": 3, + "ThrowCounter": 5 + } + }, + "Version": 11, + "LastModified": "2025-11-11T21:28:51.9038117+01:00", + "LastModifiedBy": "test1@test.de" + }, + { + "Status": { + "ThrowPanelState": { + "IsStated": true, + "BellValue": false, + "Pin1State": 0, + "Pin2State": 0, + "Pin3State": 0, + "Pin4State": 0, + "Pin5State": 1, + "Pin6State": 0, + "Pin7State": 1, + "Pin8State": 0, + "Pin9State": 0, + "ThrowsPerRound": 3, + "ThrowCounterPerRound": 2, + "ThrowMode": 1, + "ThrowPanelStateStatus": 2, + "ThrowCounter": 4 + } + }, + "Version": 10, + "LastModified": "2025-11-11T21:28:51.8982999+01:00", + "LastModifiedBy": "test1@test.de" + }, + { + "Status": { + "ThrowPanelState": { + "IsStated": true, + "BellValue": false, + "Pin1State": 0, + "Pin2State": 0, + "Pin3State": 0, + "Pin4State": 0, + "Pin5State": 0, + "Pin6State": 0, + "Pin7State": 0, + "Pin8State": 0, + "Pin9State": 0, + "ThrowsPerRound": 3, + "ThrowCounterPerRound": 2, + "ThrowMode": 1, + "ThrowPanelStateStatus": 3, + "ThrowCounter": 4 + } + }, + "Version": 9, + "LastModified": "2025-11-11T21:28:46.3878041+01:00", + "LastModifiedBy": "test1@test.de" + }, + { + "Status": { + "ThrowPanelState": { + "IsStated": true, + "BellValue": false, + "Pin1State": 1, + "Pin2State": 1, + "Pin3State": 1, + "Pin4State": 1, + "Pin5State": 1, + "Pin6State": 1, + "Pin7State": 1, + "Pin8State": 1, + "Pin9State": 1, + "ThrowsPerRound": 3, + "ThrowCounterPerRound": 1, + "ThrowMode": 1, + "ThrowPanelStateStatus": 2, + "ThrowCounter": 3 + } + }, + "Version": 8, + "LastModified": "2025-11-11T21:28:46.3824896+01:00", + "LastModifiedBy": "test1@test.de" + }, + { + "Status": { + "ThrowPanelState": { + "IsStated": true, + "BellValue": false, + "Pin1State": 0, + "Pin2State": 0, + "Pin3State": 0, + "Pin4State": 0, + "Pin5State": 0, + "Pin6State": 0, + "Pin7State": 0, + "Pin8State": 0, + "Pin9State": 0, + "ThrowsPerRound": 3, + "ThrowCounterPerRound": 1, + "ThrowMode": 1, + "ThrowPanelStateStatus": 3, + "ThrowCounter": 3 + } + }, + "Version": 7, + "LastModified": "2025-11-11T21:28:43.6630774+01:00", + "LastModifiedBy": "test1@test.de" + }, + { + "Status": { + "ThrowPanelState": { + "IsStated": true, + "BellValue": false, + "Pin1State": 1, + "Pin2State": 2, + "Pin3State": 1, + "Pin4State": 2, + "Pin5State": 1, + "Pin6State": 1, + "Pin7State": 2, + "Pin8State": 1, + "Pin9State": 2, + "ThrowsPerRound": 3, + "ThrowCounterPerRound": 3, + "ThrowMode": 1, + "ThrowPanelStateStatus": 2, + "ThrowCounter": 2 + } + }, + "Version": 6, + "LastModified": "2025-11-11T21:28:43.659034+01:00", + "LastModifiedBy": "test1@test.de" + }, + { + "Status": { + "ThrowPanelState": { + "IsStated": true, + "BellValue": false, + "Pin1State": 0, + "Pin2State": 2, + "Pin3State": 0, + "Pin4State": 2, + "Pin5State": 0, + "Pin6State": 0, + "Pin7State": 2, + "Pin8State": 0, + "Pin9State": 2, + "ThrowsPerRound": 3, + "ThrowCounterPerRound": 3, + "ThrowMode": 1, + "ThrowPanelStateStatus": 3, + "ThrowCounter": 2 + } + }, + "Version": 5, + "LastModified": "2025-11-11T21:28:41.8730592+01:00", + "LastModifiedBy": "test1@test.de" + }, + { + "Status": { + "ThrowPanelState": { + "IsStated": true, + "BellValue": false, + "Pin1State": 0, + "Pin2State": 1, + "Pin3State": 0, + "Pin4State": 1, + "Pin5State": 0, + "Pin6State": 0, + "Pin7State": 1, + "Pin8State": 0, + "Pin9State": 2, + "ThrowsPerRound": 3, + "ThrowCounterPerRound": 2, + "ThrowMode": 1, + "ThrowPanelStateStatus": 2, + "ThrowCounter": 1 + } + }, + "Version": 4, + "LastModified": "2025-11-11T21:28:41.8621437+01:00", + "LastModifiedBy": "test1@test.de" + }, + { + "Status": { + "ThrowPanelState": { + "IsStated": true, + "BellValue": false, + "Pin1State": 0, + "Pin2State": 0, + "Pin3State": 0, + "Pin4State": 0, + "Pin5State": 0, + "Pin6State": 0, + "Pin7State": 0, + "Pin8State": 0, + "Pin9State": 2, + "ThrowsPerRound": 3, + "ThrowCounterPerRound": 2, + "ThrowMode": 1, + "ThrowPanelStateStatus": 3, + "ThrowCounter": 1 + } + }, + "Version": 3, + "LastModified": "2025-11-11T21:28:37.9622236+01:00", + "LastModifiedBy": "test1@test.de" + }, + { + "Status": { + "ThrowPanelState": { + "IsStated": true, + "BellValue": false, + "Pin1State": 0, + "Pin2State": 0, + "Pin3State": 0, + "Pin4State": 0, + "Pin5State": 0, + "Pin6State": 0, + "Pin7State": 0, + "Pin8State": 0, + "Pin9State": 1, + "ThrowsPerRound": 3, + "ThrowCounterPerRound": 1, + "ThrowMode": 1, + "ThrowPanelStateStatus": 2, + "ThrowCounter": 0 + } + }, + "Version": 2, + "LastModified": "2025-11-11T21:28:37.9354506+01:00", + "LastModifiedBy": "test1@test.de" + }, + { + "Status": { + "ThrowPanelState": { + "IsStated": true, + "BellValue": false, + "Pin1State": 0, + "Pin2State": 0, + "Pin3State": 0, + "Pin4State": 0, + "Pin5State": 0, + "Pin6State": 0, + "Pin7State": 0, + "Pin8State": 0, + "Pin9State": 0, + "ThrowsPerRound": 3, + "ThrowCounterPerRound": 1, + "ThrowMode": 1, + "ThrowPanelStateStatus": 1, + "ThrowCounter": 0 + } + }, + "Version": 1, + "LastModified": "2025-11-11T21:28:35.0126704+01:00", + "LastModifiedBy": "test1@test.de" + } + ], + "RedoHistory": [] +} \ No newline at end of file