using Model.Dice; using Model.Players; using System.Collections.Generic; using System.Threading.Tasks; namespace Model.Games { public class MasterOfCeremonies { public IManager GlobalPlayerManager { get; private set; } public IManager DiceGroupManager { get; private set; } public IManager GameManager { get; private set; } public MasterOfCeremonies(IManager globalPlayerManager, IManager globalDiceGroupManager, IManager gameManager) { GlobalPlayerManager = globalPlayerManager; DiceGroupManager = globalDiceGroupManager; GameManager = gameManager; } /// /// creates a new game /// /// /// /// /// public async Task StartNewGame(string name, IManager playerManager, IEnumerable dice) { Game game = new(name, playerManager, dice); return await GameManager.Add(game); } /// /// plays one turn of the game /// /// the game from which a turn will be played public static async Task PlayGame(Game game) { Player current = await game.GetWhoPlaysNow(); game.PerformTurn(current); await game.PrepareNextPlayer(current); } } }