public ConditionItem() { conditionType = s_lastWizardResourceType; questNamesIndex = s_lastQuestNamesIndex; questEntryIndex = s_lastQuestEntryIndex; actorNamesIndex = s_lastActorNamesIndex; actorFieldIndex = s_lastActorFieldIndex; itemNamesIndex = s_lastItemNamesIndex; itemFieldIndex = s_lastItemFieldIndex; locationNamesIndex = s_lastLocationNameIndex; locationFieldIndex = s_lastLocationFieldIndex; variableNamesIndex = s_lastVariableNameIndex; }
private void DrawConditionItem(Rect position, ConditionItem item, ref ConditionItem itemToDelete) { const float typeWidth = 96; const float equalityWidth = 64; const float questStateWidth = 96; const float deleteButtonWidth = 22; int originalIndentLevel = EditorGUI.indentLevel; EditorGUI.indentLevel = 0; var x = position.x; var y = position.y; var rect = new Rect(x, y, 96, EditorGUIUtility.singleLineHeight); x += rect.width + 2; ConditionWizardResourceType newConditionType = (ConditionWizardResourceType)EditorGUI.EnumPopup(rect, GUIContent.none, item.conditionType); if (newConditionType != item.conditionType) { item.conditionType = newConditionType; item.conditionsQuestEntryNames = new string[0]; } if (item.conditionType == ConditionWizardResourceType.Quest) { // Quest: var questNameWidth = position.width - (typeWidth + equalityWidth + questStateWidth + deleteButtonWidth + 8); rect = new Rect(x, y, questNameWidth, EditorGUIUtility.singleLineHeight); x += rect.width + 2; item.questNamesIndex = EditorGUI.Popup(rect, item.questNamesIndex, questNames); rect = new Rect(x, y, equalityWidth, EditorGUIUtility.singleLineHeight); item.equalityType = (EqualityType)EditorGUI.EnumPopup(rect, item.equalityType); x += rect.width + 2; rect = new Rect(x, y, questStateWidth, EditorGUIUtility.singleLineHeight); item.questState = QuestStateDrawer.RectQuestStatePopup(rect, item.questState); x += rect.width + 2; } else if (item.conditionType == ConditionWizardResourceType.QuestEntry) { // Quest Entry: var freeWidth = position.width - (typeWidth + equalityWidth + questStateWidth + deleteButtonWidth + 10); rect = new Rect(x, y, freeWidth / 2, EditorGUIUtility.singleLineHeight); int newQuestNamesIndex = EditorGUI.Popup(rect, item.questNamesIndex, complexQuestNames); if (newQuestNamesIndex != item.questNamesIndex) { item.questNamesIndex = newQuestNamesIndex; item.conditionsQuestEntryNames = new string[0]; } if ((item.conditionsQuestEntryNames.Length == 0) && (item.questNamesIndex < complexQuestNames.Length)) { item.conditionsQuestEntryNames = GetQuestEntryNames(complexQuestNames[item.questNamesIndex]); } x += rect.width + 2; rect = new Rect(x, y, freeWidth / 2, EditorGUIUtility.singleLineHeight); item.questEntryIndex = EditorGUI.Popup(rect, item.questEntryIndex, item.conditionsQuestEntryNames); x += rect.width + 2; rect = new Rect(x, y, equalityWidth, EditorGUIUtility.singleLineHeight); item.equalityType = (EqualityType)EditorGUI.EnumPopup(rect, item.equalityType); x += rect.width + 2; rect = new Rect(x, y, questStateWidth, EditorGUIUtility.singleLineHeight); item.questState = QuestStateDrawer.RectQuestStatePopup(rect, item.questState); x += rect.width + 2; } else if (item.conditionType == ConditionWizardResourceType.Variable) { // Variable: var freeWidth = position.width - (typeWidth + equalityWidth + deleteButtonWidth + 8); rect = new Rect(x, y, freeWidth / 2, EditorGUIUtility.singleLineHeight); item.variableNamesIndex = EditorGUI.Popup(rect, item.variableNamesIndex, variableNames); x += rect.width + 2; rect = new Rect(x, y, equalityWidth + 2 + (freeWidth / 2), EditorGUIUtility.singleLineHeight); DrawRightHand(rect, item, GetWizardVariableType(item.variableNamesIndex)); x += rect.width + 2; } else if (item.conditionType == ConditionWizardResourceType.Actor) { // Actor: var freeWidth = position.width - (typeWidth + equalityWidth + deleteButtonWidth + 10); rect = new Rect(x, y, freeWidth / 3, EditorGUIUtility.singleLineHeight); item.actorNamesIndex = EditorGUI.Popup(rect, item.actorNamesIndex, actorNames); x += rect.width + 2; rect = new Rect(x, y, freeWidth / 3, EditorGUIUtility.singleLineHeight); item.actorFieldIndex = EditorGUI.Popup(rect, item.actorFieldIndex, actorFieldNames); x += rect.width + 2; rect = new Rect(x, y, equalityWidth + 2 + (freeWidth / 3), EditorGUIUtility.singleLineHeight); DrawRightHand(rect, item, GetWizardActorFieldType(item.actorFieldIndex)); x += rect.width + 2; } else if (item.conditionType == ConditionWizardResourceType.Item) { // Item: var freeWidth = position.width - (typeWidth + equalityWidth + deleteButtonWidth + 10); rect = new Rect(x, y, freeWidth / 3, EditorGUIUtility.singleLineHeight); item.itemNamesIndex = EditorGUI.Popup(rect, item.itemNamesIndex, itemNames); x += rect.width + 2; rect = new Rect(x, y, freeWidth / 3, EditorGUIUtility.singleLineHeight); item.itemFieldIndex = EditorGUI.Popup(rect, item.itemFieldIndex, itemFieldNames); x += rect.width + 2; rect = new Rect(x, y, equalityWidth + 2 + (freeWidth / 3), EditorGUIUtility.singleLineHeight); DrawRightHand(rect, item, GetWizardItemFieldType(item.itemFieldIndex)); x += rect.width + 2; } else if (item.conditionType == ConditionWizardResourceType.Location) { // Location: var freeWidth = position.width - (typeWidth + equalityWidth + deleteButtonWidth + 10); rect = new Rect(x, y, freeWidth / 3, EditorGUIUtility.singleLineHeight); item.locationNamesIndex = EditorGUI.Popup(rect, item.locationNamesIndex, locationNames); x += rect.width + 2; rect = new Rect(x, y, freeWidth / 3, EditorGUIUtility.singleLineHeight); item.locationFieldIndex = EditorGUI.Popup(rect, item.locationFieldIndex, locationFieldNames); x += rect.width + 2; rect = new Rect(x, y, equalityWidth + 2 + (freeWidth / 3), EditorGUIUtility.singleLineHeight); DrawRightHand(rect, item, GetWizardLocationFieldType(item.locationFieldIndex)); x += rect.width + 2; } else if (item.conditionType == ConditionWizardResourceType.SimStatus) { // SimStatus: var freeWidth = position.width - (88 + 56 + equalityWidth + deleteButtonWidth + 10); rect = new Rect(x, y, 14, EditorGUIUtility.singleLineHeight); item.simStatusThisID = EditorGUI.Toggle(rect, GUIContent.none, item.simStatusThisID); rect = new Rect(x + 14, y, 38, EditorGUIUtility.singleLineHeight); if (item.simStatusThisID) { EditorGUI.LabelField(rect, "thisID"); } else { item.simStatusID = EditorGUI.IntField(rect, item.simStatusID); } x += rect.width + 14; rect = new Rect(x, y, 56, EditorGUIUtility.singleLineHeight); item.equalityType = (EqualityType)EditorGUI.EnumPopup(rect, item.equalityType); x += rect.width + 2; rect = new Rect(x, y, freeWidth, EditorGUIUtility.singleLineHeight); item.simStatusType = (SimStatusType)EditorGUI.EnumPopup(rect, item.simStatusType); x += rect.width + 2; } else if (item.conditionType == ConditionWizardResourceType.ManualEnter) { // Custom: rect = new Rect(x, y, position.width - (88 + deleteButtonWidth + 20), EditorGUIUtility.singleLineHeight); item.stringValue = EditorGUI.TextField(rect, item.stringValue); } // Delete button: rect = new Rect(position.x + position.width - deleteButtonWidth, y, deleteButtonWidth, EditorGUIUtility.singleLineHeight); if (GUI.Button(rect, new GUIContent("-", "Delete this condition."), EditorStyles.miniButton)) { itemToDelete = item; } EditorGUI.indentLevel = originalIndentLevel; }
private void DrawConditionItem(ConditionItem item, ref ConditionItem itemToDelete) { EditorGUILayout.BeginHorizontal(); ConditionWizardResourceType newConditionType = (ConditionWizardResourceType)EditorGUILayout.EnumPopup(item.conditionType, GUILayout.Width(96)); if (newConditionType != item.conditionType) { item.conditionType = newConditionType; item.conditionsQuestEntryNames = new string[0]; } if (item.conditionType == ConditionWizardResourceType.Quest) { // Quest: item.questNamesIndex = EditorGUILayout.Popup(item.questNamesIndex, questNames); item.equalityType = (EqualityType)EditorGUILayout.EnumPopup(item.equalityType, GUILayout.Width(60)); item.questState = QuestStateDrawer.LayoutQuestStatePopup(item.questState, 96); } else if (item.conditionType == ConditionWizardResourceType.QuestEntry) { // Quest Entry: int newQuestNamesIndex = EditorGUILayout.Popup(item.questNamesIndex, complexQuestNames); if (newQuestNamesIndex != item.questNamesIndex) { item.questNamesIndex = newQuestNamesIndex; item.conditionsQuestEntryNames = new string[0]; } if ((item.conditionsQuestEntryNames.Length == 0) && (item.questNamesIndex < complexQuestNames.Length)) { item.conditionsQuestEntryNames = GetQuestEntryNames(complexQuestNames[item.questNamesIndex]); } item.questEntryIndex = EditorGUILayout.Popup(item.questEntryIndex, item.conditionsQuestEntryNames); item.equalityType = (EqualityType)EditorGUILayout.EnumPopup(item.equalityType, GUILayout.Width(60)); item.questState = QuestStateDrawer.LayoutQuestStatePopup(item.questState, 96); } else if (item.conditionType == ConditionWizardResourceType.Variable) { // Variable: item.variableNamesIndex = EditorGUILayout.Popup(item.variableNamesIndex, variableNames); DrawRightHand(item, GetWizardVariableType(item.variableNamesIndex)); } else if (item.conditionType == ConditionWizardResourceType.Actor) { // Actor: item.actorNamesIndex = EditorGUILayout.Popup(item.actorNamesIndex, actorNames); item.actorFieldIndex = EditorGUILayout.Popup(item.actorFieldIndex, actorFieldNames); DrawRightHand(item, GetWizardActorFieldType(item.actorFieldIndex)); } else if (item.conditionType == ConditionWizardResourceType.Item) { // Item: item.itemNamesIndex = EditorGUILayout.Popup(item.itemNamesIndex, itemNames); item.itemFieldIndex = EditorGUILayout.Popup(item.itemFieldIndex, itemFieldNames); DrawRightHand(item, GetWizardItemFieldType(item.itemFieldIndex)); } else if (item.conditionType == ConditionWizardResourceType.Location) { // Location: item.locationNamesIndex = EditorGUILayout.Popup(item.locationNamesIndex, locationNames); item.locationFieldIndex = EditorGUILayout.Popup(item.locationFieldIndex, locationFieldNames); DrawRightHand(item, GetWizardLocationFieldType(item.locationFieldIndex)); } else if (item.conditionType == ConditionWizardResourceType.SimStatus) { // SimStatus: item.simStatusThisID = EditorGUILayout.Toggle(GUIContent.none, item.simStatusThisID, GUILayout.Width(14)); if (item.simStatusThisID) { EditorGUILayout.LabelField("thisID", GUILayout.Width(38)); } else { item.simStatusID = EditorGUILayout.IntField(item.simStatusID, GUILayout.Width(38)); } item.equalityType = (EqualityType)EditorGUILayout.EnumPopup(item.equalityType, GUILayout.Width(56)); item.simStatusType = (SimStatusType)EditorGUILayout.EnumPopup(item.simStatusType); } else if (item.conditionType == ConditionWizardResourceType.Custom) { // Custom: item.stringValue = EditorGUILayout.TextField(item.stringValue); } if (GUILayout.Button(new GUIContent("-", "Delete this condition."), EditorStyles.miniButton, GUILayout.Width(22))) { itemToDelete = item; } EditorGUILayout.EndHorizontal(); }
private void DrawConditionItem(ConditionItem item, ref ConditionItem itemToDelete) { EditorGUILayout.BeginHorizontal(); ConditionWizardResourceType newConditionType = (ConditionWizardResourceType)EditorGUILayout.EnumPopup(item.conditionType, GUILayout.Width(96)); if (newConditionType != item.conditionType) { item.conditionType = newConditionType; item.conditionsQuestEntryNames = new string[0]; s_lastWizardResourceType = newConditionType; } if (item.conditionType == ConditionWizardResourceType.Quest) { // Quest: item.questNamesIndex = EditorGUILayout.Popup(item.questNamesIndex, questNames); item.equalityType = (EqualityType)EditorGUILayout.EnumPopup(item.equalityType, GUILayout.Width(60)); item.questState = QuestStateDrawer.LayoutQuestStatePopup(item.questState, 96); s_lastQuestNamesIndex = item.questNamesIndex; } else if (item.conditionType == ConditionWizardResourceType.QuestEntry) { // Quest Entry: int newQuestNamesIndex = EditorGUILayout.Popup(item.questNamesIndex, complexQuestNames); if (newQuestNamesIndex != item.questNamesIndex) { item.questNamesIndex = newQuestNamesIndex; item.conditionsQuestEntryNames = new string[0]; } if ((item.conditionsQuestEntryNames.Length == 0) && (item.questNamesIndex < complexQuestNames.Length)) { item.conditionsQuestEntryNames = GetQuestEntryNames(complexQuestNames[item.questNamesIndex]); } item.questEntryIndex = EditorGUILayout.Popup(item.questEntryIndex, item.conditionsQuestEntryNames); item.equalityType = (EqualityType)EditorGUILayout.EnumPopup(item.equalityType, GUILayout.Width(60)); item.questState = QuestStateDrawer.LayoutQuestStatePopup(item.questState, 96); s_lastQuestNamesIndex = item.questNamesIndex; s_lastQuestEntryIndex = item.questEntryIndex; } else if (item.conditionType == ConditionWizardResourceType.Variable) { // Variable: item.variableNamesIndex = EditorGUILayout.Popup(item.variableNamesIndex, variableNames); DrawRightHand(item, GetWizardVariableType(item.variableNamesIndex)); s_lastVariableNameIndex = item.variableNamesIndex; } else if (item.conditionType == ConditionWizardResourceType.Actor) { // Actor: item.actorNamesIndex = EditorGUILayout.Popup(item.actorNamesIndex, actorNames); item.actorFieldIndex = EditorGUILayout.Popup(item.actorFieldIndex, actorFieldNames); DrawRightHand(item, GetWizardActorFieldType(item.actorFieldIndex)); s_lastActorNamesIndex = item.actorNamesIndex; s_lastActorFieldIndex = item.actorFieldIndex; } else if (item.conditionType == ConditionWizardResourceType.Item) { // Item: item.itemNamesIndex = EditorGUILayout.Popup(item.itemNamesIndex, itemNames); item.itemFieldIndex = EditorGUILayout.Popup(item.itemFieldIndex, itemFieldNames); DrawRightHand(item, GetWizardItemFieldType(item.itemFieldIndex)); s_lastItemNamesIndex = item.itemNamesIndex; s_lastItemFieldIndex = item.itemFieldIndex; } else if (item.conditionType == ConditionWizardResourceType.Location) { // Location: item.locationNamesIndex = EditorGUILayout.Popup(item.locationNamesIndex, locationNames); item.locationFieldIndex = EditorGUILayout.Popup(item.locationFieldIndex, locationFieldNames); DrawRightHand(item, GetWizardLocationFieldType(item.locationFieldIndex)); s_lastLocationNameIndex = item.locationNamesIndex; s_lastLocationFieldIndex = item.locationFieldIndex; } else if (item.conditionType == ConditionWizardResourceType.SimStatus) { // SimStatus: item.simStatusThisID = EditorGUILayout.Toggle(GUIContent.none, item.simStatusThisID, GUILayout.Width(14)); if (item.simStatusThisID) { EditorGUILayout.LabelField("thisID", GUILayout.Width(38)); } else { item.simStatusID = EditorGUILayout.IntField(item.simStatusID, GUILayout.Width(38)); } item.equalityType = (EqualityType)EditorGUILayout.EnumPopup(item.equalityType, GUILayout.Width(56)); item.simStatusType = (SimStatusType)EditorGUILayout.EnumPopup(item.simStatusType); } else if (item.conditionType == ConditionWizardResourceType.Custom) { // Custom Lua Functions: if (customLuaFuncs == null) { FindAllCustomLuaFuncs(true, out customLuaFuncs, out customLuaFuncNames); } int newCustomLuaFuncIndex = EditorGUILayout.Popup(item.customLuaFuncIndex, customLuaFuncNames); if (newCustomLuaFuncIndex != item.customLuaFuncIndex) { item.customLuaFuncIndex = newCustomLuaFuncIndex; item.customParamValues = null; } if (0 <= item.customLuaFuncIndex && item.customLuaFuncIndex < customLuaFuncs.Length) { var luaFuncRecord = customLuaFuncs[item.customLuaFuncIndex]; if (item.customParamValues == null) { InitCustomParamValues(luaFuncRecord, out item.customParamValues); } for (int i = 0; i < luaFuncRecord.parameters.Length; i++) { switch (luaFuncRecord.parameters[i]) { case CustomLuaParameterType.Bool: item.customParamValues[i] = (BooleanType)EditorGUILayout.EnumPopup((BooleanType)item.customParamValues[i]); break; case CustomLuaParameterType.Double: item.customParamValues[i] = EditorGUILayout.FloatField((float)item.customParamValues[i]); break; case CustomLuaParameterType.String: item.customParamValues[i] = EditorGUILayout.TextField((string)item.customParamValues[i]); break; case CustomLuaParameterType.Actor: item.customParamValues[i] = EditorGUILayout.Popup((int)item.customParamValues[i], actorNames); break; case CustomLuaParameterType.Quest: item.customParamValues[i] = EditorGUILayout.Popup((int)item.customParamValues[i], questNames); item.questNamesIndex = (int)item.customParamValues[i]; break; case CustomLuaParameterType.QuestEntry: if ((item.conditionsQuestEntryNames.Length == 0) && (item.questNamesIndex < complexQuestNames.Length)) { item.conditionsQuestEntryNames = GetQuestEntryNames(complexQuestNames[item.questNamesIndex]); } item.customParamValues[i] = EditorGUILayout.Popup((int)item.customParamValues[i], item.conditionsQuestEntryNames); break; case CustomLuaParameterType.Variable: item.customParamValues[i] = EditorGUILayout.Popup((int)item.customParamValues[i], variableNames); break; } } switch (luaFuncRecord.returnValue) { case CustomLuaReturnType.Bool: DrawRightHand(item, FieldType.Boolean); break; case CustomLuaReturnType.Double: DrawRightHand(item, FieldType.Number); break; case CustomLuaReturnType.String: DrawRightHand(item, FieldType.Text); break; } } } else if (item.conditionType == ConditionWizardResourceType.ManualEnter) { // Custom: item.stringValue = EditorGUILayout.TextField(item.stringValue); } if (GUILayout.Button(new GUIContent("-", "Delete this condition."), EditorStyles.miniButton, GUILayout.Width(22))) { itemToDelete = item; } EditorGUILayout.EndHorizontal(); }
public static ScriptWizardResourceType GetConditionResourceTypeToScriptResourceType(ConditionWizardResourceType conditionResourceType) { switch (conditionResourceType) { default: case ConditionWizardResourceType.Quest: return(ScriptWizardResourceType.Quest); case ConditionWizardResourceType.QuestEntry: return(ScriptWizardResourceType.QuestEntry); case ConditionWizardResourceType.Actor: return(ScriptWizardResourceType.Actor); case ConditionWizardResourceType.Item: return(ScriptWizardResourceType.Item); case ConditionWizardResourceType.Variable: return(ScriptWizardResourceType.Variable); case ConditionWizardResourceType.Location: return(ScriptWizardResourceType.Location); case ConditionWizardResourceType.SimStatus: return(ScriptWizardResourceType.SimStatus); case ConditionWizardResourceType.Custom: return(ScriptWizardResourceType.Custom); } }