// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
#pragma once
#if PLATFORM_IOS || USE_EDITOR
#include "../Apple/ApplePlatformSettings.h"
///
/// iOS platform settings.
///
API_CLASS(Sealed, Namespace="FlaxEditor.Content.Settings") class FLAXENGINE_API iOSPlatformSettings : public ApplePlatformSettings
{
DECLARE_SCRIPTING_TYPE_MINIMAL(ApplePlatformSettings);
///
/// The app export destination methods.
///
API_ENUM() enum class ExportMethods
{
// Distribute using TestFlight or through the App Store.
AppStore,
// Distribute to a limited number of devices you register in App Store Connect.
Development,
// Distribute to a limited number of devices you register in App Store Connect.
AdHoc,
// Distribute to members of your organization if you’re a part of the Apple Developer Enterprise Program and are ready to release your app to users in your organization.
Enterprise,
};
///
/// The display orientation modes. Can be combined as flags.
///
API_ENUM(Attributes="Flags") enum class UIInterfaceOrientations
{
// The device is in portrait mode, with the device upright and the Home button on the bottom.
Portrait = 1,
// The device is in portrait mode but is upside down, with the device upright and the Home button at the top.
PortraitUpsideDown = 2,
// The device is in landscape mode, with the device upright and the Home button on the left.
LandscapeLeft = 4,
// The device is in landscape mode, with the device upright and the Home button on the right.
LandscapeRight = 8,
// The all modes.
All = Portrait | PortraitUpsideDown | LandscapeLeft | LandscapeRight
};
///
/// The app developer name - App Store Team ID. For example: 'VG6K6HT8B'.
///
API_FIELD(Attributes="EditorOrder(10), EditorDisplay(\"General\")")
String AppTeamId;
///
/// The app version number (matches CURRENT_PROJECT_VERSION in XCode).
///
API_FIELD(Attributes="EditorOrder(20), EditorDisplay(\"General\")")
String AppVersion = TEXT("1");
///
/// The app export mode (if automatic packaging is not disabled via Build Settings, otherwise export app manually via XCode project).
///
API_FIELD(Attributes="EditorOrder(50), EditorDisplay(\"General\")")
ExportMethods ExportMethod = ExportMethods::Development;
///
/// The UI interface orientation modes supported on iPhone devices.
///
API_FIELD(Attributes="EditorOrder(200), EditorDisplay(\"UI\", \"Supported Interface Orientations (iPhone)\")")
UIInterfaceOrientations SupportedInterfaceOrientationsiPhone = UIInterfaceOrientations::All;
///
/// The UI interface orientation modes supported on iPad devices.
///
API_FIELD(Attributes="EditorOrder(210), EditorDisplay(\"UI\", \"Supported Interface Orientations (iPad)\")")
UIInterfaceOrientations SupportedInterfaceOrientationsiPad = UIInterfaceOrientations::All;
///
/// Gets the instance of the settings asset (default value if missing). Object returned by this method is always loaded with valid data to use.
///
static iOSPlatformSettings* Get();
// [SettingsBase]
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) final override
{
ApplePlatformSettings::Deserialize(stream, modifier);
DESERIALIZE(AppTeamId);
DESERIALIZE(AppVersion);
DESERIALIZE(ExportMethod);
DESERIALIZE(SupportedInterfaceOrientationsiPhone);
DESERIALIZE(SupportedInterfaceOrientationsiPad);
}
};
#if PLATFORM_IOS
typedef iOSPlatformSettings PlatformSettings;
#endif
#endif