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}'"); } }
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}'"); } }
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") });
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); }
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 }); } } }