public static void LoadGame(Save save) { Console.WriteLine("Loading..."); if (save.Replay) { Console.WriteLine("Loading Replay..."); var ctx = new AppDbContext(); var replayquery = ctx.Saves.Where(s => s.SaveId == save.SaveId) .Include(s => s.Player1).Include(s => s.Player2).Include(s => s.Rules) .Include(s => s.States).ThenInclude(s => s.Player1GB).ThenInclude(g => g.Squares) .Include(s => s.States).ThenInclude(s => s.Player2GB).ThenInclude(g => g.Squares) .Include(s => s.States).ThenInclude(s => s.Player1Map).ThenInclude(g => g.Squares) .Include(s => s.States).ThenInclude(s => s.Player2Map).ThenInclude(g => g.Squares) .First(); foreach (var state in replayquery.States) { SaveSystem.GameStates.Add(state.GetDomainState(replayquery.Player1.GetDomainPlayer(state.Player1GB.GetDomainBoard(), state.Player1Map.GetDomainBoard()), replayquery.Player2.GetDomainPlayer(state.Player2GB.GetDomainBoard(), state.Player2Map.GetDomainBoard()) , replayquery.Rules.CanTouch)); } } Console.WriteLine("Loading Save..."); Player player1 = new Domain.Player(save.Player1.Name, save.LastState.Player1GB.GetDomainBoard(), save.LastState.Player1Map.GetDomainBoard()) { AI = save.Player1.AI }; Player player2 = new Domain.Player(save.Player2.Name, save.LastState.Player2GB.GetDomainBoard(), save.LastState.Player2Map.GetDomainBoard()) { AI = save.Player2.AI }; Rules.CanTouch = save.Rules.CanTouch; bool p2Turn = save.LastState.P2Turn; PlayGame(player1, player2, p2Turn); }
public static void LoadSave(int id) { var ctx = new AppDbContext(); var save = ctx.Saves.Where(s => s.SaveId.Equals(id)) .Include(s => s.Player1).Include(s => s.Player2) .Include(s => s.LastState) .ThenInclude(s => s.Player1GB).ThenInclude(g => g.Ships).ThenInclude(s => s.ShipsLocations) .Include(s => s.LastState) .ThenInclude(s => s.Player2GB).ThenInclude(g => g.Ships).ThenInclude(s => s.ShipsLocations) .Include(s => s.LastState) .ThenInclude(s => s.Player1GB).ThenInclude(g => g.Squares) .Include(s => s.LastState) .ThenInclude(s => s.Player2GB).ThenInclude(g => g.Squares) .Include(s => s.LastState) .ThenInclude(s => s.Player1Map).ThenInclude(g => g.Squares) .Include(s => s.LastState) .ThenInclude(s => s.Player2Map).ThenInclude(g => g.Squares) .Include(s => s.Rules) .First(); if (save.Replay) { var replayquery = ctx.Saves.Where(s => s.SaveId == save.SaveId) .Include(s => s.Player1).Include(s => s.Player2).Include(s => s.Rules) .Include(s => s.States).ThenInclude(s => s.Player1GB).ThenInclude(g => g.Squares) .Include(s => s.States).ThenInclude(s => s.Player2GB).ThenInclude(g => g.Squares) .Include(s => s.States).ThenInclude(s => s.Player1Map).ThenInclude(g => g.Squares) .Include(s => s.States).ThenInclude(s => s.Player2Map).ThenInclude(g => g.Squares) .First(); foreach (var state in replayquery.States) { SaveSystem.GameStates.Add(state.GetDomainState(replayquery.Player1.GetDomainPlayer(state.Player1GB.GetDomainBoard(), state.Player1Map.GetDomainBoard()), replayquery.Player2.GetDomainPlayer(state.Player2GB.GetDomainBoard(), state.Player2Map.GetDomainBoard()) , replayquery.Rules.CanTouch)); } } Player player1 = new Domain.Player(save.Player1.Name, save.LastState.Player1GB.GetDomainBoard(), save.LastState.Player1Map.GetDomainBoard()) { AI = save.Player1.AI }; Player player2 = new Domain.Player(save.Player2.Name, save.LastState.Player2GB.GetDomainBoard(), save.LastState.Player2Map.GetDomainBoard()) { AI = save.Player2.AI }; Rules.CanTouch = save.Rules.CanTouch; bool p2Turn = save.LastState.P2Turn; Player1 = player1; Player2 = player2; Current = Player1; Other = Player2; if (p2Turn) { SwitchSwitch(); } //PlayGame(player1,player2, p2Turn); }