/// <summary>
        /// Creates and setups the Selection UI.
        /// </summary>
        /// <param name="turret">The turret the option selects</param>
        /// <param name="shop">The Shop (allows the game to select the turret when the player clicks the panel)</param>
        /// <param name="lookup">The turret type to glyph lookup</param>
        public void Init(TurretBlueprint turret, Gameplay.Shop shop, TypeSpriteLookup lookup)
        {
            _turretBlueprint = turret;

            // Turret text
            displayName.text = turret.displayName;
            tagline.text     = turret.tagline;

            // Icon and Glyph
            icon.sprite = turret.shopIcon;
            TurretGlyphSo glyphSo = lookup.GetForType(turret.prefab.GetComponent <Turret>().GetType());

            glyph.sprite = glyphSo.glyph;
            glyph.color  = glyphSo.body;

            // Turret stats
            var turretPrefab = turret.prefab.GetComponent <Turret>();

            damage.SetData(turretPrefab.damage);
            rate.SetData(turretPrefab.fireRate);
            range.SetData(turretPrefab.range);

            // Turret's Modules
            if (turret.modules.Count == 0)
            {
                modulesSection.SetActive(false);
            }
            else
            {
                foreach (Module module in turret.modules)
                {
                    GameObject mod = Instantiate(moduleUI, modulesLayout.transform);
                    mod.name = "_" + mod.name;
                    mod.GetComponentInChildren <TurretModulesIcon>().SetData(module);
                }
            }

            // Colors
            tagline.color      = turret.accent;
            modulesTitle.color = turret.accent;
            bg.color           = turret.accent;
            modulesBg.color    = turret.accent * new Color(1, 1, 1, .16f);

            damage.SetColor(turret.accent);
            rate.SetColor(turret.accent);
            range.SetColor(turret.accent);

            // Adds the click event to the card
            bg.GetComponent <Button>().onClick.AddListener(delegate { MakeSelection(shop); });
        }
        /// <summary>
        /// Creates the UI
        /// </summary>
        /// <param name="initModule">The module the card is for</param>
        /// <param name="shop">The shop script</param>
        /// <param name="lookup">The TypeSpriteLookup to get the glyph</param>
        public void Init(Module initModule, Gameplay.Shop shop, TypeSpriteLookup lookup)
        {
            module = initModule;

            bg.color = initModule.accentColor;

            displayName.text = initModule.displayName;
            tagline.text     = initModule.tagline;
            tagline.color    = initModule.accentColor;

            icon.SetData(initModule);

            effect.text  = initModule.effectText;
            effect.color = initModule.accentColor;

            // Adds the any glyph
            if (initModule.GetValidTypes() == null)
            {
                TurretGlyphSo glyphSo = lookup.GetForType(null);
                Transform     glyph   = Instantiate(glyphPrefab, applicableGlyphs.transform).transform;
                glyph.name = "_" + glyph.name;
                glyph.Find("Body").GetComponent <HexagonSprite>().color  = glyphSo.body;
                glyph.Find("Shade").GetComponent <HexagonSprite>().color = glyphSo.shade;
                glyph.Find("Glyph").GetComponent <Image>().sprite        = glyphSo.glyph;
            }
            // Adds the glyph for every turret the module supports
            else
            {
                foreach (Type turretType in initModule.GetValidTypes())
                {
                    TurretGlyphSo glyphSo = lookup.GetForType(turretType);
                    Transform     glyph   = Instantiate(glyphPrefab, applicableGlyphs).transform;
                    glyph.name = "_" + glyph.name;
                    glyph.Find("Body").GetComponent <HexagonSprite>().color  = glyphSo.body;
                    glyph.Find("Shade").GetComponent <HexagonSprite>().color = glyphSo.shade;
                    glyph.Find("Glyph").GetComponent <Image>().sprite        = glyphSo.glyph;
                }
            }

            // When the card is clicked, the game picks the module
            bg.GetComponent <Button>().onClick.AddListener(delegate { MakeSelection(shop); });
        }
示例#3
0
        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
        {
            // Setup
            SerializedProperty sprites = property.FindPropertyRelative("sprites");
            List <Type>        types   = TypeSpriteLookup.GetAllTypes();

            // Make sure the arrays are the same length
            if (sprites.arraySize != types.Count)
            {
                sprites.ClearArray();
                for (var i = 0; i < types.Count; i++)
                {
                    sprites.InsertArrayElementAtIndex(i);
                }
            }

            var rect = new Rect(position.x, position.y, position.width, Height);

            // Add a mini header to make it clear
            EditorGUI.LabelField(rect, property.displayName, EditorStyles.boldLabel);
            rect.y += Height;

            // Add null
            EditorGUI.PropertyField(rect, sprites.GetArrayElementAtIndex(0), new GUIContent("null"));
            rect.y += Height;

            // Display each of the types & sprites
            for (var i = 1; i < types.Count; ++i)
            {
                //EditorGUI.LabelField(rect, types[i].Name, EditorStyles.boldLabel);
                //rect.y += Height;
                EditorGUI.PropertyField(rect, sprites.GetArrayElementAtIndex(i), new GUIContent(types[i].Name));
                rect.y += Height;
            }

            property.serializedObject.ApplyModifiedProperties();
        }
示例#4
0
 public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
 {
     return(TypeSpriteLookup.GetAllTypes().Count *Height * 2);
 }