Exemple #1
0
        public static void GoToStep(string questId, string state = UserQuestState.ACTIVE, int variantId = -1)
        {
            var step = Data.Repository.Steps[questId];

            if (step == null)
            {
                return;
            }

            if (step.stepType == QuestStepType.TRIGGER)
            {
                QuestTriggerStepData questTriggerStepStep = Data.Repository.TriggerSteps[step.typeId];
                CheckTrigger(questTriggerStepStep);
                return;
            }

            if (step.stepType == QuestStepType.MESSAGE)
            {
                QuestMessageData  messageStep = Data.Repository.MessageSteps[step.typeId];
                UserQuestStepData userStep    = new UserQuestStepData();
                userStep.questStepId = questId;
                userStep.state       = state;

                CreateMessage(questId, messageStep.text);

                if (variantId > 0)
                {
                    CompleteStep(questId, variantId);
                }

                Data.Repository.UserSteps.Set(userStep, questId);
            }
        }
Exemple #2
0
        public static void CompleteStep(string questId, int variantId)
        {
            UserQuestStepData userStep = _userStepStorage.Get(questId);

            if (userStep.state == UserQuestState.COMPLETE)
            {
                Debug.LogError("Failed to complete step! Already completed userStep id=" + questId);
                return;
            }

            QuestStepData questQuestStepData = Data.Repository.Steps[questId];

            if (questQuestStepData.stepType == QuestStepType.MESSAGE)
            {
                QuestMessageData messageStep = Data.Repository.MessageSteps[questQuestStepData.typeId];
                if (variantId < messageStep.variants.Length)
                {
                    QuestVariantData variant = messageStep.variants[variantId];
                    userStep.Complete(variantId);
                    CreateMessage(questId, variant.text, true);
                    GoToStep(variant.targetStepId);
                }
                else
                {
                    Debug.LogError("Failed to complete step! No variant id=" + variantId.ToString() + " found in step id=" + messageStep.Id);
                    return;
                }
            }

            //OnStepComplete.Invoke(userStep);
        }
Exemple #3
0
        public static UserQuestStepData GetActiveStep()
        {
            UserQuestStepData activeStep = _userStepStorage.Get(s => s.state == UserQuestState.ACTIVE);

            activeStepId = activeStep.questStepId;
            return(activeStep);
        }
Exemple #4
0
        static void CheckTrigger(QuestTriggerStepData questTriggerStepStep)
        {
            TriggerData trigger;
            int         length = questTriggerStepStep.Triggers.Length;

            for (int i = 0; i < length; i++) // looking for step to which trigger leads to
            {
                trigger = questTriggerStepStep.Triggers[i];
                UserQuestStepData userStep = _userStepStorage.Get(u => u.questStepId == trigger.triggerStepId);
                //check trigger condition
                if (trigger.condition == QuestTriggerCondition.COMPLETE)
                {
                    if (userStep != null)
                    {
                        GoToStep(trigger.targetStepId); break;
                    }
                    else
                    if (!string.IsNullOrEmpty(trigger.alterStepId))
                    {
                        GoToStep(trigger.alterStepId); break;
                    }
                }
                else
                if (trigger.condition == QuestTriggerCondition.UNCOMPLETE)
                {
                    if (userStep == null)
                    {
                        GoToStep(trigger.targetStepId); break;
                    }
                    else
                    if (!string.IsNullOrEmpty(trigger.alterStepId))
                    {
                        GoToStep(trigger.alterStepId); break;
                    }
                }
            }
        }
 public void Init(UserQuestStepData data)
 {
 }