示例#1
0
        /// <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);
        }