Merge pull request 'implement-save-in-app' (#99) from implement-save-in-app into main
continuous-integration/drone/push Build is passing Details

Reviewed-on: #99
pull/100/head
Alexis Drai 3 years ago
commit 76ce25b986

@ -134,6 +134,7 @@ namespace App
Console.WriteLine($"{game.GetWhoPlaysNow()}'s turn\n" +
"q... quit\n" +
"h... show history\n" +
"s... save\n" +
"any other... throw");
menuChoicePlay = Console.ReadLine();
switch (menuChoicePlay)
@ -146,6 +147,9 @@ namespace App
Console.WriteLine(turn);
}
break;
case "s":
gameRunner.Add(game);
break;
default:
GameRunner.PlayGame(game);
Console.WriteLine(game.GetHistory().Last());

@ -9,20 +9,21 @@ namespace Data
{
public class Stub : ILoader
{
// when the other classes are ready
// the Stub should just make and return a GameRunner, and the GameRunner should have
// a PlayerManager, a collection of Games, a FavGroupManager, etc. (see diagram)
public GameRunner LoadApp()
{
IManager<KeyValuePair<string, IEnumerable<AbstractDie<AbstractDieFace>>>> globalDieManager = new DieManager();
GameRunner gr = new(new PlayerManager(), new DieManager());
Player player1 = new("Alice"), player2 = new("Bob"), player3 = new("Clyde");
gr.GlobalPlayerManager.Add(player1);
gr.GlobalPlayerManager.Add(player2);
gr.GlobalPlayerManager.Add(player3);
List<AbstractDie<AbstractDieFace>> monopolyDice = new();
List<AbstractDie<AbstractDieFace>> dndDice = new();
string monopolyName = "Monopoly";
string dndName = "DnD";
string monopolyName = "Monopoly", dndName = "DnD";
NumberDieFace[] d6Faces = new NumberDieFace[] { new(1), new(2), new(3), new(4), new(5), new(6) };
@ -39,40 +40,26 @@ namespace Data
dndDice.Add(new NumberDie(d20Faces));
globalDieManager.Add(new KeyValuePair<string, IEnumerable<AbstractDie<AbstractDieFace>>>(monopolyName, monopolyDice.AsEnumerable()));
globalDieManager.Add(new KeyValuePair<string, IEnumerable<AbstractDie<AbstractDieFace>>>(dndName, dndDice.AsEnumerable()));
IEnumerable<AbstractDie<AbstractDieFace>> dice1 = globalDieManager.GetOneByName(monopolyName).Value;
IEnumerable<AbstractDie<AbstractDieFace>> dice2 = globalDieManager.GetOneByName(dndName).Value;
string g1 = "game1", g2 = "game2", g3 = "game3";
Game game1 = new(name: g1, playerManager: new PlayerManager(), dice: dice1);
Game game2 = new(name: g2, playerManager: new PlayerManager(), dice: dice2);
Game game3 = new(name: g3, playerManager: new PlayerManager(), dice: dice1);
List<Game> games = new() { game1, game2, game3 };
Player player1 = new("Alice"), player2 = new("Bob"), player3 = new("Clyde");
gr.GlobalDieManager.Add(new KeyValuePair<string, IEnumerable<AbstractDie<AbstractDieFace>>>(dndName, dndDice.AsEnumerable()));
gr.GlobalDieManager.Add(new KeyValuePair<string, IEnumerable<AbstractDie<AbstractDieFace>>>(monopolyName, monopolyDice.AsEnumerable()));
PlayerManager globalPlayerManager = new();
globalPlayerManager.Add(player1);
globalPlayerManager.Add(player2);
globalPlayerManager.Add(player3);
string game1 = "Forgotten Realms", game2 = "4e", game3 = "The Coopers";
GameRunner gameRunner = new(globalPlayerManager, globalDieManager, games);
gr.Add(new(game1, new PlayerManager(), dndDice.AsEnumerable()));
gr.Add(new(game2, new PlayerManager(), dndDice.AsEnumerable()));
gr.Add(new(game3, new PlayerManager(), monopolyDice.AsEnumerable()));
game1.PlayerManager.Add(player1);
game1.PlayerManager.Add(player2);
gr.GetOneByName(game1).PlayerManager.Add(player1);
gr.GetOneByName(game1).PlayerManager.Add(player2);
game2.PlayerManager.Add(player1);
game2.PlayerManager.Add(player2);
game2.PlayerManager.Add(player3);
gr.GetOneByName(game2).PlayerManager.Add(player1);
gr.GetOneByName(game2).PlayerManager.Add(player2);
gr.GetOneByName(game2).PlayerManager.Add(player3);
game3.PlayerManager.Add(player1);
game3.PlayerManager.Add(player3);
gr.GetOneByName(game3).PlayerManager.Add(player1);
gr.GetOneByName(game3).PlayerManager.Add(player3);
foreach (Game game in games)
foreach (Game game in gr.GetAll())
{
for (int i = 0; i < 10; i++)
{
@ -82,7 +69,7 @@ namespace Data
}
}
return gameRunner;
return gr;
}
}
}

@ -49,7 +49,6 @@ namespace Model.Games
/// saves a given game -- does not allow copies yet: if a game with the same name exists, it is overwritten
/// </summary>
/// <param name="toAdd">a game to save</param>
/// <exception cref="NotSupportedException"></exception>
public Game Add(Game toAdd)
{
if (toAdd is null)
@ -66,8 +65,7 @@ namespace Model.Games
/// <summary>
/// creates a new game
/// </summary>
/// <exception cref="NotSupportedException"></exception>
public Game StartNewGame(string name, PlayerManager playerManager, IEnumerable<AbstractDie<AbstractDieFace>> dice)
public Game StartNewGame(string name, IManager<Player> playerManager, IEnumerable<AbstractDie<AbstractDieFace>> dice)
{
Game game = new(name, playerManager, dice);
return Add(game);

Loading…
Cancel
Save