using System; using System.Collections.Generic; using RobotAndDonkey.Game.Execution.Results; using RobotAndDonkey.Game.Utils; using RobotAndDonkey.Game.GameState; namespace RobotAndDonkey.Game.Intents; public class EnterPreview : Intent { public override void Run(Guid requestId, CoreLoop coreLoop, List newIntents, List results) { coreLoop.ShuffleDeck(); coreLoop.DrawHand(); coreLoop.ProgramCount = coreLoop.Robot.ProgramCount; coreLoop.ClearTapeSelection(); var sortedHand = CardExtensions.SortForHand(coreLoop.GetHandCards()); coreLoop.SetProgramRow(sortedHand, Array.Empty()); results.Add(new ProgramRowResult(requestId, coreLoop.ProgramRow.ToArray(), coreLoop.TapeCardIds)); results.Add(new HandResult(requestId, coreLoop.Hand.ToArray())); results.Add(new TapeResult(requestId, coreLoop.Tape.ToArray())); results.Add(new DeckResult(requestId, coreLoop.PatchDeck.ToArray())); base.Run(requestId, coreLoop, newIntents, results); } public override bool Immune => true; public override string ToString() => "Enter preview, " + base.ToString(); }