Пример #1
0
    public override void OnInspectorGUI()
    {
        targetAction = target as QuestAction;
        CheckLocalizations();
        //Debug.Log ("Editing " + targetAction);

        if (Application.isPlaying)
        {
            if (GUILayout.Button(QuestEditorsLocals.GetString("Action!")))
            {
                targetAction.Action();
            }
        }

        GUILayout.Space(3f);
        DrawActions(targetAction.actions, QuestEditorsLocals.GetString("Actions sequence:"), ref targetAction.visibleActions, Color.white);

        Event evt = Event.current;

        if (evt.type == EventType.ContextClick)
        {
            GenericMenu menu = new GenericMenu();
            menu.AddItem(new GUIContent("Test"), true, OnInspectorGUI);
            menu.AddItem(new GUIContent("Test"), true, OnInspectorGUI);
            menu.ShowAsContext();
            evt.Use();
        }
    }
Пример #2
0
    public static string GetString(string key)
    {
        if (instance == null)
        {
            instance = FindObjectOfType <QuestEditorsLocals>();
        }

        List <Key> searchArr = null;

        if (instance.language == Language.Eng)
        {
            searchArr = instance.engStrings;
        }
        if (instance.language == Language.Rus)
        {
            searchArr = instance.rusStrings;
        }

        Key ks = searchArr.Find(x => x.key == key);

        if (ks == null)
        {
            //Debug.LogWarning ("Can't find quest localize string: " + key);
            return(key);
        }

        return(ks.value);
    }
Пример #3
0
    public void DrawQuestAction(DebugQuestAction action)
    {
        GUILayout.BeginHorizontal();

        EditorGUILayout.LabelField(QuestEditorsLocals.GetString("Message"), GUILayout.MaxWidth(80f));
        action.message = EditorGUILayout.TextField(action.message);

        GUILayout.EndHorizontal();
    }
Пример #4
0
    public void DrawQuestAction(IfElseQuestAction action)
    {
        internalIndent++;

        DrawIfElseCondition(action.conditions, ref action.visibleConditions);
        DrawActions(action.onTrueActions, QuestEditorsLocals.GetString("TRUE actions sequence"), ref action.visibleTrueActions, lightGreen);
        DrawActions(action.onFalseActions, QuestEditorsLocals.GetString("FALSE actions sequence"), ref action.visibleFalseActions, lightRed);

        internalIndent--;
    }
Пример #5
0
    public void DrawQuestAction(SetVariableQuestAction action)
    {
        GUILayout.BeginHorizontal();

        action.variable = (QuestVariable)EditorGUILayout.ObjectField(action.variable, typeof(QuestVariable), false);
        EditorGUILayout.LabelField(QuestEditorsLocals.GetString("Value"), GUILayout.MaxWidth(60f));
        action.value = EditorGUILayout.TextField(action.value);

        GUILayout.EndHorizontal();
    }
Пример #6
0
 void LocalizeArray(ref string[] locals, string[] keys)
 {
     if (locals == null)
     {
         locals = new string[keys.Count()];
         for (int i = 0; i < keys.Count(); i++)
         {
             locals[i] = QuestEditorsLocals.GetString(keys[i]);
         }
     }
 }
Пример #7
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();
        }
    }
Пример #8
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();
        }
    }
Пример #9
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);
    }