Checkar in innan funktionen är klar

This commit is contained in:
2025-10-25 08:46:52 +02:00
parent 26ff51169f
commit 5ff42f5bca
4 changed files with 86 additions and 61 deletions

View File

@ -42,7 +42,7 @@ public partial class RoundRunningViewModel : ObservableObject
RoundElements = new ObservableCollection<RoundBuilderElement>();
BuilderObject = new();
_popupEvent.InfoPopupCloseRequested += infoPopupViewModel_ClosePopupRequested;
PopupVisad = false;
//PopupVisad = false;
OnLoadedCommand = new AsyncRelayCommand(OnLoadedAsync, () => true);
}
@ -67,7 +67,7 @@ public partial class RoundRunningViewModel : ObservableObject
private string _activePopupId;
public bool PopupVisad { get; set; }
//public bool PopupVisad { get; set; }
private async Task OnLoadedAsync()
{
@ -182,24 +182,24 @@ public partial class RoundRunningViewModel : ObservableObject
private void Show_a_Popup(string ppName, string ppTitle, string ppMessage)
{
if (!PopupVisad)
//if (!PopupVisad)
//{
var queryAttributes = new Dictionary<string, object>
{
var queryAttributes = new Dictionary<string, object>
{
[nameof(InfoPopupViewModel.Title)] = ppTitle,
[nameof(InfoPopupViewModel.Message)] = ppMessage,
[nameof(InfoPopupViewModel.Name)] = ppName,
[nameof(InfoPopupViewModel.Title)] = ppTitle,
[nameof(InfoPopupViewModel.Message)] = ppMessage,
[nameof(InfoPopupViewModel.Name)] = ppName,
};
};
_popupService.ShowPopup<InfoPopupViewModel>(
Shell.Current,
options: PopupOptions.Empty,
shellParameters: queryAttributes);
_popupService.ShowPopup<InfoPopupViewModel>(
Shell.Current,
options: PopupOptions.Empty,
shellParameters: queryAttributes);
_activePopupId = LatestPopup.valueGuid;
_activePopupId = LatestPopup.valueGuid;
}
//}
}
private async void infoPopupViewModel_ClosePopupRequested(object? sender, PopupCloseEventArgs e)
@ -208,7 +208,7 @@ public partial class RoundRunningViewModel : ObservableObject
{
return;
}
PopupVisad = true;
//PopupVisad = true;
await _popupService.ClosePopupAsync(Shell.Current);
}
@ -229,10 +229,12 @@ public partial class RoundRunningViewModel : ObservableObject
{
PlayerColumn player = new PlayerColumn();
var regMax = elements.Max(e => e.GameRoundRegNr);
var existingWinning = elements.FirstOrDefault(e => e.Status == GamePointStatus.Winning);
foreach (var element in elements)
{
player = PlayerColumns.FirstOrDefault(p => p.PlayerId == element.ParticipantId);
player = PlayerColumns.FirstOrDefault(p => p.PlayerId == element.ParticipantId)!;
if (player == null)
{
player = new PlayerColumn
@ -250,23 +252,7 @@ public partial class RoundRunningViewModel : ObservableObject
player.PlayerPoints += element.GameRegPoints;
if (player.PlayerPoints > 10000)
{
var winner = RoundElements.FirstOrDefault(e => e.ParticipantId == player.PlayerId);
var oldStatus = winner.Status;
winner.Status = GamePointStatus.Winning;
if (playerPointsOld < 10000 && oldStatus != winner.Status)
{
Show_a_Popup(
player.PlayerName,
"Se upp för denne spelare !",
$"Du har nått en poängnivå över 10000 ({player.PlayerPoints})\r" +
$"Alla övriga får nu en chans att överträffa\r" +
$"om någon kommer till samma poäng som\r" +
$"{player.PlayerName}\r" +
$"får hen försvara sig med nytt kast\r" +
$"Om kastet inte blir godkänt (ger poäng)\r" +
$"Vinner den upphinnande spelaren"
);
}
HandlePlayerReachedWinningThreshold(player, regMax, element, playerPointsOld, existingWinning);
}
}
@ -299,6 +285,47 @@ public partial class RoundRunningViewModel : ObservableObject
}
}
private void HandlePlayerReachedWinningThreshold(
PlayerColumn player,
int regMax,
RoundBuilderElement element,
int playerPointsOld,
RoundBuilderElement existingWinning
)
{
var nextPlayer = RoundElements[AfterNext()].ParticipantName;
Debug.WriteLine($"Spelare {nextPlayer} samma som {player.PlayerName} ???.");
// 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;
if (playerPointsOld < 10000 && oldStatus != winner.Status && regMax == element.GameRoundRegNr)
{
//PopupVisad = false;
Show_a_Popup(
player.PlayerName,
"Se upp för denne spelare !",
$"Du har nått en poängnivå över 10000 ({player.PlayerPoints})\r" +
$"Alla övriga får nu en chans att överträffa\r" +
$"om någon kommer till samma poäng som\r" +
$"{player.PlayerName}\r" +
$"får hen försvara sig med nytt kast\r" +
$"Om kastet inte blir godkänt (ger poäng)\r" +
$"Vinner den upphinnande spelaren"
);
}
}
private int AfterNext()
{
var comingUp = nextPlayerElement();
if (RoundElements.Count - 1 == comingUp)
{
return 0;
}
return comingUp;
}
public void BuildScore(IEnumerable<PlayerColumn> columns)
{