Add LocalizationSettings

This commit is contained in:
Wojtek Figat
2021-04-16 15:46:42 +02:00
parent 7448383079
commit 0fb02a5aff
8 changed files with 70 additions and 0 deletions

View File

@@ -53,6 +53,11 @@ namespace FlaxEditor.Content.Create
/// </summary>
NavigationSettings,
/// <summary>
/// The localization settings.
/// </summary>
LocalizationSettings,
/// <summary>
/// The build settings.
/// </summary>
@@ -108,6 +113,7 @@ namespace FlaxEditor.Content.Create
typeof(PhysicsSettings),
typeof(GraphicsSettings),
typeof(NavigationSettings),
typeof(LocalizationSettings),
typeof(BuildSettings),
typeof(InputSettings),
typeof(WindowsPlatformSettings),

View File

@@ -934,6 +934,7 @@ namespace FlaxEditor.Modules
Proxy.Add(new SettingsProxy(typeof(PhysicsSettings)));
Proxy.Add(new SettingsProxy(typeof(GraphicsSettings)));
Proxy.Add(new SettingsProxy(typeof(NavigationSettings)));
Proxy.Add(new SettingsProxy(typeof(LocalizationSettings)));
Proxy.Add(new SettingsProxy(typeof(BuildSettings)));
Proxy.Add(new SettingsProxy(typeof(InputSettings)));
Proxy.Add(new SettingsProxy(typeof(WindowsPlatformSettings)));

View File

@@ -309,6 +309,7 @@ namespace FlaxEditor.Modules
{ "FlaxEditor.Content.Settings.InputSettings", "Settings" },
{ "FlaxEditor.Content.Settings.LayersAndTagsSettings", "Settings" },
{ "FlaxEditor.Content.Settings.NavigationSettings", "Settings" },
{ "FlaxEditor.Content.Settings.LocalizationSettings", "Settings" },
{ "FlaxEditor.Content.Settings.PhysicsSettings", "Settings" },
{ "FlaxEditor.Content.Settings.TimeSettings", "Settings" },
{ "FlaxEditor.Content.Settings.UWPPlatformSettings", "Settings" },

View File

@@ -13,6 +13,7 @@
#include "Engine/Input/InputSettings.h"
#include "Engine/Audio/AudioSettings.h"
#include "Engine/Navigation/NavigationSettings.h"
#include "Engine/Localization/LocalizationSettings.h"
#include "Engine/Content/Content.h"
#include "Engine/Content/JsonAsset.h"
#include "Engine/Content/AssetReference.h"
@@ -127,6 +128,7 @@ bool GameSettings::Load()
PRELOAD_SETTINGS(Input);
PRELOAD_SETTINGS(Graphics);
PRELOAD_SETTINGS(Navigation);
PRELOAD_SETTINGS(Localization);
PRELOAD_SETTINGS(GameCooking);
#undef PRELOAD_SETTINGS
@@ -158,6 +160,7 @@ void GameSettings::Apply()
APPLY_SETTINGS(InputSettings);
APPLY_SETTINGS(GraphicsSettings);
APPLY_SETTINGS(NavigationSettings);
APPLY_SETTINGS(LocalizationSettings);
APPLY_SETTINGS(BuildSettings);
APPLY_SETTINGS(PlatformSettings);
#undef APPLY_SETTINGS
@@ -197,6 +200,7 @@ void GameSettings::Deserialize(DeserializeStream& stream, ISerializeModifier* mo
DESERIALIZE(Input);
DESERIALIZE(Graphics);
DESERIALIZE(Navigation);
DESERIALIZE(Localization);
DESERIALIZE(GameCooking);
// Per-platform settings containers

View File

@@ -79,6 +79,12 @@ namespace FlaxEditor.Content.Settings
[EditorOrder(1045), EditorDisplay("Other Settings"), AssetReference(typeof(NavigationSettings), true), Tooltip("Reference to Navigation Settings asset")]
public JsonAsset Navigation;
/// <summary>
/// Reference to <see cref="LocalizationSettings"/> asset.
/// </summary>
[EditorOrder(1046), EditorDisplay("Other Settings"), AssetReference(typeof(LocalizationSettings), true), Tooltip("Reference to Localization Settings asset")]
public JsonAsset Localization;
/// <summary>
/// Reference to <see cref="BuildSettings"/> asset.
/// </summary>
@@ -219,6 +225,8 @@ namespace FlaxEditor.Content.Settings
return LoadAsset<GraphicsSettings>(gameSettings.Graphics) as T;
if (type == typeof(NavigationSettings))
return LoadAsset<NavigationSettings>(gameSettings.Navigation) as T;
if (type == typeof(LocalizationSettings))
return LoadAsset<LocalizationSettings>(gameSettings.Localization) as T;
if (type == typeof(BuildSettings))
return LoadAsset<BuildSettings>(gameSettings.GameCooking) as T;
if (type == typeof(InputSettings))
@@ -321,6 +329,8 @@ namespace FlaxEditor.Content.Settings
return SaveAsset(gameSettings, ref gameSettings.Graphics, obj);
if (type == typeof(NavigationSettings))
return SaveAsset(gameSettings, ref gameSettings.Navigation, obj);
if (type == typeof(LocalizationSettings))
return SaveAsset(gameSettings, ref gameSettings.Localization, obj);
if (type == typeof(BuildSettings))
return SaveAsset(gameSettings, ref gameSettings.GameCooking, obj);
if (type == typeof(InputSettings))

View File

@@ -68,6 +68,7 @@ public:
Guid Input;
Guid Graphics;
Guid Navigation;
Guid Localization;
Guid GameCooking;
// Per-platform settings containers

View File

@@ -2,8 +2,12 @@
#include "Localization.h"
#include "CultureInfo.h"
#include "LocalizationSettings.h"
#include "Engine/Core/Log.h"
#include "Engine/Core/Config/GameSettings.h"
#include "Engine/Engine/EngineService.h"
#include "Engine/Content/Content.h"
#include "Engine/Serialization/Serialization.h"
class LocalizationService : public EngineService
{
@@ -21,6 +25,18 @@ namespace
CultureInfo CurrentCulture(0);
CultureInfo CurrentLanguage(0);
LocalizationService LocalizationServiceInstance;
IMPLEMENT_SETTINGS_GETTER(LocalizationSettings, Localization);
void LocalizationSettings::Apply()
{
}
void LocalizationSettings::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier)
{
DESERIALIZE(LocalizedStringTables);
}
}
bool LocalizationService::Init()

View File

@@ -0,0 +1,31 @@
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
#pragma once
#include "Engine/Core/Config/Settings.h"
#include "Engine/Content/AssetReference.h"
#include "LocalizedStringTable.h"
/// <summary>
/// Game localization and internalization settings container.
/// </summary>
API_CLASS(sealed, Namespace="FlaxEditor.Content.Settings") class FLAXENGINE_API LocalizationSettings : public SettingsBase
{
DECLARE_SCRIPTING_TYPE_MINIMAL(LocalizationSettings);
public:
/// <summary>
/// The list of the string localization tables used by the game.
/// </summary>
API_FIELD()
Array<AssetReference<LocalizedStringTable>> LocalizedStringTables;
public:
/// <summary>
/// Gets the instance of the settings asset (default value if missing). Object returned by this method is always loaded with valid data to use.
/// </summary>
static LocalizationSettings* Get();
// [SettingsBase]
void Apply() override;
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) final override;
};