Example #1
0
 public IncorrectDrinkDialogueOption(string line, SpeciesType species, IncorrectDrinkReason reason, bool destroyDrink)
 {
     this.line         = line;
     this.species      = species;
     this.reason       = reason;
     this.destroyDrink = destroyDrink;
 }
Example #2
0
        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);
        }
Example #3
0
            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);
            }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
 public DrinkPredicate(Func <DrinkState, bool> test, IncorrectDrinkReason failure)
 {
     this.test    = test;
     this.failure = failure;
 }