Firstborn/Library/PackageCache/com.unity.ads@3.7.5/Editor/DevX/Settings/AdsSettingsProvider.cs

156 lines
4.4 KiB
C#
Raw Normal View History

2023-03-28 13:24:16 -04:00
#if SERVICES_SDK_CORE_ENABLED
using System.Collections.Generic;
using Unity.Services.Core.Editor;
using UnityEditor;
using UnityEngine.UIElements;
namespace UnityEngine.Advertisements.Editor
{
class AdsSettingsProvider : EditorGameServiceSettingsProvider
{
VisualElement m_Root;
GettingStartedUi m_GettingStartedUi;
TestModeUi m_TestModeUi;
GameIdsUi m_GameIdsUi;
VisualElement m_SupportedPlatformsUi;
bool m_HasLoggedAssetStorePackageInstalled;
public AdsSettingsProvider(SettingsScope scopes, IEnumerable<string> keywords = null)
: base(GetSettingsPath(), scopes, keywords) {}
[SettingsProvider]
public static SettingsProvider CreateSettingsProvider()
{
#if ENABLE_EDITOR_GAME_SERVICES
return new AdsSettingsProvider(SettingsScope.Project);
#else
return null;
#endif
}
internal static string GetSettingsPath()
{
return GenerateProjectSettingsPath(new AdsServiceIdentifier().GetKey());
}
AdsService m_Service = (AdsService)EditorGameServiceRegistry.Instance.GetEditorGameService<AdsServiceIdentifier>();
protected override IEditorGameService EditorGameService => m_Service;
protected override string Title => UiConstants.LocalizedStrings.Ads;
protected override string Description => UiConstants.LocalizedStrings.Description;
protected override VisualElement GenerateServiceDetailUI()
{
m_Root = new VisualElement();
m_GettingStartedUi = new GettingStartedUi();
m_TestModeUi = new TestModeUi();
m_GameIdsUi = new GameIdsUi();
m_SupportedPlatformsUi = PlatformSupportUiHelper.GeneratePlatformSupport(UiConstants.SupportedPlatforms);
SetUpStyles();
RefreshDetailUI();
return m_Root;
}
void SetUpStyles()
{
m_Root.AddToClassList(UiConstants.ClassNames.Ads);
var styleSheet = AssetDatabase.LoadAssetAtPath<StyleSheet>(UiConstants.StyleSheetPaths.Common);
if (!(styleSheet is null))
{
m_Root.styleSheets.Add(styleSheet);
}
}
void RefreshDetailUI()
{
if (m_Root is null)
{
return;
}
m_Root.Clear();
m_Root.Add(m_GettingStartedUi);
if (m_Service.Enabler.IsEnabled())
{
m_Root.Add(m_TestModeUi);
m_Root.Add(m_GameIdsUi);
LogOnceAssetStorePackageInstalled();
}
m_Root.Add(m_SupportedPlatformsUi);
TranslateAllLabelsIn(m_Root);
}
void LogOnceAssetStorePackageInstalled()
{
if (m_HasLoggedAssetStorePackageInstalled
|| !PluginUtils.AreAssetStorePluginsInstalled())
{
return;
}
Debug.LogWarning(UiConstants.LocalizedStrings.AssetStorePackageInstalledMessage);
m_HasLoggedAssetStorePackageInstalled = true;
}
static void TranslateAllLabelsIn(VisualElement root)
{
root.Query<TextElement>()
.ForEach(TranslateLabel);
string TranslateLabel(TextElement label)
{
label.text = L10n.Tr(label.text);
return label.text;
}
}
public override void OnActivate(string searchContext, VisualElement rootElement)
{
base.OnActivate(searchContext, rootElement);
m_Service.GameIdsUpdated += OnGameIdsUpdated;
var serviceEnabler = (AdsServiceEnabler)m_Service.Enabler;
serviceEnabler.ServiceEnabled += RefreshDetailUI;
serviceEnabler.ServiceDisabled += RefreshDetailUI;
}
public override void OnDeactivate()
{
base.OnDeactivate();
m_Service.GameIdsUpdated -= OnGameIdsUpdated;
var serviceEnabler = (AdsServiceEnabler)m_Service.Enabler;
serviceEnabler.ServiceEnabled -= RefreshDetailUI;
serviceEnabler.ServiceDisabled -= RefreshDetailUI;
}
void OnGameIdsUpdated()
{
if (m_GameIdsUi is null)
{
return;
}
m_GameIdsUi.RefreshGameIds();
Repaint();
}
}
}
#endif