Playvoi/Assets/ShiroginSDK/Editor/IAP/IAPProductDropdownDrawer.cs

39 lines
No EOL
1.4 KiB
C#

#if UNITY_EDITOR
using System;
using ShiroginSDK.Runtime.Core.Editor.Attributes;
using ShiroginSDK.Runtime.Core.SDK;
using ShiroginSDK.Runtime.Shared.Constants;
using UnityEditor;
using UnityEngine;
namespace ShiroginSDK.Editor.IAP
{
[CustomPropertyDrawer(typeof(IAPProductDropdownAttribute))]
public class IAPProductDropdownDrawer : PropertyDrawer
{
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
if (property.propertyType != SerializedPropertyType.String)
{
EditorGUI.LabelField(position, label.text, "Use with string only.");
return;
}
var config = Resources.Load<ShiroginConfig>(SDKConstants.ConfigResourcePath);
if (config == null || config.storeRepository == null)
{
EditorGUI.PropertyField(position, property, label);
return;
}
var items = config.storeRepository.GetAll();
var options = new string[items.Count];
for (var i = 0; i < items.Count; i++) options[i] = items[i] != null ? items[i].productId : "<null>";
var index = Mathf.Max(0, Array.IndexOf(options, property.stringValue));
index = EditorGUI.Popup(position, label.text, index, options);
if (index >= 0 && index < options.Length) property.stringValue = options[index];
}
}
}
#endif