Ejemplo n.º 1
0
        public static void AddElement(DatabaseQuestsEditor databaseQuestsEditor)
        {
            List <int> selections = new List <int> {
                databaseQuestsEditor.editorRoot.target.GetInstanceID()
            };
            List <int> nextSelections = new List <int>();

            if (databaseQuestsEditor.questsTree.HasSelection())
            {
                selections = new List <int>(databaseQuestsEditor.questsTree.GetSelection());
            }

            int selectionID = QuestsTreeView.ROOT_ID;

            if (selections.Count == 1)
            {
                selectionID = selections[0];
            }
            IQuest instance = databaseQuestsEditor.InstanceIDToObject(selectionID);

            Quest itemInstance = databaseQuestsEditor.CreateItem <Quest>();

            nextSelections = new List <int>()
            {
                itemInstance.GetInstanceID()
            };

            if (instance != null && instance.GetType() == typeof(Quest))
            {
                databaseQuestsEditor.questsEditors[instance.GetInstanceID()].AddSibling(
                    itemInstance,
                    (IQuest)instance,
                    selectionID
                    );
            }
            else
            {
                Quests rootInstance = databaseQuestsEditor.databaseQuests.quests;
                databaseQuestsEditor.editorRoot.AddChild(
                    itemInstance,
                    rootInstance
                    );
            }

            databaseQuestsEditor.questsEditors.Add(
                itemInstance.GetInstanceID(),
                IQuestEditor.CreateEditor(itemInstance)
                );

            databaseQuestsEditor.questsTree.Reload();

            databaseQuestsEditor.serializedObject.ApplyModifiedPropertiesWithoutUndo();
            databaseQuestsEditor.serializedObject.Update();

            databaseQuestsEditor.questsTree.SetFocusAndEnsureSelectedItem();
            databaseQuestsEditor.questsTree.SetSelection(
                nextSelections,
                TreeViewSelectionOptions.RevealAndFrame
                );
        }
Ejemplo n.º 2
0
        // PUBLIC METHODS: ------------------------------------------------------------------------

        public static Quests GetQuestsRoot()
        {
            string path   = QuestUtilities.GetQuestsRootPath();
            Quests quests = AssetDatabase.LoadAssetAtPath <Quests>(path);

            if (quests == null)
            {
                quests = CreateAsset <Quests>(
                    ROOT_PATH,
                    ROOT_NAME
                    );
            }

            return(quests);
        }
        // INITIALIZE: ----------------------------------------------------------------------------

        private void OnEnable()
        {
            if (target == null || serializedObject == null)
            {
                return;
            }

            this.databaseQuests = (DatabaseQuests)this.target;
            this.spQuests       = serializedObject.FindProperty(PROP_QUESTS);
            this.spList         = serializedObject.FindProperty(PROP_LIST);
            this.spSettings     = serializedObject.FindProperty(PROP_SETTINGS);

            if (this.spQuests.objectReferenceValue == null)
            {
                this.spQuests.objectReferenceValue = QuestUtilities.GetQuestsRoot();
                serializedObject.ApplyModifiedPropertiesWithoutUndo();
                serializedObject.Update();
            }

            Quests quests = (Quests)this.spQuests.objectReferenceValue;

            this.questsInstances = new Dictionary <int, IQuest>();
            this.questsInstances.Add(QuestsTreeView.ROOT_ID, quests);

            this.editorRoot    = IQuestEditor.CreateEditor(quests);
            this.questsEditors = new Dictionary <int, IQuestEditor>();
            this.questsEditors.Add(quests.GetInstanceID(), this.editorRoot);

            for (int i = 0; i < this.databaseQuests.list.Count; ++i)
            {
                IQuest item = this.databaseQuests.list[i];
                if (!this.questsInstances.ContainsKey(item.GetInstanceID()))
                {
                    this.questsInstances.Add(item.GetInstanceID(), item);
                }

                IQuestEditor editor = IQuestEditor.CreateEditor(item);
                this.questsEditors.Add(item.GetInstanceID(), editor);
            }

            this.questsTree = new QuestsTreeView(this.databaseQuests.questsTreeState, this);

            this.searchField = new SearchField();
            this.searchField.downOrUpArrowKeyPressed += this.questsTree.SetFocusAndEnsureSelectedItem;
        }
Ejemplo n.º 4
0
        public static T CreateIQuest <T>() where T : IQuest
        {
            T iquest = ScriptableObject.CreateInstance <T>();

            string uniqueID = Guid.NewGuid().ToString("N");

            iquest.name         = uniqueID;
            iquest.uniqueID     = uniqueID;
            iquest.internalName = QuestUtilities.GetInternalName();

            iquest.reactions = CreateReaction(
                string.Format(REACTIONS_NAME, iquest.name),
                REACTIONS_PATH
                );

            Quests root = QuestUtilities.GetQuestsRoot();

            AssetDatabase.AddObjectToAsset(iquest, root);
            AssetDatabase.SaveAssets();
            AssetDatabase.ImportAsset(Path.Combine(ROOT_PATH, ROOT_NAME));
            return(iquest);
        }