Example #1
0
        public static async Task CreateSchemeAsync(GameServiceClient client)
        {
            var scheme = new Scheme();

            scheme.Name          = ConsoleUtility.GetUserInput("Scheme Name: ");
            scheme.GamePackageId = await GamePackageUtility.SelectGamePackageId(client);

            scheme.AbilityIds.AddRange(await AbilityUtility.SelectAbilityIds(client));
            scheme.HasEpicSide = ConsoleUtility.GetUserInputBool("Has Epic side?");
            scheme.CardRequirements.AddRange(await CardRequirementUtility.GetCardRequirements(client, scheme.GamePackageId, true));
            scheme.TwistRequirements.AddRange(TwistRequirementUtility.GetTwistRequirements(client));

            if (!ConsoleUtility.ShouldContinue($"Creating Scheme: {scheme}"))
            {
                await CreateSchemeAsync(client);

                return;
            }

            var createRequest = new CreateSchemesRequest();

            createRequest.Schemes.Add(scheme);
            var createReply = await client.CreateSchemesAsync(createRequest);

            if (createReply.Status.Code != 200)
            {
                ConsoleUtility.WriteLine($"Failed to create scheme: {createReply.Status.Message}");
            }
            else
            {
                ConsoleUtility.WriteLine($"Scheme '{createReply.Schemes.First().Name}' was created with Id '{createReply.Schemes.First().Id}'");
            }
        }
Example #2
0
        public static async Task CreateMastermindAsync(GameServiceClient client)
        {
            var mastermind = new Mastermind();

            mastermind.Name          = ConsoleUtility.GetUserInput("Mastermind Name: ");
            mastermind.GamePackageId = await GamePackageUtility.SelectGamePackageId(client);

            mastermind.AbilityIds.AddRange(await AbilityUtility.SelectAbilityIds(client));
            mastermind.HasEpicSide = ConsoleUtility.GetUserInputBool("Has Epic side?");
            mastermind.CardRequirements.AddRange(await CardRequirementUtility.GetCardRequirements(client, mastermind.GamePackageId, true));

            if (!ConsoleUtility.ShouldContinue($"Creating Mastermind: {mastermind}"))
            {
                await CreateMastermindAsync(client);

                return;
            }

            var createRequest = new CreateMastermindsRequest();

            createRequest.Masterminds.Add(mastermind);
            var createReply = await client.CreateMastermindsAsync(createRequest);

            if (createReply.Status.Code != 200)
            {
                ConsoleUtility.WriteLine($"Failed to create mastermind: {createReply.Status.Message}");
            }
            else
            {
                ConsoleUtility.WriteLine($"Mastermind '{createReply.Masterminds.First().Name}' was created with Id '{createReply.Masterminds.First().Id}'");
            }
        }
Example #3
0
        private static IEnumerable <CardRequirement> GetCardCountRequirements()
        {
            var cardType = ConsoleUtility.GetUserInputRequiredValue("What type of card count is changing?", "Ally", "Adversary", "Mastermind", "Henchman", "Bystander");
            var changesBasedOnPlayerCount = ConsoleUtility.GetUserInputBool("Does the card count change based on number of players?");

            if (!changesBasedOnPlayerCount)
            {
                int additionalSets = ConsoleUtility.GetUserInputInt("Additional sets: ");

                yield return(cardType switch
                {
                    "Ally" => new CardRequirement {
                        AdditionalSetCount = additionalSets, CardSetType = CardSetType.CardSetAlly
                    },
                    "Adversary" => new CardRequirement {
                        AdditionalSetCount = additionalSets, CardSetType = CardSetType.CardSetAdversary
                    },
                    "Mastermind" => new CardRequirement {
                        AdditionalSetCount = additionalSets, CardSetType = CardSetType.CardSetMastermind
                    },
                    "Henchman" => new CardRequirement {
                        AdditionalSetCount = additionalSets, CardSetType = CardSetType.CardSetHenchman
                    },
                    "Bystander" => new CardRequirement {
                        AdditionalSetCount = additionalSets, CardSetType = CardSetType.CardSetBystander
                    },
                    _ => throw new Exception("Failed to match on cardType")
                });
Example #4
0
        public static async ValueTask <IEnumerable <CardRequirement> > GetCardRequirements(GameServiceClient client, int currentGamePackageId, bool?defaultOption)
        {
            List <CardRequirement> cardRequirements = new List <CardRequirement>();

            if (ConsoleUtility.GetUserInputBool("Add card requirements:", defaultOption))
            {
                cardRequirements.AddRange(await GetSingleCardRequirement(client, currentGamePackageId));
            }

            while (cardRequirements.Count != 0 && ConsoleUtility.GetUserInputBool("Add another requirement?", false))
            {
                cardRequirements.AddRange(await GetSingleCardRequirement(client, currentGamePackageId));
            }

            return(cardRequirements);
        }
Example #5
0
        internal static IEnumerable <SchemeTwistRequirement> GetSingleTwistRequirement(GameServiceClient client)
        {
            var changesBasedOnPlayerCount = ConsoleUtility.GetUserInputBool("Does the twist requirement change based on the number of players? ", null);

            if (!changesBasedOnPlayerCount)
            {
                int twistCount = ConsoleUtility.GetUserInputInt("How many twists? ");

                yield return(new SchemeTwistRequirement
                {
                    SchemeTwistCount = twistCount,
                    Allowed = true
                });
            }
            else
            {
                bool schemeAllowedForSinglePlayer = ConsoleUtility.GetUserInputBool($"Is this scheme allowed for a single player? ");

                if (!schemeAllowedForSinglePlayer)
                {
                    yield return(new SchemeTwistRequirement
                    {
                        PlayerCount = 1,
                        Allowed = false
                    });
                }

                for (int i = schemeAllowedForSinglePlayer ? 1 : 2; i <= 5; i++)
                {
                    var playerMessage = i == 1 ? "player" : "players";
                    int twistCount    = ConsoleUtility.GetUserInputInt($"How many twists for {i} {playerMessage}? ");

                    yield return(new SchemeTwistRequirement
                    {
                        PlayerCount = i,
                        SchemeTwistCount = twistCount,
                        Allowed = true
                    });
                }
            }
        }