public void GenerateQuest(QuestEntity entity, StringField group, DomainType domainType, WorldModel worldModel, bool requireReturnToComplete, List <QuestContent> rewardsUIContents, List <RewardSystem> rewardSystems, List <Quest> existingQuests, GeneratedQuestDelegate generatedQuest, UrgentFactSelectionMode goalSelectionMode) { if (entity == null || domainType == null || worldModel == null) { return; } coroutine = entity.StartCoroutine(GenerateQuestCoroutine(entity, group, domainType, worldModel, requireReturnToComplete, rewardsUIContents, rewardSystems, existingQuests, generatedQuest, goalSelectionMode)); }
private IEnumerator GenerateQuestCoroutine(QuestEntity entity, StringField group, DomainType domainType, WorldModel worldModel, bool requireReturnToComplete, List <QuestContent> rewardsUIContents, List <RewardSystem> rewardSystems, List <Quest> existingQuests, GeneratedQuestDelegate generatedQuest, UrgentFactSelectionMode goalSelectionMode) { this.cancel = false; this.entity = entity; this.group = group; this.domainType = domainType; this.worldModel = worldModel; this.requireReturnToComplete = requireReturnToComplete; this.rewardsUIContents = rewardsUIContents; this.rewardSystems = rewardSystems; this.ignoreList = GenerateIgnoreList(existingQuests); this.goalSelectionMode = goalSelectionMode; masterStepList = new List <PlanStep>(); goal = null; plan = null; Quest quest = null; worldModel.observer = new Fact(domainType, entity.entityType, 1); yield return(DetermineGoal()); if (!(cancel || goal == null)) { yield return(GeneratePlan()); if (!(cancel || plan == null)) { BackfillMinimumCounterValues(); if (detailedDebug) { LogPlan(plan); } quest = planToQuestBuilder.ConvertPlanToQuest(entity, group, goal, motive, plan, requireReturnToComplete, rewardsUIContents, rewardSystems); } } generatedQuest(quest); }