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); }
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; }
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); }