Пример #1
0
    public bool DrawConditionStateUI(IConditionState state, Color colr, bool showOperator)
    {
        bool needRemove = false;

        GUILayout.BeginHorizontal();
        if (GUILayout.Button("", "ToggleMixed", GUILayout.Width(20f), GUILayout.Height(16f)))
        {
            needRemove = true;
        }

        EditorsUtilities.BeginContentsColored(colr, internalIndent);

        //GUILayout.Label (state.state.GetType().Name);
        if (state.GetType() == typeof(QuestVarCondition))
        {
            DrawStateCondition(state as QuestVarCondition);
        }
        if (state.GetType() == typeof(CheckItemCondition))
        {
            DrawStateCondition(state as CheckItemCondition);
        }

        EditorsUtilities.EndContents();

        if (showOperator)
        {
            state.opr = (IConditionState.OperatorType)EditorGUILayout.Popup((int)state.opr, locConditionOperatorTypeNames, GUILayout.MinWidth(40f));
        }

        GUILayout.EndHorizontal();
        GUILayout.Space(5f);

        return(needRemove);
    }
Пример #2
0
    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();
        }
    }
Пример #3
0
    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();
        }
    }
Пример #4
0
    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);
    }