diff --git a/BlazorSolution/MiniGames/Client/ViewModel/Uno.cs b/BlazorSolution/MiniGames/Client/ViewModel/Uno.cs index 9cff5de..231837e 100644 --- a/BlazorSolution/MiniGames/Client/ViewModel/Uno.cs +++ b/BlazorSolution/MiniGames/Client/ViewModel/Uno.cs @@ -7,7 +7,7 @@ namespace MiniGames.Client.ViewModel { public class Uno : IUno { - public StapelModel KartenAblageStapel { get; set; } = new(); + public StapelModel AblageKartenStapel { get; set; } = new(); public StapelModel ZiehKartenStapel { get; set; } = new(); public List Spieler { get; set; } = new(); public int NaechsterSpielerId { get; set; } @@ -17,7 +17,7 @@ namespace MiniGames.Client.ViewModel { bool ergebnis; - _ = KartenAblageStapel.KartenModels.LastOrDefault().Farbe.Equals(neueKarteFarbe) ? ergebnis = true : ergebnis = false; + _ = AblageKartenStapel.KartenModels.LastOrDefault().Farbe.Equals(neueKarteFarbe) ? ergebnis = true : ergebnis = false; return ergebnis; } @@ -26,7 +26,7 @@ namespace MiniGames.Client.ViewModel { bool ergebnis; - _ = KartenAblageStapel.KartenModels.LastOrDefault().Name.Equals(handStapelKarteBezeichnung) ? ergebnis = true : ergebnis = false; + _ = AblageKartenStapel.KartenModels.LastOrDefault().Name.Equals(handStapelKarteBezeichnung) ? ergebnis = true : ergebnis = false; return ergebnis; } @@ -51,9 +51,9 @@ namespace MiniGames.Client.ViewModel const string _retoureKarte = "RetoureKarte"; const string _aussetzenKarte = "AussetzenKarte"; - if (KartenAblageStapel.KartenModels is null) + if (AblageKartenStapel.KartenModels is null) { - KartenAblageStapel.KartenModels = new(); + AblageKartenStapel.KartenModels = new(); } switch (zuLegendeKarte.Name) @@ -70,6 +70,7 @@ namespace MiniGames.Client.ViewModel break; case _aussetzenKarte: + AussetzenKarteSpielerWahl(id, Uhrzeigersinn); break; default: @@ -128,6 +129,33 @@ namespace MiniGames.Client.ViewModel } } + public void AussetzenKarteSpielerWahl(int aktuellerSpielerId, bool uhrZeigerSinn) + { + var aktuellerSpielerIndex = Spieler.FindIndex(x => x.SpielerModel.Id == aktuellerSpielerId); + if (uhrZeigerSinn) + { + if (aktuellerSpielerIndex == Spieler.Count() - 1) + { + NaechsterSpielerId = 2; + } + else + { + NaechsterSpielerId = Spieler[aktuellerSpielerIndex + 2].SpielerModel.Id; + } + } + else + { + if (aktuellerSpielerIndex != 0) + { + NaechsterSpielerId = Spieler[aktuellerSpielerIndex - 2].SpielerModel.Id; + } + else + { + NaechsterSpielerId = Spieler[Spieler.Count() - 2].SpielerModel.Id; + } + } + } + #region Stapel Erstellen public static StapelModel ErstelleStandardKarten() { diff --git a/BlazorSolution/MiniGamesTests/UnoTest.cs b/BlazorSolution/MiniGamesTests/UnoTest.cs index 4cfcc02..2f21ff9 100644 --- a/BlazorSolution/MiniGamesTests/UnoTest.cs +++ b/BlazorSolution/MiniGamesTests/UnoTest.cs @@ -244,8 +244,8 @@ namespace MiniGamesTests //act - UnoRegeln.KartenAblageStapel.KartenModels = new(); - UnoRegeln.KartenAblageStapel.KartenModels.Add( + UnoRegeln.AblageKartenStapel.KartenModels = new(); + UnoRegeln.AblageKartenStapel.KartenModels.Add( BeispielKarte("Testkarten Name", _ablegeStabelKarteFarbe, false) ); var erhalten = UnoRegeln.IstAblageStapelFarbeGleichZuLegendeKarte(_neueKarteFarbe); @@ -269,8 +269,8 @@ namespace MiniGamesTests var _erwartet = erwartet; //act - UnoRegeln.KartenAblageStapel.KartenModels = new(); - UnoRegeln.KartenAblageStapel.KartenModels.Add( + UnoRegeln.AblageKartenStapel.KartenModels = new(); + UnoRegeln.AblageKartenStapel.KartenModels.Add( BeispielKarte(_ablegeStapelKarteBezeichnung, Farbe.Blau.ToString(), false) ); var erhalten = UnoRegeln.IstAblageStapelZahlGleichZuLegendeKarte(_handStapelKarteBezeichnung); @@ -359,6 +359,31 @@ namespace MiniGamesTests Assert.Equal(naechsterSpielerIndex, UnoRegeln.Spieler.FindIndex(x => x.SpielerModel.Id == UnoRegeln.NaechsterSpielerId)); } + [Theory] + [InlineData(4, 1, 3, true)] + private void AussetzenKarteAufStapelLegenTest(int anzahlSpieler, int aktuellerSpielerIndex, int naechsterSpielerIndex, bool uhrzeigerSinn) + { + //arrange + UnoRegeln.ZiehKartenStapelZusammenstellen(); + BeispielMultipleSpielerModelsFüllen(anzahlSpieler); + + foreach (var spieler in SpielerModels) + { + UnoRegeln.SpielerErstellen(spieler.SpielerName); + } + + var erwartetNaechsterSpielerIndex = naechsterSpielerIndex; + var _aktuellerSpielerIndex = aktuellerSpielerIndex; + var beispielZuLegendeKarte = BeispielKarte(Kartenbezeichnung.AussetzenKarte.ToString(), Farbe.Rot.ToString(), true); + UnoRegeln.Uhrzeigersinn = uhrzeigerSinn; + + //act + UnoRegeln.KarteAufStapelLegen(UnoRegeln.Spieler[_aktuellerSpielerIndex].SpielerModel.Id, beispielZuLegendeKarte); + + //assert + + Assert.Equal(erwartetNaechsterSpielerIndex, UnoRegeln.Spieler.FindIndex(x => x.SpielerModel.Id == UnoRegeln.NaechsterSpielerId)); + } #region Stapel erstellen [Theory]