Ejemplo n.º 1
0
 public override void OnInspectorGUI()
 {
     m_Target.AttackType = (AttackType)EditorGUILayout.EnumPopup("AttackType", m_Target.AttackType);
     NGUILayout.ShowProperty(target, "LockedAgent");
     if (m_Target.AttackType != AttackType.Normal)
     {
         EditorGUILayout.Space();
         NGUILayout.ShowProperty(target, "InstantiateObject");
     }
 }
Ejemplo n.º 2
0
    /// <summary>
    /// 繪製資料表
    /// </summary>
    /// <param name="dataType">目標資料</param>
    private void ShowTable(DataType[] dataType)
    {
        _scrollPos = EditorGUILayout.BeginScrollView(_scrollPos);
        for (int i = 0; i < _dataTable.Count; i++)
        {
            EditorGUILayout.BeginHorizontal();
            for (int j = 0; j < _dataTable[i].Length; j++)
            {
                switch (dataType[j])
                {
                case DataType.Lock:
                    NGUILayout.ReadOnlyField(_tableFieldName[j], _dataTable[i][j].ConvertTo <string>());
                    break;

                case DataType.String:
                    _dataTable[i][j] = NGUILayout.TextField(_tableFieldName[j], _dataTable[i][j].ConvertTo <string>());
                    break;

                case DataType.Int:
                    _dataTable[i][j] = NGUILayout.IntField(_tableFieldName[j], _dataTable[i][j].ConvertTo <int>());
                    break;

                case DataType.Float:
                    _dataTable[i][j] = NGUILayout.FloatField(_tableFieldName[j], _dataTable[i][j].ConvertTo <float>());
                    break;

                case DataType.AgentType:
                    _dataTable[i][j] = NGUILayout.EnumPopup(_tableFieldName[j], (AgentType)_dataTable[i][j].ConvertTo <int>());
                    break;

                case DataType.AgentTypeFlags:
                    _dataTable[i][j] = NGUILayout.EnumFlagsPopup(_tableFieldName[j], (AgentType)_dataTable[i][j].ConvertTo <int>());
                    break;

                case DataType.AgentSpeed:
                    _dataTable[i][j] = NGUILayout.EnumPopup(_tableFieldName[j], (AgentSpeed)_dataTable[i][j].ConvertTo <int>());
                    break;
                }
            }
            if (GUILayout.Button("Save"))
            {
                new DataTable(_currentTable).UpdateRow(_dataTable[i][0].ConvertTo <int>(), _tableFieldName, _dataTable[i]);
            }

            if (GUILayout.Button("Del"))
            {
                new DataTable(_currentTable).DeleteRow(_dataTable[i][0].ConvertTo <int>());
                _dataTable.RemoveAt(i);
            }
            EditorGUILayout.EndHorizontal();
        }
        AddButton();
        EditorGUILayout.EndScrollView();
    }
