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); }
public static Quest Create(ILocalIdentifier localIdentifier, int id = 0) { var q = CreateInstance <Quest>(); q.ID = id; q.localIdentifier = localIdentifier; return(q); }
public new static Achievement Create(ILocalIdentifier localIdentifier, int id = 0) { var achievement = CreateInstance <Achievement>(); achievement.ID = id; achievement.localIdentifier = localIdentifier; return(achievement); }
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); }
public Quest[] GetAvailableQuests(ILocalIdentifier identifier) { // TODO: For the server: Get all quests that identifier can accept. return(quests.Where(o => o.CanActivate().status).ToArray()); }
public bool Equals(ILocalIdentifier other) { return(ID == other.ID); }
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); }