// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. #pragma once #include "Settings.h" #include "Engine/Core/Types/Guid.h" #include "Engine/Core/Types/String.h" #include "Engine/Core/Collections/Dictionary.h" /// /// The main game engine configuration service. Loads and applies game configuration. /// API_CLASS(sealed, Namespace="FlaxEditor.Content.Settings") class FLAXENGINE_API GameSettings : public SettingsBase { DECLARE_SCRIPTING_TYPE_MINIMAL(GameSettings); public: /// /// The product full name. /// API_FIELD(Attributes="EditorOrder(0), EditorDisplay(\"General\")") String ProductName; /// /// The company full name. /// API_FIELD(Attributes="EditorOrder(10), EditorDisplay(\"General\")") String CompanyName; /// /// The copyright note used for content signing (eg. source code header). /// API_FIELD(Attributes="EditorOrder(15), EditorDisplay(\"General\")") String CopyrightNotice; /// /// The default application icon. /// Guid Icon = Guid::Empty; /// /// Reference to the first scene to load on a game startup. /// Guid FirstScene = Guid::Empty; /// /// True if skip showing splash screen image on the game startup. /// bool NoSplashScreen = false; /// /// Reference to the splash screen image to show on a game startup. /// Guid SplashScreen = Guid::Empty; /// /// The custom settings to use with a game. Can be specified by the user to define game-specific options and be used by the external plugins (used as key-value pair). /// Dictionary CustomSettings; public: // Settings containers Guid Time; Guid Audio; Guid LayersAndTags; Guid Physics; Guid Input; Guid Graphics; Guid Network; Guid Navigation; Guid Localization; Guid GameCooking; Guid Streaming; // Per-platform settings containers Guid WindowsPlatform; Guid UWPPlatform; Guid LinuxPlatform; Guid PS4Platform; Guid XboxOnePlatform; Guid XboxScarlettPlatform; Guid AndroidPlatform; Guid SwitchPlatform; Guid PS5Platform; Guid MacPlatform; Guid iOSPlatform; public: /// /// Gets the instance of the game settings asset (null if missing). Object returned by this method is always loaded with valid data to use. /// static GameSettings* Get(); /// /// Loads the game settings (including other settings such as Physics, Input, etc.). /// /// True if failed, otherwise false. static bool Load(); // [SettingsBase] void Apply() override; void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) final override; };