예제 #1
0
    private void CheckType(WeaponComponent.ComponentType type, HashSet <WeaponComponent.ComponentType> listedTypes)
    {
        GUIStyle style = "label";

        style.richText = true;
        if (!listedTypes.Contains(type))
        {
            GUILayout.Label("<color=red>Warning:</color> <color=black>Weapon is missing " + type.ToString() + "</color>", style);
        }
    }
        public override void OnInspectorGUI()
        {
            serializedObject.Update();

            base.OnInspectorGUI();

            WeaponComponent weapComp = (WeaponComponent)target;

            EditorGUILayout.Space();
            EditorGUILayout.LabelField("READ ONLY", EditorStyles.boldLabel, GUILayout.MaxWidth(90));
            EditorGUILayout.PropertyField(stateProp);

            WeaponComponent.ComponentType setCompType = (WeaponComponent.ComponentType)stateProp.enumValueIndex;


            EditorGUILayout.Space();


            EditorGUILayout.LabelField("Details", EditorStyles.boldLabel);
            EditorGUILayout.BeginHorizontal();
            switch (setCompType)
            {
            //Stock
            case WeaponComponent.ComponentType.Stock:

                EditorGUILayout.LabelField("Stock", GUILayout.MaxWidth(70));

                EditorGUILayout.LabelField("Accuracy", GUILayout.MaxWidth(70));
                weapComp.accuracy  = EditorGUILayout.FloatField(weapComp.accuracy, GUILayout.MaxWidth(50));
                weapComp.positions = new Transform[0];

                weapComp.maxAmmo    = 0;
                weapComp.shootForce = 0;
                weapComp.fireRate   = 0;
                weapComp.damage     = 0;

                break;

            //Frame
            case WeaponComponent.ComponentType.Frame:

                EditorGUILayout.LabelField("Frame", GUILayout.MaxWidth(70));

                EditorGUILayout.LabelField("Fire rate", GUILayout.MaxWidth(70));
                weapComp.fireRate = EditorGUILayout.FloatField(weapComp.fireRate, GUILayout.MaxWidth(50));

                EditorGUILayout.LabelField("Shoot force", GUILayout.MaxWidth(70));
                weapComp.shootForce = EditorGUILayout.FloatField(weapComp.shootForce, GUILayout.MaxWidth(50));
                weapComp.positions  = new Transform[3];

                weapComp.maxAmmo  = 0f;
                weapComp.damage   = 0f;
                weapComp.accuracy = 0f;
                break;

            //Barrel
            case WeaponComponent.ComponentType.Barrel:

                EditorGUILayout.LabelField("Barrel", GUILayout.MaxWidth(70));

                EditorGUILayout.LabelField("Damage", GUILayout.MaxWidth(70));
                weapComp.damage    = EditorGUILayout.FloatField(weapComp.damage, GUILayout.MaxWidth(50));
                weapComp.positions = new Transform[0];

                weapComp.maxAmmo    = 0;
                weapComp.shootForce = 0;
                weapComp.fireRate   = 0;
                weapComp.accuracy   = 0;
                break;

            //Magazine
            case WeaponComponent.ComponentType.Magazine:

                EditorGUILayout.LabelField("Magazine", GUILayout.MaxWidth(70));

                EditorGUILayout.LabelField("Max Ammo", GUILayout.MaxWidth(70));
                weapComp.maxAmmo   = EditorGUILayout.FloatField(weapComp.maxAmmo, GUILayout.MaxWidth(50));
                weapComp.positions = new Transform[0];

                weapComp.damage     = 0;
                weapComp.shootForce = 0;
                weapComp.fireRate   = 0;
                weapComp.accuracy   = 0;
                break;
            }
            EditorGUILayout.EndHorizontal();
        }