Esempio n. 1
0
 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));
 }
Esempio n. 2
0
        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);
        }