Example #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);
            }
        }
Example #2
0
 protected override void GrabDataFromUI()
 {
     _triggerStepData          = new QuestTriggerStepData();
     _triggerStepData.Id       = _id;
     _triggerStepData.Triggers = new TriggerData[_triggerEditors.Length];
     for (int i = 0; i < _triggerEditors.Length; i++)
     {
         _triggerStepData.Triggers[i] = _triggerEditors[i].GetTriggerData();
     }
 }
Example #3
0
        internal QuestTriggerStepData Clone()
        {
            QuestTriggerStepData data = new QuestTriggerStepData();

            data.Triggers = new TriggerData[Triggers.Length];
            for (int i = 0; i < Triggers.Length; i++)
            {
                data.Triggers[i] = Triggers[i].Clone();
            }
            return(data);
        }
Example #4
0
    internal override void Init(QuestStepData questStepData)
    {
        QuestStepData = questStepData;

        if (!questStepData.stepType.Equals(QuestStepType.TRIGGER))
        {
            Debug.LogError(this.ToString() + " : !questStepData.stepType.Equals(QuestStepType.TRIGGER)");
            return;
        }

        QuestTriggerStepData sourceData = Data.Repository.TriggerSteps[questStepData.typeId];

        _id = sourceData.Id;
        for (int i = 0; i < _triggerEditors.Length; i++)
        {
            TriggerData triggerData = i < sourceData.Triggers.Length ? sourceData.Triggers[i] : null;
            _triggerEditors[i].Init(triggerData);
        }
    }
        void CreateRelatedData(QuestStepData item)
        {
            switch (item.stepType)
            {
            case Collections.MESSAGE:
                var messageData = new QuestMessageData {
                    Id = item.typeId
                };
                global::Data.Repository.MessageSteps.Set(messageData, messageData.Id, true, OnCreated);
                break;

            case Collections.TRIGGER:
                var triggerData = new QuestTriggerStepData {
                    Id = item.typeId
                };
                global::Data.Repository.TriggerSteps.Set(triggerData, triggerData.Id, true, OnCreated);
                break;

            default:
                Debug.LogError(this + " Save(): unknown type: " + item.stepType);
                break;
            }
        }
Example #6
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;
                    }
                }
            }
        }