public virtual void LoadAllQuestsAndAchievementsFor(ILocalIdentifier localIdentifier)
        {
            var db    = QuestManager.instance.GetQuestStates(localIdentifier);
            var model = LoadQuestsContainerModel(PlayerPrefsQuestStatesKey + localIdentifier.ToString());

            // TODO: In the future we'd probably want to make a copy of the quest (QuestManager.instance.quests ..) and add that to the player's quest states.
            foreach (var quest in model.activeQuests)
            {
                LoadSerializationModelToSource(quest, QuestManager.instance.quests.FirstOrDefault(o => o.ID == quest.ID), db.activeQuests);
            }

            foreach (var quest in model.completedQuests)
            {
                LoadSerializationModelToSource(quest, QuestManager.instance.quests.FirstOrDefault(o => o.ID == quest.ID), db.completedQuests);
            }

            foreach (var achievement in model.achievements)
            {
                LoadSerializationModelToSource(achievement, QuestManager.instance.achievements.FirstOrDefault(o => o.ID == achievement.ID), db.achievements);
            }


            DevdogLogger.LogVerbose("Deserialized active quests: " + model.activeQuests.Length + " for " + localIdentifier.ToString());
            DevdogLogger.LogVerbose("Deserialized completed quests: " + model.completedQuests.Length + " for " + localIdentifier.ToString());
            DevdogLogger.LogVerbose("Deserialized achievements: " + model.achievements.Length + " for " + localIdentifier.ToString());
        }
        protected void MoveToNextNode(ILocalIdentifier localIdentifier, NodeBase node, IDialogueOwner owner)
        {
            currentNode.OnExit();

            node.OnEnter(owner);
            currentNodeIndex = node.index;
            node.OnExecute(owner);
        }
Exemple #3
0
        public static Quest Create(ILocalIdentifier localIdentifier, int id = 0)
        {
            var q = CreateInstance <Quest>();

            q.ID = id;
            q.localIdentifier = localIdentifier;

            return(q);
        }
Exemple #4
0
        public new static Achievement Create(ILocalIdentifier localIdentifier, int id = 0)
        {
            var achievement = CreateInstance <Achievement>();

            achievement.ID = id;
            achievement.localIdentifier = localIdentifier;

            return(achievement);
        }
Exemple #5
0
        public QuestsContainer GetQuestStates(ILocalIdentifier localIdentifier)
        {
            Assert.IsNotNull(localIdentifier, "Local identifier is null. Quest (most likely) doesn't exist in current database.");
            if (questStates.ContainsKey(localIdentifier) == false)
            {
                DevdogLogger.LogError("No quest states found for localIdentifier: " + localIdentifier.ToString());
                return(null);
            }

            return(questStates[localIdentifier]);
        }
        public bool CanDiscover(ILocalIdentifier localIdentifier)
        {
            foreach (var condition in conditions)
            {
                if (condition.CanDiscover(this, localIdentifier).status == false)
                {
                    return(false);
                }
            }

            return(true);
        }
        public void MoveToNextNode(ILocalIdentifier localIdentifier, IDialogueOwner owner)
        {
            var n = currentNode.GetNextNode();

            if (n != null)
            {
                MoveToNextNode(localIdentifier, n, owner);
            }
            else
            {
                if (currentNode.isLeafNode)
                {
                    // Got to end, stop.
                    Stop(localIdentifier);
                }
            }
        }
        public bool CanStop(ILocalIdentifier localIdentifier)
        {
            if (status != DialogueStatus.Active)
            {
                return(false);
            }

            foreach (var condition in conditions)
            {
                if (condition.CanStop(this, localIdentifier).status == false)
                {
                    return(false);
                }
            }

            return(true);
        }
        public bool StartDialogue(IDialogueOwner dialogueOwner, ILocalIdentifier localIdentifier, uint nodeStartIndex = 0)
        {
            if (CanStart(localIdentifier) == false)
            {
                return(false);
            }

            // Start dialog
            DialogueManager.instance.SetCurrentDialogue(this, dialogueOwner);
            status           = DialogueStatus.Active;
            currentNodeIndex = nodeStartIndex;

            MoveToNextNode(localIdentifier, dialogueOwner);

            DevdogLogger.LogVerbose("Started dialogue");

            return(true);
        }
        public bool Stop(ILocalIdentifier localIdentifier, bool force = false)
        {
            if (CanStop(localIdentifier) == false && force == false)
            {
                return(false);
            }

            // Stop dialog
            status           = DialogueStatus.InActive;
            currentNodeIndex = 0;

            foreach (var node in nodes)
            {
                node.OnDialogueExit();
            }

            DialogueManager.instance.SetCurrentDialogue(null, null);
            DevdogLogger.LogVerbose("Stopped dialogue - Resetting current node index to 0 (entry node)");

            return(true);
        }
        public bool CanStart(ILocalIdentifier localIdentifier)
        {
//            if (status == DialogueStatus.Active)
//            {
//                return false;
//            }

            if (nodes.Length <= 1)
            {
                DevdogLogger.Log("Can't start a dialogue with with 0 or 1 nodes (start node). Add some nodes first.");
                return(false);
            }

            foreach (var condition in conditions)
            {
                if (condition.CanStart(this, localIdentifier).status == false)
                {
                    return(false);
                }
            }

            return(true);
        }
Exemple #12
0
 public Quest[] GetAvailableQuests(ILocalIdentifier identifier)
 {
     // TODO: For the server: Get all quests that identifier can accept.
     return(quests.Where(o => o.CanActivate().status).ToArray());
 }
Exemple #13
0
 public bool Equals(ILocalIdentifier other)
 {
     return(ID == other.ID);
 }
Exemple #14
0
 public Quest GetActiveQuestByID(int questID, ILocalIdentifier localIdentifier)
 {
     return(questStates[localIdentifier].activeQuests.FirstOrDefault(o => o.ID == questID));
 }
        public virtual void SaveAllQuestsAndAchievementsFor(ILocalIdentifier localIdentifier)
        {
            var model = CreateQuestsContainerSerializationModel(QuestManager.instance.GetQuestStates(localIdentifier));

            SaveQuestsContainerModel(PlayerPrefsQuestStatesKey + localIdentifier.ToString(), model);
        }