From df85efcfd2711b4274e889708f322d51a5eb0ff2 Mon Sep 17 00:00:00 2001 From: beo3000 Date: Thu, 13 Nov 2025 21:30:02 +0100 Subject: [PATCH] created daystate --- KoogleApp/Components/Pages/Game.razor | 14 ++++++++++++-- KoogleApp/KoogleApp.csproj | 1 + KoogleApp/Services/ServiceExtension.cs | 4 +++- KoogleApp/Store/Day/Actions.cs | 4 ++++ KoogleApp/Store/Day/Effects.cs | 23 +++++++++++++++++++++++ KoogleApp/Store/Day/Feature.cs | 24 ++++++++++++++++++++++++ KoogleApp/Store/Day/Reducers.cs | 10 ++++++++++ KoogleApp/Store/Day/State.cs | 23 +++++++++++++++++++++++ KoogleApp/Store/Player/Effects.cs | 4 ++-- KoogleApp/Store/Player/Reducers.cs | 2 +- KoogleApp/readme.md | 6 ++++++ 11 files changed, 109 insertions(+), 6 deletions(-) create mode 100644 KoogleApp/Store/Day/Actions.cs create mode 100644 KoogleApp/Store/Day/Effects.cs create mode 100644 KoogleApp/Store/Day/Feature.cs create mode 100644 KoogleApp/Store/Day/Reducers.cs create mode 100644 KoogleApp/Store/Day/State.cs diff --git a/KoogleApp/Components/Pages/Game.razor b/KoogleApp/Components/Pages/Game.razor index 83de08a..b8fb106 100644 --- a/KoogleApp/Components/Pages/Game.razor +++ b/KoogleApp/Components/Pages/Game.razor @@ -8,6 +8,7 @@ @using KoogleApp.Components.Dialogs @using KoogleApp.Model.EventMessages @using KoogleApp.Model.Framework +@using KoogleApp.Store.Day @using KoogleApp.Store.Game @using KoogleApp.Store.Game.ThrowPanel @using KoogleApp.Store.Game.UndoRedo @@ -23,7 +24,7 @@ @inject AuthenticationStateProvider AuthenticationStateProvider @inject IMyEventAggregator EventAggregator @inject IState ThrowPanelState -@inject IState UndoRedoState +@inject IState DayState @inject IDispatcher Dispatcher @inject IDialogService DialogService @@ -56,7 +57,14 @@ @switch (_gameView) { case GameView.Throw: - + if (DayState.Value.Status == DayStatus.New) + { +

todo

+ } + else + { + + } break; case GameView.Board: @@ -89,6 +97,8 @@ // if (!ThrowPanelState.Value.IsConnected) { Dispatcher.Dispatch(new ConnectToHubAction()); + Dispatcher.Dispatch(new InitializeDayAction()); + Dispatcher.Dispatch(new UpdateUndoRedoStateAction()); } } diff --git a/KoogleApp/KoogleApp.csproj b/KoogleApp/KoogleApp.csproj index 38828fc..f1dab4a 100644 --- a/KoogleApp/KoogleApp.csproj +++ b/KoogleApp/KoogleApp.csproj @@ -9,6 +9,7 @@ + diff --git a/KoogleApp/Services/ServiceExtension.cs b/KoogleApp/Services/ServiceExtension.cs index 3d4197e..b26521c 100644 --- a/KoogleApp/Services/ServiceExtension.cs +++ b/KoogleApp/Services/ServiceExtension.cs @@ -3,6 +3,7 @@ using KoogleApp.Data; using KoogleApp.Data.Repository; using KoogleApp.Hub; using System.Reflection; +using Fluxor.Blazor.Web.ReduxDevTools; namespace KoogleApp.Services { @@ -11,7 +12,8 @@ namespace KoogleApp.Services public static IServiceCollection AddAppServices(this IServiceCollection services) { services.AddFluxor(x => - x.ScanAssemblies(typeof(ServiceExtension).Assembly)); + x.ScanAssemblies(typeof(ServiceExtension).Assembly) + .UseReduxDevTools()); services.AddScopedEventAggregator(); services.AddScoped(); diff --git a/KoogleApp/Store/Day/Actions.cs b/KoogleApp/Store/Day/Actions.cs new file mode 100644 index 0000000..0e16d92 --- /dev/null +++ b/KoogleApp/Store/Day/Actions.cs @@ -0,0 +1,4 @@ +namespace KoogleApp.Store.Day +{ + public record InitializeDayAction(); +} diff --git a/KoogleApp/Store/Day/Effects.cs b/KoogleApp/Store/Day/Effects.cs new file mode 100644 index 0000000..679e84f --- /dev/null +++ b/KoogleApp/Store/Day/Effects.cs @@ -0,0 +1,23 @@ +using Fluxor; +using Fluxor.Blazor.Web; +using KoogleApp.Data; + +namespace KoogleApp.Store.Day +{ + public class DayStateEffects + { + private readonly SharedDataService _dataService; + + public DayStateEffects(SharedDataService dataService) + { + _dataService = dataService; + } + + [EffectMethod] + public async Task HandleInitializeDayAction(InitializeDayAction action, IDispatcher dispatcher) + { + + } + } + +} diff --git a/KoogleApp/Store/Day/Feature.cs b/KoogleApp/Store/Day/Feature.cs new file mode 100644 index 0000000..af00478 --- /dev/null +++ b/KoogleApp/Store/Day/Feature.cs @@ -0,0 +1,24 @@ +using Fluxor; +using KoogleApp.Data; + +namespace KoogleApp.Store.Day +{ + public class DayStateFeature : Feature + { + private readonly SharedDataService _dataService; + + public DayStateFeature(SharedDataService dataService) + { + _dataService = dataService; + } + + public override string GetName() => "DayState"; + + protected override DayState GetInitialState() + { + return new DayState(); + } + + + } +} diff --git a/KoogleApp/Store/Day/Reducers.cs b/KoogleApp/Store/Day/Reducers.cs new file mode 100644 index 0000000..43ff20e --- /dev/null +++ b/KoogleApp/Store/Day/Reducers.cs @@ -0,0 +1,10 @@ +using Fluxor; + +namespace KoogleApp.Store.Day +{ + public static class DayStateReducers + { + //[ReducerMethod] + + } +} diff --git a/KoogleApp/Store/Day/State.cs b/KoogleApp/Store/Day/State.cs new file mode 100644 index 0000000..1ff32c3 --- /dev/null +++ b/KoogleApp/Store/Day/State.cs @@ -0,0 +1,23 @@ +using System.Diagnostics.CodeAnalysis; +using Fluxor; +using MudBlazor; + +namespace KoogleApp.Store.Day +{ + public enum DayStatus + { + New, + Started, + Finished + } + + //[FeatureState] + public record DayState(int Number, DateTime Date, DayStatus Status) + { + public DayState() : this(Number: 0, Date: DateTime.Today, Status: DayStatus.New) + { + } + } + + +} \ No newline at end of file diff --git a/KoogleApp/Store/Player/Effects.cs b/KoogleApp/Store/Player/Effects.cs index e4d50fc..b4b2aa4 100644 --- a/KoogleApp/Store/Player/Effects.cs +++ b/KoogleApp/Store/Player/Effects.cs @@ -3,11 +3,11 @@ using KoogleApp.Data; namespace KoogleApp.Store.Player { - public class PlayerEffects + public class PlayerStateEffects { private readonly SharedDataService _dataService; - public PlayerEffects(SharedDataService dataService) + public PlayerStateEffects(SharedDataService dataService) { _dataService = dataService; } diff --git a/KoogleApp/Store/Player/Reducers.cs b/KoogleApp/Store/Player/Reducers.cs index 1c353b0..f9746c3 100644 --- a/KoogleApp/Store/Player/Reducers.cs +++ b/KoogleApp/Store/Player/Reducers.cs @@ -3,7 +3,7 @@ using System; namespace KoogleApp.Store.Player { - public class PlayersStateReducers + public static class PlayersStateReducers { [ReducerMethod] public static PlayersState OnPlayersLoaded(PlayersState state, PlayersLoadedAction action) diff --git a/KoogleApp/readme.md b/KoogleApp/readme.md index 7b7cb87..076ba9c 100644 --- a/KoogleApp/readme.md +++ b/KoogleApp/readme.md @@ -11,4 +11,10 @@ Update Database: ## TODOs - Redo State after start / lode or game stop + + + + +## Fluxor: +- https://dev.to/mr_eking/advanced-blazor-state-management-using-fluxor-part-5-14j2 - \ No newline at end of file