b486678290
Library -Artifacts
156 lines
4.4 KiB
C#
156 lines
4.4 KiB
C#
#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
|