Beispiel #1
0
        private void OnSelectElement(ReorderableList list)
        {
            var isIndexValid = (0 <= list.index && list.index < list.count);

            m_selectedCondition = isIndexValid ? (list.serializedProperty.GetArrayElementAtIndex(list.index).objectReferenceValue as QuestCondition) : null;
            m_conditionEditor   = null;
        }
 public void CopyFrom(QuestCondition questCondition)
 {
     if (questCondition == null)
     {
         Debug.LogWarning("Quest Machine: QuestConditionProxy.CopyFrom source is null.");
         return;
     }
     t = questCondition.GetType().FullName;
     questCondition.OnBeforeProxySerialization();
     if (questCondition is CounterQuestCondition)
     {
         t = CounterTypeString;
         s = GetCounterQuestConditionProxyData(questCondition as CounterQuestCondition);
     }
     else if (questCondition is MessageQuestCondition)
     {
         t = MessageTypeString;
         s = GetMessageQuestConditionProxyData(questCondition as MessageQuestCondition);
     }
     else if (questCondition is TimerQuestCondition)
     {
         t = TimerTypeString;
         s = GetTimerQuestConditionProxyData(questCondition as TimerQuestCondition);
     }
     else
     {
         s = JsonUtility.ToJson(questCondition);
     }
 }
        public static List <QuestCondition> CreateList(QuestConditionProxy[] conditionsProxy)
        {
            var list = new List <QuestCondition>();

            if (conditionsProxy == null)
            {
                Debug.LogWarning("Quest Machine: QuestConditionProxy.CreateList source is null.");
                return(list);
            }
            for (int i = 0; i < conditionsProxy.Length; i++)
            {
                var conditionProxy = conditionsProxy[i];
                if (conditionProxy == null || string.IsNullOrEmpty(conditionProxy.t) || string.IsNullOrEmpty(conditionProxy.s))
                {
                    continue;
                }
                QuestCondition condition = null;
                if (string.Equals(conditionProxy.t, CounterTypeString))
                {
                    condition = ScriptableObject.CreateInstance <CounterQuestCondition>();
                    ApplyCounterQuestConditionProxyData(condition as CounterQuestCondition, conditionProxy.s);
                }
                else if (string.Equals(conditionProxy.t, MessageTypeString))
                {
                    condition = ScriptableObject.CreateInstance <MessageQuestCondition>();
                    ApplyMessageQuestConditionProxyData(condition as MessageQuestCondition, conditionProxy.s);
                }
                else if (string.Equals(conditionProxy.t, TimerTypeString))
                {
                    condition = ScriptableObject.CreateInstance <TimerQuestCondition>();
                    ApplyTimerQuestConditionProxyData(condition as TimerQuestCondition, conditionProxy.s);
                }
                else
                {
                    condition = ScriptableObject.CreateInstance(RuntimeTypeUtility.GetTypeFromName(conditionProxy.t)) as QuestCondition;
                    if (condition != null)
                    {
                        JsonUtility.FromJsonOverwrite(conditionProxy.s, condition);
                    }
                }
                if (condition != null)
                {
                    condition.OnAfterProxyDeserialization();
                    list.Add(condition);
                }
            }
            return(list);
        }
Beispiel #4
0
        private void SetupReorderableList(SerializedProperty conditionSetProperty)
        {
            if (conditionSetProperty == null)
            {
                return;
            }
            var conditionListProperty = conditionSetProperty.FindPropertyRelative("m_conditionList");

            UnityEngine.Assertions.Assert.IsNotNull(conditionListProperty, "Quest Machine: Internal error - m_conditionList is null in QuestConditionSetInspectorGUI.");
            if (conditionListProperty == null)
            {
                return;
            }
            m_list = new ReorderableList(QuestEditorWindow.selectedQuestSerializedObject, conditionListProperty, true, true, true, true);
            m_list.drawHeaderCallback    = OnDrawHeader;
            m_list.drawElementCallback   = OnDrawElement;
            m_list.onSelectCallback      = OnSelectElement;
            m_list.onRemoveCallback      = OnRemoveElement;
            m_list.onAddDropdownCallback = OnAddDropdown;
            m_selectedCondition          = null;
            m_conditionEditor            = null;
        }
Beispiel #5
0
        private void OnAddQuestConditionType(object data)
        {
            QuestEditorWindow.ApplyModifiedPropertiesFromSelectedQuestSerializedObject();
            var type      = data as Type;
            var condition = ScriptableObjectUtility.CreateScriptableObject(type);

            condition.name      = type.Name;
            m_selectedCondition = condition as QuestCondition;
            m_conditionEditor   = null;
            if (QuestEditorWindow.selectedQuest != null)
            {
                AssetUtility.AddToAsset(condition, QuestEditorWindow.selectedQuest);
                m_selectedCondition.SetRuntimeReferences(QuestEditorWindow.selectedQuest, null);
            }
            QuestEditorWindow.UpdateSelectedQuestSerializedObject();
            m_list.serializedProperty.arraySize++;
            m_list.index = m_list.serializedProperty.arraySize - 1;
            m_list.serializedProperty.GetArrayElementAtIndex(m_list.serializedProperty.arraySize - 1).objectReferenceValue = condition;
            m_list.serializedProperty.serializedObject.ApplyModifiedProperties();
            QuestEditorWindow.ApplyModifiedPropertiesFromSelectedQuestSerializedObject();
            AssetDatabase.SaveAssets();
        }
 public QuestConditionProxy(QuestCondition questCondition)
 {
     CopyFrom(questCondition);
 }