Refactor game settings to support using API bindings

This commit is contained in:
Wojtek Figat
2020-12-21 14:53:27 +01:00
parent aa7711dc31
commit cea1a67749
17 changed files with 49 additions and 45 deletions

6
.gitmodules vendored
View File

@@ -0,0 +1,6 @@
[submodule "Source/Platforms/PS4"]
path = Source/Platforms/PS4
url = https://gitlab.flaxengine.com/flax/flaxengine-ps4.git
[submodule "Source/Platforms/XboxScarlett"]
path = Source/Platforms/XboxScarlett
url = https://gitlab.flaxengine.com/flax/flaxengine-xboxscarlett.git

View File

@@ -8,8 +8,8 @@
/// <summary>
/// Audio settings container.
/// </summary>
/// <seealso cref="Settings{AudioSettings}" />
class AudioSettings : public Settings<AudioSettings>
/// <seealso cref="SettingsBase{AudioSettings}" />
class AudioSettings : public SettingsBase<AudioSettings>
{
public:
@@ -30,7 +30,7 @@ public:
public:
// [Settings]
// [SettingsBase]
void RestoreDefault() final override
{
DisableAudio = false;

View File

@@ -10,8 +10,7 @@
/// <summary>
/// The game building rendering settings.
/// </summary>
/// <seealso cref="Settings{BuildSettings}" />
class BuildSettings : public Settings<BuildSettings>
class BuildSettings : public SettingsBase<BuildSettings>
{
public:
@@ -62,7 +61,7 @@ public:
public:
// [Settings]
// [SettingsBase]
void RestoreDefault() final override
{
MaxAssetsPerPackage = 1024;

View File

@@ -28,7 +28,7 @@ bool GameSettings::NoSplashScreen = false;
Guid GameSettings::SplashScreen;
Dictionary<String, Guid> GameSettings::CustomSettings;
Array<SettingsBase*> SettingsBase::Containers(32);
Array<Settings*> Settings::Containers(32);
#if USE_EDITOR
extern void LoadPlatformSettingsEditor(ISerializable::DeserializeStream& data);

View File

@@ -9,8 +9,7 @@
/// <summary>
/// Graphics rendering settings.
/// </summary>
/// <seealso cref="Settings{GraphicsSettings}" />
class GraphicsSettings : public Settings<GraphicsSettings>
class GraphicsSettings : public SettingsBase<GraphicsSettings>
{
public:
@@ -56,7 +55,7 @@ public:
public:
// [Settings]
// [SettingsBase]
void Apply() override;
void RestoreDefault() final override

View File

@@ -7,8 +7,7 @@
/// <summary>
/// Layers and objects tags settings.
/// </summary>
/// <seealso cref="Settings{LayersAndTagsSettings}" />
class LayersAndTagsSettings : public Settings<LayersAndTagsSettings>
class LayersAndTagsSettings : public SettingsBase<LayersAndTagsSettings>
{
public:
@@ -54,7 +53,7 @@ public:
public:
// [Settings]
// [SettingsBase]
void RestoreDefault() override
{
Tags.Clear();

View File

@@ -7,16 +7,16 @@
#include "Engine/Serialization/ISerializable.h"
/// <summary>
/// Base class for all global settings containers for the engine. Helps to apply, store and expose properties to c#.
/// Base class for all global settings containers for the engine. Helps to apply, store and expose properties to engine/game.
/// </summary>
class SettingsBase
class FLAXENGINE_API Settings
{
public:
/// <summary>
/// The settings containers.
/// </summary>
static Array<SettingsBase*> Containers;
static Array<Settings*> Containers;
/// <summary>
/// Restores the default settings for all the registered containers.
@@ -30,19 +30,19 @@ public:
private:
// Disable copy/move
SettingsBase(const SettingsBase&) = delete;
SettingsBase& operator=(const SettingsBase&) = delete;
Settings(const Settings&) = delete;
Settings& operator=(const Settings&) = delete;
protected:
SettingsBase()
Settings()
{
Containers.Add(this);
}
public:
virtual ~SettingsBase() = default;
virtual ~Settings() = default;
public:
@@ -69,14 +69,14 @@ public:
};
/// <summary>
/// Base class for all global settings containers for the engine. Helps to apply, store and expose properties to c#.
/// Base class for all global settings containers for the engine. Helps to apply, store and expose properties to engine/game.
/// </summary>
template<class T>
class Settings : public SettingsBase, public Singleton<T>
class SettingsBase : public Settings, public Singleton<T>
{
protected:
Settings()
SettingsBase()
{
}
};

View File

@@ -8,8 +8,7 @@
/// <summary>
/// Time and game simulation settings container.
/// </summary>
/// <seealso cref="Settings{TimeSettings}" />
class TimeSettings : public Settings<TimeSettings>
class TimeSettings : public SettingsBase<TimeSettings>
{
public:
@@ -40,7 +39,7 @@ public:
public:
// [Settings]
// [SettingsBase]
void Apply() override;
void RestoreDefault() override

View File

@@ -10,8 +10,8 @@
/// <summary>
/// Input settings container.
/// </summary>
/// <seealso cref="Settings{InputSettings}" />
class InputSettings : public Settings<InputSettings>
/// <seealso cref="SettingsBase{InputSettings}" />
class InputSettings : public SettingsBase<InputSettings>
{
public:
@@ -27,7 +27,7 @@ public:
public:
// [Settings]
// [SettingsBase]
void Apply() override
{
Input::ActionMappings = ActionMappings;

View File

@@ -82,7 +82,7 @@ public:
public:
// [Settings]
// [SettingsBase]
void RestoreDefault() final override
{
CellHeight = 10.0f;

View File

@@ -25,8 +25,8 @@
/// <summary>
/// Physics simulation settings container.
/// </summary>
/// <seealso cref="Settings{PhysicsSettings}" />
class PhysicsSettings : public Settings<PhysicsSettings>
/// <seealso cref="SettingsBase{PhysicsSettings}" />
class PhysicsSettings : public SettingsBase<PhysicsSettings>
{
public:
@@ -115,7 +115,7 @@ public:
public:
// [Settings]
// [SettingsBase]
void Apply() override;
void RestoreDefault() override;
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) final override;

View File

@@ -9,8 +9,8 @@
/// <summary>
/// Android platform settings.
/// </summary>
/// <seealso cref="Settings{AndroidPlatformSettings}" />
class AndroidPlatformSettings : public Settings<AndroidPlatformSettings>
/// <seealso cref="SettingsBase{AndroidPlatformSettings}" />
class AndroidPlatformSettings : public SettingsBase<AndroidPlatformSettings>
{
public:
@@ -36,7 +36,7 @@ public:
RestoreDefault();
}
// [Settings]
// [SettingsBase]
void RestoreDefault() final override
{
PackageName = TEXT("com.${COMPANY_NAME}.${PROJECT_NAME}");

View File

@@ -9,8 +9,8 @@
/// <summary>
/// Linux platform settings.
/// </summary>
/// <seealso cref="Settings{LinuxPlatformSettings}" />
class LinuxPlatformSettings : public Settings<LinuxPlatformSettings>
/// <seealso cref="SettingsBase{LinuxPlatformSettings}" />
class LinuxPlatformSettings : public SettingsBase<LinuxPlatformSettings>
{
public:
@@ -56,7 +56,7 @@ public:
public:
// [Settings]
// [SettingsBase]
void RestoreDefault() final override
{
WindowMode = GameWindowMode::Windowed;

View File

@@ -9,8 +9,8 @@
/// <summary>
/// Universal Windows Platform settings.
/// </summary>
/// <seealso cref="Settings{UWPPlatformSettings}" />
class UWPPlatformSettings : public Settings<UWPPlatformSettings>
/// <seealso cref="SettingsBase{UWPPlatformSettings}" />
class UWPPlatformSettings : public SettingsBase<UWPPlatformSettings>
{
public:
@@ -95,7 +95,7 @@ public:
public:
// [Settings]
// [SettingsBase]
void RestoreDefault() final override
{
PreferredLaunchWindowingMode = WindowMode::FullScreen;

View File

@@ -9,8 +9,8 @@
/// <summary>
/// Windows platform settings.
/// </summary>
/// <seealso cref="Settings{WindowsPlatformSettings}" />
class WindowsPlatformSettings : public Settings<WindowsPlatformSettings>
/// <seealso cref="SettingsBase{WindowsPlatformSettings}" />
class WindowsPlatformSettings : public SettingsBase<WindowsPlatformSettings>
{
public:
@@ -71,7 +71,7 @@ public:
public:
// [Settings]
// [SettingsBase]
void RestoreDefault() final override
{
WindowMode = GameWindowMode::Windowed;

1
Source/Platforms/PS4 Submodule

Submodule Source/Platforms/PS4 added at b9e29ede69