void DrawIfElseCondition(List <IConditionState> states, ref bool opened) { opened = EditorsUtilities.DrawHeader(QuestEditorsLocals.GetString("IF:"), opened, internalIndent); if (opened) { EditorsUtilities.BeginContentsColored(lightBlue, internalIndent); if (states.Count == 0) { GUILayout.Label(QuestEditorsLocals.GetString("ALWAYS TRUE (no conditions)")); } else { EditorGUI.indentLevel++; int idx = 0; int needRemoveAtIdx = -1; foreach (IConditionState state in states) { if (DrawConditionStateUI(state, (idx % 2 == 0) ? Color.white:Color.gray, idx != states.Count - 1)) { needRemoveAtIdx = idx; } idx++; } if (needRemoveAtIdx >= 0) { states.RemoveAt(needRemoveAtIdx); } EditorGUI.indentLevel--; } GUILayout.BeginHorizontal(); if (GUILayout.Button(QuestEditorsLocals.GetString("Clear"))) { states.Clear(); } if (GUILayout.Button(QuestEditorsLocals.GetString("Add condition"))) { CreateNewCondition(states); } creationConditionType = (ConditionType)EditorGUILayout.Popup((int)creationConditionType, locConditionTypeNames); GUILayout.Space(5f); GUILayout.EndHorizontal(); EditorsUtilities.EndContents(); } }
public void DrawActions(List <IQuestAction> actions, string caption, ref bool opened, Color color) { opened = EditorsUtilities.DrawHeader(caption, opened, internalIndent); if (opened) { EditorsUtilities.BeginContentsColored(color, internalIndent); if (actions.Count == 0) { GUILayout.Label(QuestEditorsLocals.GetString("No actions")); } else { internalIndent++; int idx = 0; int needActionIdx = -1; int needAction = 0; foreach (IQuestAction act in actions) { int actt = DrawActionUI(act, (idx % 2 == 0) ? Color.white:Color.gray); if (actt > 0) { needActionIdx = idx; needAction = actt; } idx++; } if (needActionIdx >= 0) { if (needAction == 1) { actions.RemoveAt(needActionIdx); } if (needAction == 2) { actions.Insert(needActionIdx - 1, actions[needActionIdx]); actions.RemoveAt(needActionIdx + 1); } if (needAction == 3) { actions.Insert(needActionIdx + 2, actions[needActionIdx]); actions.RemoveAt(needActionIdx); } } internalIndent--; } GUILayout.BeginHorizontal(); if (GUILayout.Button(QuestEditorsLocals.GetString("Clear"))) { ClearActions(actions); } if (GUILayout.Button(QuestEditorsLocals.GetString("Add action"))) { CreateNewAction(actions); } creationActionType = (ActionType)EditorGUILayout.Popup((int)creationActionType, locActionTypeNames); GUILayout.Space(5f); GUILayout.EndHorizontal(); EditorsUtilities.EndContents(); } }
public int DrawActionUI(IQuestAction action, Color colr) { int procAction = 0; GUILayout.BeginHorizontal(); if (action.opened) { GUILayout.BeginVertical(); if (GUILayout.Button("\u25AC", "ButtonLeft", GUILayout.Width(20f), GUILayout.Height(16f))) { procAction = 1; } if (GUILayout.Button("\u25B2", "ButtonLeft", GUILayout.Width(20f), GUILayout.Height(16f))) { procAction = 2; } if (GUILayout.Button("\u25BC", "ButtonLeft", GUILayout.Width(20f), GUILayout.Height(16f))) { procAction = 3; } GUILayout.EndVertical(); } else { if (GUILayout.Button("\u25AC", "ButtonLeft", GUILayout.Width(20f), GUILayout.Height(16f))) { procAction = 1; } } EditorGUILayout.BeginVertical(); action.opened = EditorsUtilities.DrawHeader(action.caption, action.opened, internalIndent); if (action.opened) { EditorsUtilities.BeginContentsColored(colr, internalIndent); EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(QuestEditorsLocals.GetString("Caption:"), GUILayout.MaxWidth(100f)); action.caption = EditorGUILayout.TextField(action.caption); EditorGUILayout.EndHorizontal(); if (action.GetType() == typeof(PlayAnimQuestAction)) { DrawQuestAction(action as PlayAnimQuestAction); } else if (action.GetType() == typeof(IfElseQuestAction)) { DrawQuestAction(action as IfElseQuestAction); } else if (action.GetType() == typeof(DebugQuestAction)) { DrawQuestAction(action as DebugQuestAction); } else if (action.GetType() == typeof(SetVariableQuestAction)) { DrawQuestAction(action as SetVariableQuestAction); } else if (action.GetType() == typeof(AddQuestItemAction)) { DrawQuestAction(action as AddQuestItemAction); } else if (action.GetType() == typeof(UseItemQuestAction)) { DrawQuestAction(action as UseItemQuestAction); } EditorGUILayout.EndVertical(); EditorsUtilities.EndContents(); } EditorGUILayout.EndVertical(); GUILayout.EndHorizontal(); GUILayout.Space(5f); return(procAction); }