Slip- und Beschuldigungslogik überarbeitet
All checks were successful
Build / build (push) Successful in 2m19s

Slips werden jetzt 30 Sekunden vorgehalten und anschließend automatisch abgeschlossen; direkte Spieler-Beschuldigungen, Win-Status, SignalR-Events, MAUI-UI, EF-Mapping/Migrationen sowie Tests wurden an die neue Spiellogik angepasst.
This commit is contained in:
Tim Krampitz
2026-10-04 19:14:16 +02:00
parent f54b177441
commit 010e844976
18 changed files with 1272 additions and 166 deletions

View File

@@ -19,9 +19,11 @@ public class Game
public DateTime? EndedAt { get; set; }
public int MaxPlayers { get; set; } = 8;
public int RoundDurationSeconds { get; set; } = 45;
public int? WinnerPlayerId { get; set; }
// Navigation
public User Host { get; set; } = null!;
public Player? WinnerPlayer { get; set; }
public ICollection<Player> Players { get; set; } = [];
public ICollection<GameRound> Rounds { get; set; } = [];
}

View File

@@ -7,6 +7,7 @@ public class PlayerCard
public int PhraseId { get; set; }
public int GameRoundId { get; set; }
public bool IsUsed { get; set; } = false;
public DateTime? SlippedAt { get; set; }
public DateTime AssignedAt { get; set; } = DateTime.UtcNow;
// Navigation

View File

@@ -3,8 +3,8 @@ namespace SlipItIn.Shared.Models;
public enum ChallengeStatus
{
Pending, // Beschuldigung eingegangen, wartet auf Bestätigung/Ablehnung
Approved, // Beschuldigung war berechtigt → Phrase bleibt beim Beschuldiger
Rejected // Beschuldigung falsch → Beschuldiger erhält die Phrase
Approved, // Beschuldigung war berechtigt -> Beschuldigter muss Karte ablegen und 2 neue ziehen
Rejected // Beschuldigung angefochten -> Beschuldigung zurückgenommen
}
public class SlipChallenge
@@ -13,7 +13,7 @@ public class SlipChallenge
public int GameRoundId { get; set; }
public int ChallengingPlayerId { get; set; } // Wer beschuldigt
public int TargetPlayerId { get; set; } // Wer beschuldigt wird
public int TargetCardId { get; set; } // Welche Phrase wird als falsch behauptet
public int? TargetCardId { get; set; } // Optional: Angefochtene Karte falls bekannt/zugeordnet
public ChallengeStatus Status { get; set; } = ChallengeStatus.Pending;
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public DateTime? ResolvedAt { get; set; }
@@ -22,5 +22,5 @@ public class SlipChallenge
public GameRound GameRound { get; set; } = null!;
public Player ChallengingPlayer { get; set; } = null!; // Der Beschuldiger
public Player TargetPlayer { get; set; } = null!; // Der Beschuldigte
public PlayerCard TargetCard { get; set; } = null!; // Die angefochtene Phrase
public PlayerCard? TargetCard { get; set; } // Die angefochtene Phrase (optional)
}