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); }
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); } }
public float delayAfterStepMessage;// { get; private set; } public QuestMessageData Clone() { var q = new QuestMessageData(); q.Id = string.Empty; q.text = text; q.delayAfterStep = delayAfterStep; q.delayAfterStepMessage = q.delayAfterStepMessage; q.variants = new QuestVariantData[variants.Length]; for (int i = 0; i < variants.Length; i++) { q.variants[i] = variants[i].Clone(); } return(q); }
private void InitVariantButtons(MessageViewData messageViewData) { //init variant buttons ResetVariantButtons(); if (!messageViewData.isUserMsg) { QuestMessageData questStep = Data.Repository.MessageSteps[messageViewData.parentQuestStepId]; for (int i = 0; i < _variantButtons.Length; i++) { if (i < questStep.variants.Length) { _variantButtons[i].SetData(questStep.variants[i]); } } } }
internal override void Init(QuestStepData questStepData) { QuestStepData = questStepData; QuestMessageData questMessageData = Data.Repository.MessageSteps[QuestStepData.typeId]; _messageInput.text = questMessageData.text; _id = questMessageData.Id; ResetVariants(); for (int i = 0; i < _variants.Length; i++) { if (i < questMessageData.variants.Length) { _variants[i].SetData(questMessageData.variants[i]); } } }
protected override void GrabDataFromUI() { _questMessageData = new QuestMessageData(); _questMessageData.Id = _id; _questMessageData.text = _messageInput.text; int varCnt = 0; for (int i = 0; i < _variants.Length; i++) { var varData = _variants[i].GetData(); if (varData != null && varData.targetStepId != "None") { varCnt++; } } _questMessageData.variants = new QuestVariantData[varCnt]; for (int j = 0; j < varCnt; j++) { _questMessageData.variants[j] = _variants[j].GetData(); } }
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; } }