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"); } } }
/// <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); } }