public IncorrectDrinkDialogueOption(string line, SpeciesType species, IncorrectDrinkReason reason, bool destroyDrink) { this.line = line; this.species = species; this.reason = reason; this.destroyDrink = destroyDrink; }
private static List <IncorrectDrinkDialogueOption> LoadIncorrectDrinkDialogueOptions(string file) { var path = Path.Combine("Dialogue", file); var data = CSVReader.Read(path); var options = new List <IncorrectDrinkDialogueOption>(); for (var i = 0; i < data.Count; i++) { var datum = data[i]; var dialogueLine = data[i]["Line"] as string; var speciesTypeString = data[i]["Species"] as string; var reasonString = data[i]["Reason"] as string; var destroyDrinkString = data[i]["Destroy Drink"] as string; SpeciesType species = speciesTypeString.Length == 0 ? species = SpeciesType.None : (SpeciesType)System.Enum.Parse(typeof(SpeciesType), data[i]["Species"] as string); IncorrectDrinkReason reason = reasonString.Length == 0 ? reason = IncorrectDrinkReason.None : (IncorrectDrinkReason)System.Enum.Parse(typeof(IncorrectDrinkReason), data[i]["Reason"] as string); bool destroyDrink = destroyDrinkString.Length == 0 ? false : destroyDrinkString == "Yes"; options.Add(new IncorrectDrinkDialogueOption(dialogueLine, species, reason, destroyDrink)); } return(options); }
public bool IsValidForOrder(DrinkState drink, out IncorrectDrinkReason reason) { foreach (var predicate in DrinkPredicates) { var success = predicate.test.Invoke(drink); if (!success) { reason = predicate.failure; return(false); } } reason = IncorrectDrinkReason.None; return(true); }
public static Conversation GetIncorrectDrinkOrderConversation(string ordered, Entity entity, IncorrectDrinkReason reason, out bool destroyDrink) { var choice = incorectDrinkOptions.Where(option => OptionIsValid(option, GetEntitySpecies(entity), reason)).PickRandom(); var line = choice.line; if (reason == IncorrectDrinkReason.DoesNotContainIngredient || reason == IncorrectDrinkReason.ContainsIngredient) { line = line.Replace("{0}", ordered); } var conversation = new NoResponseConversation(line, DialogueOutcome.Bad); destroyDrink = choice.destroyDrink; return(conversation); }
private static bool OptionIsValid(IncorrectDrinkDialogueOption option, SpeciesType species, IncorrectDrinkReason reason) { var speciesIsValid = option.species == SpeciesType.None || option.species == species; var reasonIsValid = option.reason == IncorrectDrinkReason.None || option.reason == reason; return(speciesIsValid && reasonIsValid); }
public DrinkPredicate(Func <DrinkState, bool> test, IncorrectDrinkReason failure) { this.test = test; this.failure = failure; }