From d586c96ddf56c0af87018b04a0005a0b41a91ff5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tommy=20=C3=96man?= Date: Tue, 28 Oct 2025 07:16:55 +0100 Subject: [PATCH] =?UTF-8?q?Sm=C3=A5=20=C3=A4ndringar=20i=20roundrunning?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewModelClasses/RoundRunningViewModel.cs | 69 ++++++++++--------- 1 file changed, 38 insertions(+), 31 deletions(-) diff --git a/GreadyPoang.ViewModelLayer/ViewModelClasses/RoundRunningViewModel.cs b/GreadyPoang.ViewModelLayer/ViewModelClasses/RoundRunningViewModel.cs index 9661424..5093875 100644 --- a/GreadyPoang.ViewModelLayer/ViewModelClasses/RoundRunningViewModel.cs +++ b/GreadyPoang.ViewModelLayer/ViewModelClasses/RoundRunningViewModel.cs @@ -90,30 +90,15 @@ public partial class RoundRunningViewModel : ObservableObject RoundElements.Add(item); } - // Räkna ut vem som är nästa spelare - var nxt = nextPlayerElement(); - - // Aktuell spelare sätts som BuilderObject - BuilderObject.ParticipantName = _objectMessage.CurrentGroup.Elements[nxt].ParticipantName; - BuilderObject.GameRoundId = _objectMessage.CurrentGroup.GameRoundId; - BuilderObject.ParticipantId = _objectMessage.CurrentGroup.Elements[nxt].ParticipantId; BuilderObject.Status = _objectMessage.CurrentGroup.Status; - // Alla poängposter från samtliga spelare i rundan samlas ihop och fördelas per deltagare - var localElements = _combined.roundBuilderElementsTotalById(_objectMessage.CurrentGroup.GameRoundId); - - FillupResultTable(localElements); - foreach (var col in PlayerColumns) - { - RoundElements.FirstOrDefault(e => e.ParticipantId == col.PlayerId).GameRegPoints = col.PlayerPoints; - } - //TriggerRebuild(); - BuildScore(playerColumns); + UpdateAndShow(); } } + [RelayCommand] private void StoreAndHandlePointsAsync() { @@ -149,21 +134,8 @@ public partial class RoundRunningViewModel : ObservableObject RoundElements.Add(item); } - // Uppdatera spelaren som skall spela nästa - var nxt = nextPlayerElement(); BuilderObject.GameRegPoints = 0; - BuilderObject.ParticipantName = RoundElements[nxt].ParticipantName; - BuilderObject.ParticipantId = RoundElements[nxt].ParticipantId; - BuilderObject.GameRoundId = RoundElements[0].GameRoundId; - - var localElements = _combined.roundBuilderElementsTotalById(BuilderObject.GameRoundId); - FillupResultTable(localElements); - foreach (var col in PlayerColumns) - { - RoundElements.FirstOrDefault(e => e.ParticipantId == col.PlayerId).GameRegPoints = col.PlayerPoints; - } - // TriggerRebuild(); - BuildScore(playerColumns); + UpdateAndShow(); Shell.Current.GoToAsync("..").GetAwaiter().GetResult(); } @@ -180,6 +152,34 @@ public partial class RoundRunningViewModel : ObservableObject return -1; } + private void UpdateAndShow() + { + // Räkna ut vem som är nästa spelare + var nxt = nextPlayerElement(); + + // Aktuell spelare sätts som BuilderObject + BuilderObject.ParticipantName = _objectMessage.CurrentGroup.Elements[nxt].ParticipantName; + BuilderObject.ParticipantId = _objectMessage.CurrentGroup.Elements[nxt].ParticipantId; + BuilderObject.GameRoundId = _objectMessage.CurrentGroup.GameRoundId; + + + // Alla poängposter från samtliga spelare i rundan samlas ihop och fördelas per deltagare + var localElements = _combined.roundBuilderElementsTotalById(_objectMessage.CurrentGroup.GameRoundId); + + FillupResultTable(localElements); + // Fix for CS8602: Add null check before dereferencing FirstOrDefault result + foreach (var col in PlayerColumns) + { + var roundElement = RoundElements.FirstOrDefault(e => e.ParticipantId == col.PlayerId); + if (roundElement != null) + { + roundElement.GameRegPoints = col.PlayerPoints; + } + } + // Fix for MVVMTK0034: Use the generated property 'PlayerColumns' instead of the backing field 'playerColumns' + BuildScore(PlayerColumns); + } + private void Show_a_Popup(string ppName, string ppTitle, string ppMessage) { //if (!PopupVisad) @@ -296,7 +296,14 @@ public partial class RoundRunningViewModel : ObservableObject var nextPlayer = RoundElements[AfterNext()].ParticipantName; Debug.WriteLine($"Spelare {nextPlayer} samma som {player.PlayerName} ???."); + if (existingWinning != null && existingWinning.ParticipantId != player.PlayerId) + { + // Det finns redan en vinnare, sätt dennes status tillbaka till InProgress + existingWinning.Status = GamePointStatus.InProgress; + } + // Om det redan finns en vinnare, sätt dennes status tillbaka till InProgress, kanske + var winner = RoundElements.FirstOrDefault(e => e.ParticipantId == player.PlayerId); var oldStatus = winner.Status; winner.Status = GamePointStatus.Winning;