Ejemplo n.º 3
0
    /// <summary>
    /// 繪製動作表
    /// </summary>
    public void DrawTable()
    {
        _scrollPos = EditorGUILayout.BeginScrollView(_scrollPos);
        int deep = 0;

        for (int i = 0; i < _actions.Count; i++)
        {
            ActionBase action = _actions[i];
            EditorGUILayout.BeginHorizontal();
            //
            for (int j = deep; j > 0; j--)
            {
                GUILayout.Space(10);
                if (j == 1)
                {
                    if (action.Type != ActionType.EndLoop)
                    {
                        GUILayout.Label("├");
                    }
                    else
                    {
                        GUILayout.Label("└");
                    }
                }
                else
                {
                    GUILayout.Label("│");
                }
            }
            EditorGUI.BeginChangeCheck();
            action.Type = (ActionType)EditorGUILayout.EnumPopup(action.Type, GUILayout.Width(80));
            if (EditorGUI.EndChangeCheck())
            {
                switch (action.Type)
                {
                case ActionType.Train:
                    _actions.Reset(i, new TrainAction());
                    break;

                case ActionType.Delay:
                    _actions.Reset(i, new DelayAction());
                    break;

                case ActionType.Loop:
                    _actions.Reset(i, new LoopAction());
                    break;

                case ActionType.EndLoop:
                    _actions.Reset(i, new EndLoopAction());
                    break;

                case ActionType.LevelUp:
                    _actions.Reset(i, new LevelUpAction());
                    break;

                case ActionType.Warning:
                    _actions.Reset(i, new WarningAction());
                    break;

                case ActionType.BossWave:
                    _actions.Reset(i, new BossWaveAction());
                    break;

                case ActionType.ChickenRain:
                    _actions.Reset(i, new ChickenRainAction());
                    break;
                }
                return;
            }
            switch (action.Type)
            {
            case ActionType.Train:
            {
                EditorGUI.BeginChangeCheck();
                Object newObject = NGUILayout.GameObjectField("", Prefabs.Troop[action.As <TrainAction>().Identify], true, GUILayout.Width(120));
                if (EditorGUI.EndChangeCheck())
                {
                    int newID = (newObject as GameObject).GetComponent <CoreBase>().Identify;
                    if (newID >= 10000 && newID < 20000)
                    {
                        action.As <TrainAction>().Identify = newID;
                    }
                }
                action.As <TrainAction>().Amount = NGUILayout.IntField("Amount", action.As <TrainAction>().Amount, GUILayout.Width(80));
                break;
            }

            case ActionType.Delay:
            {
                action.As <DelayAction>().DelayTime = EditorGUILayout.FloatField(action.As <DelayAction>().DelayTime, GUILayout.Width(80));
                GUILayout.Label("s");
                break;
            }

            case ActionType.Loop:
            {
                action.As <LoopAction>().LoopTimes = EditorGUILayout.IntField(action.As <LoopAction>().LoopTimes, GUILayout.Width(80));
                GUILayout.Label("times");
                deep++;
                break;
            }

            case ActionType.EndLoop:
            {
                deep--;
                break;
            }

            case ActionType.LevelUp:
            {                            //
                break;
            }

            case ActionType.Warning:
            {
                action.As <WarningAction>().WarningType = (WarningType)NGUILayout.EnumPopup("", action.As <WarningAction>().WarningType, GUILayout.Width(80));
                if (action.As <WarningAction>().WarningType == WarningType.Custom)
                {
                    action.As <WarningAction>().CustomText = NGUILayout.TextField("Text", action.As <WarningAction>().CustomText);
                }
                action.As <WarningAction>().TextColor = EditorGUILayout.ColorField("", action.As <WarningAction>().SelectColor(), GUILayout.Width(80));
                break;
            }

            case ActionType.BossWave:
            {
                EditorGUI.BeginChangeCheck();
                Object newObject = NGUILayout.GameObjectField("", Prefabs.Troop[action.As <BossWaveAction>().Identify], true, GUILayout.Width(120));
                if (EditorGUI.EndChangeCheck())
                {
                    int newID = (newObject as GameObject).GetComponent <CoreBase>().Identify;
                    if (newID >= 10000 && newID < 20000)
                    {
                        action.As <BossWaveAction>().Identify = newID;
                    }
                }
                action.As <BossWaveAction>().Amount = NGUILayout.IntField("Amount", action.As <BossWaveAction>().Amount, GUILayout.Width(80));
                break;
            }

            case ActionType.ChickenRain:
            {
                EditorGUI.BeginChangeCheck();
                Object newObject = NGUILayout.GameObjectField("", Prefabs.Troop[action.As <ChickenRainAction>().Identify], true, GUILayout.Width(120));
                if (EditorGUI.EndChangeCheck())
                {
                    int newID = (newObject as GameObject).GetComponent <CoreBase>().Identify;
                    if (newID >= 10000 && newID < 20000)
                    {
                        action.As <ChickenRainAction>().Identify = newID;
                    }
                }
                action.As <ChickenRainAction>().Amount = NGUILayout.IntField("Amount", action.As <ChickenRainAction>().Amount, GUILayout.Width(80));
                break;
            }
            }
            DrawButtonFamily(i);
            GUILayout.FlexibleSpace();
            EditorGUILayout.EndHorizontal();
        }
        GUILayout.FlexibleSpace();
        EditorGUILayout.EndScrollView();
    }