/// <summary> /// L'action permettant de lancer les dés. /// </summary> /// <param name="memberChosen"></param> private void RollDicesAction(Member memberChosen) { int diceRollPerTour = int.Parse(Alea.Config.Get("DiceRollsPerTour")["Value"].Value); int rollsCount = 1; do { memberChosen.RollDices(); List <Dice> dices = memberChosen.GetUsableDices(); int dicePosition = 1; Console.Write("Le résultat des dés est : "); foreach (Dice dice in dices) { Console.Write(dice.number); if (dicePosition < dices.Count) { Console.Write(","); } else { Console.Write(".\n"); } ++dicePosition; } // Sélection des dés à mettre de côté Console.WriteLine("Veuillez choisir les dés à garder. Vous n'êtes pas obligé d'en garder."); int selectAction = -1; do { int index = 1; foreach (Dice dice in dices) { Console.WriteLine(index + ". " + dice); ++index; } Console.WriteLine("0. Finir la sélection"); selectAction = GetIntInput(); while (selectAction < 0 && selectAction > dices.Count) { Console.WriteLine("Le dé choisi n'existe pas."); selectAction = GetIntInput(); } if (selectAction > 0) { Dice chosenDice = dices.ElementAt(selectAction - 1); if (chosenDice != null && chosenDice.putAside) { Console.WriteLine("Le dé choisi ne peut être utilisé."); } else if (chosenDice != null) { chosenDice.putAside = true; } } } while (selectAction != 0); ++rollsCount; }while (memberChosen.GetUsableDices().Count > 0 && rollsCount <= diceRollPerTour); // Sélection des actions à effectuer int finalAction = -1; do { Console.WriteLine("\nVous avez " + memberChosen.TotalDices() + " (" + memberChosen.ToStringListDices() + ")."); Console.WriteLine("Que voulez-vous faire ?"); List <int> possibleFinalActions = new List <int>(); possibleFinalActions.Add(0); if (memberChosen.module.breakdown != null && memberChosen.CanSpendDices()) { Console.WriteLine("1. Investir dans la panne : " + memberChosen.module.breakdown.ToInfoString()); possibleFinalActions.Add(1); } if (memberChosen.HasMinDiceForAction()) { Console.WriteLine("2. Utiliser le pouvoir spécial (consomme un dé) : " + memberChosen.ToStringAction()); possibleFinalActions.Add(2); } Console.WriteLine("0. Finir les actions"); finalAction = GetIntInput(); while (!possibleFinalActions.Contains(finalAction)) { Console.WriteLine("L'action choisie ne peut être effectuée."); finalAction = GetIntInput(); } switch (finalAction) { case 1: memberChosen.PlayDices(); memberChosen.module.breakdown.SubStrength(memberChosen.TotalDices()); if (memberChosen.module.breakdown.strength <= 0) { memberChosen.module.breakdown = null; } break; case 2: memberChosen.Action(); break; } }while (finalAction != 0); }