Exemplo n.º 1
0
        void OnDestroy()
        {
            // We'll remove the invalid entries in settings. Can't have entries without IDs
            for (int i = 0; i < _settings.ADs.Count; i++)
            {
                Settings.Ad ad = _settings.ADs[i];

                if (string.IsNullOrEmpty(ad.Id))
                {
                    _settings.ADs.RemoveAt(i);
                    i--;
                    EditorUtility.SetDirty(_settings);

                    Debug.Log("Removing empty entry from Ads. Can't have empty IDs");
                }
            }

            for (int i = 0; i < _settings.IAPs.Count; i++)
            {
                Settings.InAppPurchase iap = _settings.IAPs[i];

                if (string.IsNullOrEmpty(iap.Id))
                {
                    _settings.IAPs.RemoveAt(i);
                    i--;
                    EditorUtility.SetDirty(_settings);

                    Debug.Log("Removing empty entry from IAPs. Can't have empty IDs");
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// In App Purchase Item Drawing for the Reorderable List
        /// </summary>
        /// <param name="rect"></param>
        /// <param name="index"></param>
        /// <param name="isActive"></param>
        /// <param name="isFocused"></param>
        private void DrawIAPsListItems(Rect rect, int index, bool isActive, bool isFocused)
        {
            Settings.InAppPurchase iap = _settings.IAPs[index];

            float itemInputYOffset = ((_listItemHeight - EditorGUIUtility.singleLineHeight) / 2f);

            Rect   idRect = new Rect(rect.x + 15f, rect.y + itemInputYOffset, rect.width * 0.2f, EditorGUIUtility.singleLineHeight);
            string newId  = (string)EditorUtils.TextFieldWithPlaceholder(idRect, iap.Id, "ID");

            if (iap.Id != newId)
            {
                // We'll check first if this is not a duplicate ID
                bool duplicate = false;
                for (int i = 0; i < _settings.IAPs.Count; i++)
                {
                    if (index == i)
                    {
                        continue;
                    }

                    if (newId == _settings.IAPs[i].Id)
                    {
                        // Duplicate !
                        Debug.LogError("IDs must be unique.");
                        duplicate = true;
                        break;
                    }
                }

                if (!duplicate)
                {
                    iap.Id = newId;
                    _settings.IAPs[index] = iap;

                    EditorUtility.SetDirty(_settings);
                }
            }

            Rect        typeRect = new Rect(rect.x + idRect.width + 30f, rect.y + itemInputYOffset, rect.width * 0.2f - 15f, EditorGUIUtility.singleLineHeight);
            ProductType type     = iap.Type;
            ProductType newType  = (ProductType)EditorGUI.EnumPopup(typeRect, iap.Type);

            if (newType != iap.Type)
            {
                iap.Type = newType;
                _settings.IAPs[index] = iap;

                EditorUtility.SetDirty(_settings);
            }

            Rect  priceRect = new Rect(rect.x + idRect.width + 45f + typeRect.width, rect.y + itemInputYOffset, rect.width * 0.2f - 15f, EditorGUIUtility.singleLineHeight);
            float newPrice  = EditorUtils.FloatFieldWithPlaceholder(priceRect, iap.Price, "Price");

            if (newPrice != iap.Price)
            {
                iap.Price             = newPrice;
                _settings.IAPs[index] = iap;

                EditorUtility.SetDirty(_settings);
            }

            Rect   descriptionRect = new Rect(rect.x + idRect.width + 60f + typeRect.width + priceRect.width, rect.y + itemInputYOffset, rect.width * 0.2f - 15f, EditorGUIUtility.singleLineHeight);
            string newDescription  = EditorUtils.TextFieldWithPlaceholder(descriptionRect, iap.Description, "Description");

            if (newDescription != iap.Description)
            {
                iap.Description       = newDescription;
                _settings.IAPs[index] = iap;

                EditorUtility.SetDirty(_settings);
            }

            Rect   imageURIRect = new Rect(rect.x + idRect.width + 75f + typeRect.width + priceRect.width + descriptionRect.width, rect.y + itemInputYOffset, rect.width * 0.2f - 30f, EditorGUIUtility.singleLineHeight);
            string newImageURI  = EditorUtils.TextFieldWithPlaceholder(imageURIRect, iap.ImageURI, "Image URI");

            if (newImageURI != iap.ImageURI)
            {
                iap.ImageURI          = newImageURI;
                _settings.IAPs[index] = iap;

                EditorUtility.SetDirty(_settings);
            }
        }