using System; using ShiroginSDK.Runtime.Core.Editor.Attributes; using ShiroginSDK.Runtime.Core.Editor.Models; using ShiroginSDK.Runtime.Modules.Data.Scripts.Icons; using ShiroginSDK.Runtime.Modules.IAP.Scripts.SO; using ShiroginSDK.Runtime.Modules.RemoteConfig.Scripts.SO; using ShiroginSDK.Runtime.Modules.UI.Popup.Scripts.SO; using ShiroginSDK.Runtime.Modules.UI.Theme.Scripts.SO; using ShiroginSDK.Runtime.Shared.Constants; using UnityEngine; namespace ShiroginSDK.Runtime.Core.SDK { [CreateAssetMenu(fileName = "ShiroginConfig", menuName = "ShiroginSDK/ShiroginConfig", order = 0)] public class ShiroginConfig : ScriptableObject { private static ShiroginConfig _instance; // --- SDK Settings --- [Header("SDK Settings")] [Tooltip("Enable or disable ShiroginSDK Analytics globally. (SHIROGIN_SDK)")] public bool enableSdk = false; [Tooltip("Enable or disable Unity IAP globally. (SHIROGIN_IAP)")] public bool enableIAP = false; [Tooltip("Enable or disable Ad Service globally. (SHIROGIN_AD_SERVICE)")] public bool enableAdService = false; [Tooltip("Enable or disable Analytics globally. (SHIROGIN_ANALYTICS)")] public bool enableAnalytics = false; [Tooltip("Enable or disable Firebase Analytics globally. (SHIROGIN_FIREBASE_ANALYTICS)")] public bool enableFirebaseAnalytics = false; [Tooltip("Enable or disable AppsFlyer Analytics globally. (SHIROGIN_APPSFLYER)")] public bool enableAppsFlyerAnalytics = false; [Tooltip("Enable or disable Facebook Analytics globally. (SHIROGIN_FACEBOOK)")] public bool enableFacebook = false; [Tooltip("Enable or disable Firebase RemoteConfig globally. (SHIROGIN_FIREBASE_REMOTE_CONFIG)")] public bool enableFirebaseRemoteConfig = false; // --- Bitbucket & General --- [Header("Bitbucket Settings")] public string bitbucketAccessToken; [Header("AppLovin Settings")] public string applovinSdkKey; [SubHeader("Android Ad Units")] public string rewardedAdUnitIdDrd; public string interstitialAdUnitIdDrd; public string bannerAdUnitIdDrd; [SubHeader("iOS Ad Units")] public string rewardedAdUnitIdIos; public string interstitialAdUnitIdIos; public string bannerAdUnitIdIos; // --- AppsFlyer --- [Header("AppsFlyer Settings")] public string appsFlyerDevKey; [Tooltip("This is Apple app id (Only numbers)")] public string appsFlyerAppId; // --- Repositories --- [Header("Repositories")] [Tooltip("All IAP and store products managed from here.")] public StoreRepository storeRepository; [Tooltip("All Theme information managed from here")] public ThemeRepository themeRepository; [Tooltip("All Popup information managed from here")] public PopupRepository popupRepository; // --- Remote Config --- [Header("Remote Config")] [Tooltip("Select which Firebase Remote Config group this game should use (e.g., DizzyHero, MoneyRoller, etc.)")] public string selectedRemoteGroup = "DefaultGroup"; [Tooltip("Link to the RemoteConfigDefinition asset for editor preview/export")] public RemoteConfigDefinition remoteConfigDefinition; // --- UI & Developer --- [Header("UI / Visual Settings")] [Tooltip("Icon set for all in-game currencies (Gems, Gold, etc.)")] public CurrencyIconLibrary currencyIconLibrary; [Header("Developer Settings")] [SubHeader("AppLovin Settings")] [Tooltip("AppLovin Test Devices (AID-IDFA) list for testing")] public TestDevice[] applovinTestDevices; /// /// Loads the SDK configuration from Resources folder. /// public static ShiroginConfig Load() { if (_instance != null) return _instance; _instance = Resources.Load(SDKConstants.ConfigResourcePath); if (_instance == null) { #if UNITY_EDITOR Debug.LogError("[ShiroginSDK] ❌ SDKConfig asset not found! " + "Please create 'ShiroginConfig.asset' inside a Resources folder.\n" + "Path: Assets/ShiroginSDK/Resources/ShiroginConfig.asset"); #endif } return _instance; } } }