161 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			161 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | // | ||
|  | //  AppLovinSettings.cs | ||
|  | //  AppLovin MAX Unity Plugin | ||
|  | // | ||
|  | //  Created by Santosh Bagadi on 1/27/20. | ||
|  | //  Copyright © 2019 AppLovin. All rights reserved. | ||
|  | // | ||
|  | 
 | ||
|  | using AppLovinMax.Scripts.IntegrationManager.Editor; | ||
|  | using System.IO; | ||
|  | using UnityEditor; | ||
|  | using UnityEngine; | ||
|  | using UnityEngine.Serialization; | ||
|  | 
 | ||
|  | /// <summary> | ||
|  | /// A <see cref="ScriptableObject"/> representing the AppLovin Settings that can be set in the Integration Manager Window. | ||
|  | /// | ||
|  | /// The scriptable object asset is created with the name <c>AppLovinSettings.asset</c> and is placed under the directory <c>Assets/MaxSdk/Resources</c>. | ||
|  | /// | ||
|  | /// NOTE: Not name spacing this class since it is reflected upon by the Google adapter and will break compatibility. | ||
|  | /// </summary> | ||
|  | public class AppLovinSettings : ScriptableObject | ||
|  | { | ||
|  |     private const string SettingsExportPath = "MaxSdk/Resources/AppLovinSettings.asset"; | ||
|  | 
 | ||
|  |     private static AppLovinSettings _instance; | ||
|  | 
 | ||
|  |     [SerializeField] private bool qualityServiceEnabled = true; | ||
|  |     [SerializeField] private string sdkKey; | ||
|  | 
 | ||
|  |     [SerializeField] private string customGradleVersionUrl; | ||
|  |     [SerializeField] private string customGradleToolsVersion; | ||
|  | 
 | ||
|  |     [SerializeField] private string adMobAndroidAppId = string.Empty; | ||
|  |     [SerializeField] private string adMobIosAppId = string.Empty; | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// An instance of AppLovin Setting. | ||
|  |     /// </summary> | ||
|  |     public static AppLovinSettings Instance | ||
|  |     { | ||
|  |         get | ||
|  |         { | ||
|  |             if (_instance == null) | ||
|  |             { | ||
|  |                 // Check for an existing AppLovinSettings somewhere in the project | ||
|  |                 var guids = AssetDatabase.FindAssets("AppLovinSettings t:ScriptableObject"); | ||
|  |                 if (guids.Length > 1) | ||
|  |                 { | ||
|  |                     MaxSdkLogger.UserWarning("Multiple AppLovinSettings found. This may cause unexpected results."); | ||
|  |                 } | ||
|  | 
 | ||
|  |                 if (guids.Length != 0) | ||
|  |                 { | ||
|  |                     var path = AssetDatabase.GUIDToAssetPath(guids[0]); | ||
|  |                     _instance = AssetDatabase.LoadAssetAtPath<AppLovinSettings>(path); | ||
|  |                     return _instance; | ||
|  |                 } | ||
|  | 
 | ||
|  |                 // If there is no existing AppLovinSettings asset, create one in the default location | ||
|  |                 string settingsFilePath; | ||
|  |                 // The settings file should be under the Assets/ folder so that it can be version controlled and cannot be overriden when updating. | ||
|  |                 // If the plugin is outside the Assets folder, create the settings asset at the default location. | ||
|  |                 if (AppLovinIntegrationManager.IsPluginInPackageManager) | ||
|  |                 { | ||
|  |                     // Note: Can't use absolute path when calling `CreateAsset`. Should use relative path to Assets/ directory. | ||
|  |                     settingsFilePath = Path.Combine("Assets", SettingsExportPath); | ||
|  | 
 | ||
|  |                     var maxSdkDir = Path.Combine(Application.dataPath, "MaxSdk"); | ||
|  |                     if (!Directory.Exists(maxSdkDir)) | ||
|  |                     { | ||
|  |                         Directory.CreateDirectory(maxSdkDir); | ||
|  |                     } | ||
|  |                 } | ||
|  |                 else | ||
|  |                 { | ||
|  |                     settingsFilePath = Path.Combine(AppLovinIntegrationManager.PluginParentDirectory, SettingsExportPath); | ||
|  |                 } | ||
|  | 
 | ||
|  |                 var settingsDir = Path.GetDirectoryName(settingsFilePath); | ||
|  |                 if (!Directory.Exists(settingsDir)) | ||
|  |                 { | ||
|  |                     Directory.CreateDirectory(settingsDir); | ||
|  |                 } | ||
|  | 
 | ||
|  |                 // On script reload AssetDatabase.FindAssets() can fail and will overwrite AppLovinSettings without this check | ||
|  |                 if (!File.Exists(settingsFilePath)) | ||
|  |                 { | ||
|  |                     _instance = CreateInstance<AppLovinSettings>(); | ||
|  |                     AssetDatabase.CreateAsset(_instance, settingsFilePath); | ||
|  |                     MaxSdkLogger.D("Creating new AppLovinSettings asset at path: " + settingsFilePath); | ||
|  |                 } | ||
|  |             } | ||
|  | 
 | ||
|  |             return _instance; | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// Whether or not to install Quality Service plugin. | ||
|  |     /// </summary> | ||
|  |     public bool QualityServiceEnabled | ||
|  |     { | ||
|  |         get { return Instance.qualityServiceEnabled; } | ||
|  |         set { Instance.qualityServiceEnabled = value; } | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// AppLovin SDK Key. | ||
|  |     /// </summary> | ||
|  |     public string SdkKey | ||
|  |     { | ||
|  |         get { return Instance.sdkKey; } | ||
|  |         set { Instance.sdkKey = value; } | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// A URL to set the distributionUrl in the gradle-wrapper.properties file (ex: https\://services.gradle.org/distributions/gradle-6.9.3-bin.zip) | ||
|  |     /// </summary> | ||
|  |     public string CustomGradleVersionUrl | ||
|  |     { | ||
|  |         get { return Instance.customGradleVersionUrl;  } | ||
|  |         set { Instance.customGradleVersionUrl = value; } | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// A string to set the custom gradle tools version (ex: com.android.tools.build:gradle:4.2.0) | ||
|  |     /// </summary> | ||
|  |     public string CustomGradleToolsVersion | ||
|  |     { | ||
|  |         get { return Instance.customGradleToolsVersion;  } | ||
|  |         set { Instance.customGradleToolsVersion = value; } | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// AdMob Android App ID. | ||
|  |     /// </summary> | ||
|  |     public string AdMobAndroidAppId | ||
|  |     { | ||
|  |         get { return Instance.adMobAndroidAppId; } | ||
|  |         set { Instance.adMobAndroidAppId = value; } | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// AdMob iOS App ID. | ||
|  |     /// </summary> | ||
|  |     public string AdMobIosAppId | ||
|  |     { | ||
|  |         get { return Instance.adMobIosAppId; } | ||
|  |         set { Instance.adMobIosAppId = value; } | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// Saves the instance of the settings. | ||
|  |     /// </summary> | ||
|  |     public void SaveAsync() | ||
|  |     { | ||
|  |         EditorUtility.SetDirty(_instance); | ||
|  |     } | ||
|  | } |