Пример #1
0
        //public List<Upgrade> Upgrades { get; set; }
        //public ResourceButton ResourceButton { get; set; }

        /*
         *  New Goals:
         *  Add a panel for storing Generators (display and purchase)
         *  Panel should be maintained by a System
         *  System stores a list of added Generators (we have this as GeneratorSystem)
         *  When a new Generator is added, put it in the store
         *  Sort by buy price (we need a buy price)
         *  Fade/Disable/Something when we don't have enough of the required resources
         *  Enable when we do
         *  On Click, add to the right kind of Generator
         */

        public Resource()
        {
            Details = new ResourceDetail()
            {
                Type     = ResourceType.Gold,
                Quantity = 0,
                PerClick = 1,
                Name     = "Gold"
            };

            Generators = new List <Generator>();

            Generators.Add(GeneratorSystem.AddGenerator(new Generator()
            {
                Type            = ResourceType.Gold,
                Quantity        = 1,
                PerPeriod       = 0.1M,
                PeriodDuration  = 1,
                TimeAccumulated = 0,
                BaseName        = "Pickaxe"
            }));

            Generators.Add(GeneratorSystem.AddGenerator(new Generator()
            {
                Type            = ResourceType.Gold,
                Quantity        = 1,
                PerPeriod       = 1,
                PeriodDuration  = 1,
                TimeAccumulated = 0,
                BaseName        = "Miner"
            }));

            BindGenerators();
        }
    public override void OnInspectorGUI()
    {
        GeneratorSystem obj = target as GeneratorSystem;

        //追加ボタン
        EditorGUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button("Add", GUILayout.Width(160f), GUILayout.Height(15f)))
        {
            obj.Add_List(0);
        }
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();


        for (int i = 0; i < obj.list.Count; i++)
        {
            EditorGUILayout.BeginVertical(GUI.skin.box);

            obj.list[i].name           = EditorGUILayout.TextField("", obj.list[i].name, GUILayout.Height(20));
            obj.list[i].kind           = (GeneratorSystem.Kind)EditorGUILayout.EnumPopup("Kind", obj.list[i].kind);
            obj.list[i].obj            = (GameObject)EditorGUILayout.ObjectField("Obj", obj.list[i].obj, typeof(GameObject), false);
            obj.list[i].parent         = (GameObject)EditorGUILayout.ObjectField("Parent", obj.list[i].parent, typeof(GameObject), true);
            obj.list[i].is_Object_Pool = EditorGUILayout.Toggle("ObjectPool", obj.list[i].is_Object_Pool);

            GUILayout.Space(5);
            GUILayout.Box("", GUILayout.ExpandWidth(true), GUILayout.Height(1));
            GUILayout.Space(5);

            obj.list[i].num = EditorGUILayout.IntField("Num", obj.list[i].num);

            obj.list[i].pos_Kind = (GeneratorSystem.PosKind)EditorGUILayout.EnumPopup("Position Type", obj.list[i].pos_Kind);

            if (obj.list[i].kind == GeneratorSystem.Kind.liner)
            {
                obj.list[i].liner.initial_Pos = EditorGUILayout.Vector2Field("InitialPos", obj.list[i].liner.initial_Pos);
                if (obj.list[i].num > 1)
                {
                    obj.list[i].liner.inter_Vector = EditorGUILayout.Vector2Field("InterSpace", obj.list[i].liner.inter_Vector);
                }
            }
            else if (obj.list[i].kind == GeneratorSystem.Kind.rotate)
            {
                obj.list[i].rotate.center_Pos = EditorGUILayout.Vector2Field("Center", obj.list[i].rotate.center_Pos);
                EditorGUILayout.BeginHorizontal();
                {
                    obj.list[i].rotate.radius = EditorGUILayout.FloatField("Radius", obj.list[i].rotate.radius);
                    if (obj.list[i].num > 1)
                    {
                        obj.list[i].rotate.spread_Radius = EditorGUILayout.FloatField("SpreadRad", obj.list[i].rotate.spread_Radius);
                    }
                }
                EditorGUILayout.EndHorizontal();
                EditorGUILayout.BeginHorizontal();
                {
                    obj.list[i].rotate.initial_Angle_Deg = EditorGUILayout.FloatField("InitialAngle[deg]", obj.list[i].rotate.initial_Angle_Deg);
                    if (obj.list[i].num > 1)
                    {
                        obj.list[i].rotate.inter_Angle_Deg = EditorGUILayout.FloatField("InterAngle[deg]", obj.list[i].rotate.inter_Angle_Deg);
                    }
                }
                EditorGUILayout.EndHorizontal();
            }

            if (obj.list[i].num > 1)
            {
                obj.list[i].span = EditorGUILayout.FloatField("Span[s]", obj.list[i].span);
            }

            obj.list[i].after_Span = EditorGUILayout.FloatField("AfterSpan[s]", obj.list[i].after_Span);

            GUILayout.Box("", GUILayout.ExpandWidth(true), GUILayout.Height(1));

            //削除ボタン
            EditorGUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("Remove", GUILayout.Width(160f), GUILayout.Height(15f)))
            {
                obj.Remove_List(i);
            }
            GUILayout.EndHorizontal();

            EditorGUILayout.EndVertical();

            //追加ボタン
            EditorGUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("Add", GUILayout.Width(160f), GUILayout.Height(15f)))
            {
                obj.Add_List(i + 1);
            }
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();
        }

        EditorUtility.SetDirty(obj);
    }