1096 lines
33 KiB
Ucode
1096 lines
33 KiB
Ucode
|
/**
|
||
|
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Base class for any type of settings that can be manipulated by the UI
|
||
|
*/
|
||
|
class Settings extends Object
|
||
|
native
|
||
|
abstract;
|
||
|
|
||
|
/** The types of advertisement of settings to use */
|
||
|
enum EOnlineDataAdvertisementType
|
||
|
{
|
||
|
/** Don't advertise via the online service or QoS data */
|
||
|
ODAT_DontAdvertise,
|
||
|
/** Advertise via the online service only */
|
||
|
ODAT_OnlineService,
|
||
|
/** Advertise via the QoS data only */
|
||
|
ODAT_QoS,
|
||
|
/** Advertise via the online service and via the QoS data */
|
||
|
ODAT_OnlineServiceAndQoS
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Structure used to represent a string setting that has a restricted and
|
||
|
* localized set of value strings. For instance:
|
||
|
*
|
||
|
* GameType (id) Values = (0) Death Match, (1) Team Death Match, etc.
|
||
|
*
|
||
|
* This allows strings to be transmitted using only 8 bytes and each string
|
||
|
* is correct for the destination language irrespective of sender's language
|
||
|
*/
|
||
|
struct native LocalizedStringSetting
|
||
|
{
|
||
|
/** The unique identifier for this localized string */
|
||
|
var int Id;
|
||
|
/** The unique index into the list of localized strings */
|
||
|
var int ValueIndex;
|
||
|
/** How this setting should be presented to requesting clients: online or QoS */
|
||
|
var EOnlineDataAdvertisementType AdvertisementType;
|
||
|
};
|
||
|
|
||
|
/** The supported data types that can be stored in the union */
|
||
|
enum ESettingsDataType
|
||
|
{
|
||
|
/** Means the data in the OnlineData value fields should be ignored */
|
||
|
SDT_Empty,
|
||
|
/** 32 bit integer goes in Value1 only*/
|
||
|
SDT_Int32,
|
||
|
/** 64 bit integer stored in both value fields */
|
||
|
SDT_Int64,
|
||
|
/** Double (8 byte) stored in both value fields */
|
||
|
SDT_Double,
|
||
|
/** Unicode string pointer in Value2 with length in Value1 */
|
||
|
SDT_String,
|
||
|
/** Float (4 byte) stored in Value1 fields */
|
||
|
SDT_Float,
|
||
|
/** Binary data with count in Value1 and pointer in Value2 */
|
||
|
SDT_Blob,
|
||
|
/** Date/time structure. Date in Value1 and time Value2 */
|
||
|
SDT_DateTime,
|
||
|
//@HSL_BEGIN_XBOX
|
||
|
/** 32 bit unsigned integer goes in Value1 only*/
|
||
|
SDT_UInt32,
|
||
|
/** 64 bit unsigned integer stored in both value fields */
|
||
|
SDT_UInt64,
|
||
|
//@HSL_END_XBOX
|
||
|
};
|
||
|
|
||
|
/** Structure to hold arbitrary data of a given type */
|
||
|
struct native SettingsData
|
||
|
{
|
||
|
/** Enum (byte) indicating the type of data held in the value fields */
|
||
|
var const ESettingsDataType Type;
|
||
|
/** This is a union of value types and should never be used in script */
|
||
|
var const int Value1;
|
||
|
/**
|
||
|
* This is a union of value types and should never be used in script
|
||
|
* NOTE: It's declared as a pointer for 64bit systems
|
||
|
*/
|
||
|
var const transient native pointer Value2{INT};
|
||
|
|
||
|
`if(`__TW_)
|
||
|
var const int Key;
|
||
|
`endif
|
||
|
|
||
|
structcpptext
|
||
|
{
|
||
|
/**
|
||
|
* Copies the data and sets the type
|
||
|
*
|
||
|
* @param InData the new data to assign
|
||
|
*/
|
||
|
void SetData(const FString& InData);
|
||
|
|
||
|
/**
|
||
|
* Copies the data and sets the type
|
||
|
*
|
||
|
* @param InData the new data to assign
|
||
|
*/
|
||
|
void SetData(const TCHAR* InData);
|
||
|
|
||
|
/**
|
||
|
* Copies the data and sets the type
|
||
|
*
|
||
|
* @param InData the new data to assign
|
||
|
*/
|
||
|
void SetData(INT InData);
|
||
|
|
||
|
//@HSL_BEGIN_XBOX
|
||
|
/**
|
||
|
* Copies the data and sets the type
|
||
|
*
|
||
|
* @param InData the new data to assign
|
||
|
*/
|
||
|
void SetData(UINT InData);
|
||
|
//@HSL_END_XBOX
|
||
|
|
||
|
/**
|
||
|
* Copies the data and sets the type to DateTime
|
||
|
*
|
||
|
* @param InData1 the first part to assign
|
||
|
* @param InData2 the second part to assign
|
||
|
*/
|
||
|
void SetData(INT InData1,INT InData2);
|
||
|
|
||
|
/**
|
||
|
* Copies the data and sets the type
|
||
|
*
|
||
|
* @param InData the new data to assign
|
||
|
*/
|
||
|
void SetData(DOUBLE InData);
|
||
|
|
||
|
/**
|
||
|
* Copies the data and sets the type
|
||
|
*
|
||
|
* @param InData the new data to assign
|
||
|
*/
|
||
|
void SetData(FLOAT InData);
|
||
|
|
||
|
/**
|
||
|
* Copies the data and sets the type
|
||
|
*
|
||
|
* @param InData the new data to assign
|
||
|
*/
|
||
|
void SetData(const TArray<BYTE>& InData);
|
||
|
|
||
|
/**
|
||
|
* Copies the data and sets the type
|
||
|
*
|
||
|
* @param Size the length of the buffer to copy
|
||
|
* @param InData the new data to assign
|
||
|
*/
|
||
|
void SetData(DWORD Size,const BYTE* InData);
|
||
|
|
||
|
/**
|
||
|
* Copies the data and sets the type
|
||
|
*
|
||
|
* @param InData the new data to assign
|
||
|
*/
|
||
|
//@HSL_BEGIN_XBOX
|
||
|
void SetData(SQWORD InData);
|
||
|
|
||
|
/**
|
||
|
* Copies the data and sets the type
|
||
|
*
|
||
|
* @param InData the new data to assign
|
||
|
*/
|
||
|
//@HSL_END_XBOX
|
||
|
void SetData(QWORD InData);
|
||
|
|
||
|
/**
|
||
|
* Copies the data after verifying the type
|
||
|
*
|
||
|
* @param OutData out value that receives the copied data
|
||
|
*/
|
||
|
void GetData(FString& OutData) const;
|
||
|
|
||
|
/**
|
||
|
* Copies the data after verifying the type
|
||
|
*
|
||
|
* @param OutData out value that receives the copied data
|
||
|
*/
|
||
|
void GetData(INT& OutData) const;
|
||
|
|
||
|
/**
|
||
|
* Copies the data after verifying the type
|
||
|
*
|
||
|
* @param OutData out value that receives the copied data
|
||
|
*/
|
||
|
//@HSL_BEGIN_XBOX
|
||
|
void GetData(UINT& OutData) const;
|
||
|
|
||
|
/**
|
||
|
* Copies the data after verifying the type
|
||
|
*
|
||
|
* @param OutData out value that receives the copied data
|
||
|
*/
|
||
|
void GetData(SQWORD& OutData) const;
|
||
|
|
||
|
/**
|
||
|
* Copies the data after verifying the type
|
||
|
*
|
||
|
* @param OutData out value that receives the copied data
|
||
|
*/
|
||
|
//@HSL_END_XBOX
|
||
|
void GetData(QWORD& OutData) const;
|
||
|
|
||
|
/**
|
||
|
* Copies the data after verifying the type
|
||
|
*
|
||
|
* @param OutData out value that receives the copied data
|
||
|
*/
|
||
|
void GetData(FLOAT& OutData) const;
|
||
|
|
||
|
/**
|
||
|
* Copies the data after verifying the type
|
||
|
*
|
||
|
* @param OutData out value that receives the copied data
|
||
|
*/
|
||
|
void GetData(TArray<BYTE>& OutData) const;
|
||
|
|
||
|
/**
|
||
|
* Copies the data after verifying the type.
|
||
|
* NOTE: Performs a deep copy so you are repsonsible for freeing the data
|
||
|
*
|
||
|
* @param OutSize out value that receives the size of the copied data
|
||
|
* @param OutData out value that receives the copied data
|
||
|
*/
|
||
|
void GetData(DWORD& OutSize,BYTE** OutData) const;
|
||
|
|
||
|
/**
|
||
|
* Copies the data into the two fields after verifying the type is DateTime
|
||
|
*
|
||
|
* @param InData1 the first part to assign
|
||
|
* @param InData2 the second part to assign
|
||
|
*/
|
||
|
void GetData(INT& InData1,INT& InData2) const;
|
||
|
|
||
|
/**
|
||
|
* Increments the value by the specified amount
|
||
|
*
|
||
|
* @param IncBy the amount to increment by
|
||
|
*/
|
||
|
template<typename TYPE,ESettingsDataType ENUM_TYPE>
|
||
|
FORCEINLINE void Increment(TYPE IncBy)
|
||
|
{
|
||
|
checkSlow(Type == SDT_Int32 || Type == SDT_Int64 ||
|
||
|
//@HSL_BEGIN_XBOX
|
||
|
Type == SDT_UInt32 || Type == SDT_UInt64 ||
|
||
|
//@HSL_END_XBOX
|
||
|
Type == SDT_Float || Type == SDT_Double);
|
||
|
if (Type == ENUM_TYPE)
|
||
|
{
|
||
|
*(TYPE*)&Value1 += IncBy;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Decrements the value by the specified amount
|
||
|
*
|
||
|
* @param DecBy the amount to decrement by
|
||
|
*/
|
||
|
template<typename TYPE,ESettingsDataType ENUM_TYPE>
|
||
|
FORCEINLINE void Decrement(TYPE DecBy)
|
||
|
{
|
||
|
checkSlow(Type == SDT_Int32 || Type == SDT_Int64 ||
|
||
|
//@HSL_BEGIN_XBOX
|
||
|
Type == SDT_UInt32 || Type == SDT_UInt64 ||
|
||
|
//@HSL_END_XBOX
|
||
|
Type == SDT_Float || Type == SDT_Double);
|
||
|
if (Type == ENUM_TYPE)
|
||
|
{
|
||
|
*(TYPE*)&Value1 -= DecBy;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Cleans up the existing data and sets the type to ODT_Empty
|
||
|
*/
|
||
|
void CleanUp(void);
|
||
|
|
||
|
/** Does nothing (no init version) */
|
||
|
FSettingsData(void)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Zeroes members
|
||
|
*/
|
||
|
FSettingsData(EEventParm) :
|
||
|
Type(SDT_Empty),
|
||
|
Value1(0),
|
||
|
Value2(0)
|
||
|
#if __TW_SECURE_
|
||
|
,Key(0)
|
||
|
#endif
|
||
|
{
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Copy constructor. Copies the other into this object
|
||
|
*
|
||
|
* @param Other the other structure to copy
|
||
|
*/
|
||
|
FSettingsData(const FSettingsData& Other);
|
||
|
|
||
|
/**
|
||
|
* Assignment operator. Copies the other into this object
|
||
|
*
|
||
|
* @param Other the other structure to copy
|
||
|
*/
|
||
|
FSettingsData& operator=(const FSettingsData& Other);
|
||
|
|
||
|
/**
|
||
|
* Cleans up the data to prevent leaks
|
||
|
*/
|
||
|
~FSettingsData(void)
|
||
|
{
|
||
|
CleanUp();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Converts the data into a string representation
|
||
|
*/
|
||
|
FString ToString(void) const;
|
||
|
|
||
|
/**
|
||
|
* Converts the string to the specified type of data for this setting
|
||
|
*
|
||
|
* @param NewValue the string value to convert
|
||
|
*
|
||
|
* @return TRUE if it was converted, FALSE otherwise
|
||
|
*/
|
||
|
UBOOL FromString(const FString& NewValue);
|
||
|
|
||
|
/**
|
||
|
* Copies the data after verifying the type
|
||
|
*
|
||
|
* @param OutData out value that receives the copied data
|
||
|
*/
|
||
|
void GetData(DOUBLE& OutData) const;
|
||
|
|
||
|
/** @return The type as a string */
|
||
|
const TCHAR* GetTypeString(void) const
|
||
|
{
|
||
|
switch (Type)
|
||
|
{
|
||
|
case SDT_Empty: return TEXT("Empty");
|
||
|
case SDT_Int32: return TEXT("Int32");
|
||
|
case SDT_Int64: return TEXT("Int64");
|
||
|
//@HSL_BEGIN_XBOX
|
||
|
case SDT_UInt32: return TEXT("UInt32");
|
||
|
case SDT_UInt64: return TEXT("UInt64");
|
||
|
//@HSL_END_XBOX
|
||
|
case SDT_Double: return TEXT("Double");
|
||
|
case SDT_String: return TEXT("String");
|
||
|
case SDT_Float: return TEXT("Float");
|
||
|
case SDT_Blob: return TEXT("Blob");
|
||
|
case SDT_DateTime: return TEXT("DateTime");
|
||
|
};
|
||
|
return TEXT("Empty");
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Comparison of two settings data classes
|
||
|
*
|
||
|
* @param Other the other settings data to compare against
|
||
|
*
|
||
|
* @return TRUE if they are equal, FALSE otherwise
|
||
|
*/
|
||
|
UBOOL operator==(const FSettingsData& Other) const;
|
||
|
UBOOL operator!=(const FSettingsData& Other) const;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Structure used to hold non-localized string data. Properties can be
|
||
|
* arbitrary types.
|
||
|
*/
|
||
|
struct native SettingsProperty
|
||
|
{
|
||
|
/** The unique id for this property */
|
||
|
var int PropertyId;
|
||
|
/** The data stored for the type */
|
||
|
var SettingsData Data;
|
||
|
/** How this setting should be presented to requesting clients: online or QoS */
|
||
|
var EOnlineDataAdvertisementType AdvertisementType;
|
||
|
|
||
|
structcpptext
|
||
|
{
|
||
|
/** Does nothing (no init version) */
|
||
|
FSettingsProperty(void)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Zeroes members
|
||
|
*/
|
||
|
FSettingsProperty(EEventParm) :
|
||
|
PropertyId(0),
|
||
|
Data(EC_EventParm),
|
||
|
AdvertisementType(ODAT_DontAdvertise)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Copy constructor. Copies the other into this object
|
||
|
*
|
||
|
* @param Other the other structure to copy
|
||
|
*/
|
||
|
FSettingsProperty(const FSettingsProperty& Other) :
|
||
|
Data(EC_EventParm)
|
||
|
{
|
||
|
PropertyId = Other.PropertyId;
|
||
|
AdvertisementType = Other.AdvertisementType;
|
||
|
// This will do a deep copy
|
||
|
Data = Other.Data;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Assignment operator. Copies the other into this object
|
||
|
*
|
||
|
* @param Other the other structure to copy
|
||
|
*/
|
||
|
FSettingsProperty& operator=(const FSettingsProperty& Other)
|
||
|
{
|
||
|
if (&Other != this)
|
||
|
{
|
||
|
PropertyId = Other.PropertyId;
|
||
|
AdvertisementType = Other.AdvertisementType;
|
||
|
// This will do a deep copy
|
||
|
Data = Other.Data;
|
||
|
}
|
||
|
return *this;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
/** Maps an Id value to a string */
|
||
|
struct native StringIdToStringMapping
|
||
|
{
|
||
|
/** Id for the given string */
|
||
|
var const int Id;
|
||
|
/** Human readable form of the Id */
|
||
|
var const localized name Name;
|
||
|
/** Whether this id is used to indicate a wildcard value or not */
|
||
|
var const bool bIsWildcard;
|
||
|
};
|
||
|
|
||
|
/** Contains the meta information for a given context */
|
||
|
struct native LocalizedStringSettingMetaData
|
||
|
{
|
||
|
/** Id for the given string */
|
||
|
var const int Id;
|
||
|
/** Human readable form of the Id */
|
||
|
var const name Name;
|
||
|
/** Localized text used for list column headers */
|
||
|
var const localized string ColumnHeaderText;
|
||
|
/** Holds the mappings of localized string setting values to their human readable form */
|
||
|
var const array<StringIdToStringMapping> ValueMappings;
|
||
|
};
|
||
|
|
||
|
/** Maps an Id value to a string */
|
||
|
struct native IdToStringMapping
|
||
|
{
|
||
|
/** Id for the given string */
|
||
|
var const int Id;
|
||
|
/** Human readable form of the Id */
|
||
|
var const localized name Name;
|
||
|
};
|
||
|
|
||
|
/** Used to indicate how the data should be retrieved for the UI */
|
||
|
enum EPropertyValueMappingType
|
||
|
{
|
||
|
/** The value is presented "as is" without mapping/manipulation */
|
||
|
PVMT_RawValue,
|
||
|
/** The property has a set of predefined values that are the only ones to choose from */
|
||
|
PVMT_PredefinedValues,
|
||
|
/** The property must exist within the min/max range specified */
|
||
|
PVMT_Ranged,
|
||
|
/** The property is mapped using id/name pairs */
|
||
|
PVMT_IdMapped
|
||
|
};
|
||
|
|
||
|
/** Contains the meta information needed to validate property data */
|
||
|
struct native SettingsPropertyPropertyMetaData
|
||
|
{
|
||
|
/** Id for the given string */
|
||
|
var const int Id;
|
||
|
/** Human readable form of the Id */
|
||
|
var const name Name;
|
||
|
/** Localized text used for list column headers */
|
||
|
var const localized string ColumnHeaderText;
|
||
|
/** Whether the value is ID mapped or should be string-ized */
|
||
|
var const EPropertyValueMappingType MappingType;
|
||
|
/** Holds the mappings of value IDs to their human readable form */
|
||
|
var const array<IdToStringMapping> ValueMappings;
|
||
|
/** Holds a set of predefined values for a property when freeform editing isn't desired */
|
||
|
var const array<SettingsData> PredefinedValues;
|
||
|
/** The min value for this property */
|
||
|
var const float MinVal;
|
||
|
/** The max value for this property */
|
||
|
var const float MaxVal;
|
||
|
/** The amount that this range can be incremented/decremented by */
|
||
|
var const float RangeIncrement;
|
||
|
};
|
||
|
|
||
|
/** The various localized string settings to use with the session */
|
||
|
var array<LocalizedStringSetting> LocalizedSettings;
|
||
|
|
||
|
/** The properties used by the derived settings class */
|
||
|
var array<SettingsProperty> Properties;
|
||
|
|
||
|
/** Used to map a localized string setting to a human readable string */
|
||
|
var array<LocalizedStringSettingMetaData> LocalizedSettingsMappings;
|
||
|
|
||
|
/** Used to map a property to a human readable string and validate its range */
|
||
|
var array<SettingsPropertyPropertyMetaData> PropertyMappings;
|
||
|
|
||
|
cpptext
|
||
|
{
|
||
|
/**
|
||
|
* Finds the specified property
|
||
|
*
|
||
|
* @param PropertyId to search for
|
||
|
*
|
||
|
* @return pointer to the property or NULL if not found
|
||
|
*/
|
||
|
FORCEINLINE FSettingsProperty* FindProperty(INT PropertyId)
|
||
|
{
|
||
|
for (INT PropertyIndex = 0; PropertyIndex < Properties.Num(); PropertyIndex++)
|
||
|
{
|
||
|
FSettingsProperty& Property = Properties(PropertyIndex);
|
||
|
if (Property.PropertyId == PropertyId)
|
||
|
{
|
||
|
return &Property;
|
||
|
}
|
||
|
}
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Finds the specified localized string setting
|
||
|
*
|
||
|
* @param SettingId id of the setting to search for
|
||
|
*
|
||
|
* @return pointer to the string setting or NULL if not found
|
||
|
*/
|
||
|
FORCEINLINE FLocalizedStringSetting* FindStringSetting(INT SettingId)
|
||
|
{
|
||
|
for (INT SettingsIndex = 0; SettingsIndex < LocalizedSettings.Num(); SettingsIndex++)
|
||
|
{
|
||
|
FLocalizedStringSetting& Setting = LocalizedSettings(SettingsIndex);
|
||
|
if (Setting.Id == SettingId)
|
||
|
{
|
||
|
return &Setting;
|
||
|
}
|
||
|
}
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Finds the specified localized string setting's meta data
|
||
|
*
|
||
|
* @param SettingId id of the setting to search the meta data for
|
||
|
*
|
||
|
* @return pointer to the string meta data or NULL if not found
|
||
|
*/
|
||
|
FORCEINLINE FLocalizedStringSettingMetaData* FindStringSettingMetaData(INT SettingId)
|
||
|
{
|
||
|
for (INT MetaDataIndex = 0; MetaDataIndex < LocalizedSettingsMappings.Num(); MetaDataIndex++)
|
||
|
{
|
||
|
FLocalizedStringSettingMetaData& MetaData = LocalizedSettingsMappings(MetaDataIndex);
|
||
|
if (MetaData.Id == SettingId)
|
||
|
{
|
||
|
return &MetaData;
|
||
|
}
|
||
|
}
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Finds the specified property's meta data
|
||
|
*
|
||
|
* @param PropertyId id of the property to search the meta data for
|
||
|
*
|
||
|
* @return pointer to the property meta data or NULL if not found
|
||
|
*/
|
||
|
FORCEINLINE FSettingsPropertyPropertyMetaData* FindPropertyMetaData(INT PropertyId)
|
||
|
{
|
||
|
for (INT MetaDataIndex = 0; MetaDataIndex < PropertyMappings.Num(); MetaDataIndex++)
|
||
|
{
|
||
|
FSettingsPropertyPropertyMetaData& MetaData = PropertyMappings(MetaDataIndex);
|
||
|
if (MetaData.Id == PropertyId)
|
||
|
{
|
||
|
return &MetaData;
|
||
|
}
|
||
|
}
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
/** Finalize the clean up process */
|
||
|
virtual void FinishDestroy(void);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Static function for setting members of the SettingsData union
|
||
|
*
|
||
|
* @param Data the data structure to set the fields of
|
||
|
* @param InFloat the float data to set in the union
|
||
|
*/
|
||
|
static native function SetSettingsDataFloat(out SettingsData Data,float InFloat);
|
||
|
|
||
|
/**
|
||
|
* Static function for setting members of the SettingsData union
|
||
|
*
|
||
|
* @param Data the data structure to set the fields of
|
||
|
* @param InInt the 32 bit integer data to set in the union
|
||
|
*/
|
||
|
static native function SetSettingsDataInt(out SettingsData Data,int InInt);
|
||
|
|
||
|
/**
|
||
|
* Static function for setting members of the SettingsData union
|
||
|
*
|
||
|
* @param Data the data structure to set the fields of
|
||
|
* @param InInt1 first half of the data to set
|
||
|
* @param InInt2 second half of the data to set
|
||
|
*/
|
||
|
static native function SetSettingsDataDateTime(out SettingsData Data,int InInt1,int InInt2);
|
||
|
|
||
|
/**
|
||
|
* Static function for setting members of the SettingsData union
|
||
|
*
|
||
|
* @param Data the data structure to set the fields of
|
||
|
* @param InBlob the 8 bytes to copy into the union
|
||
|
*/
|
||
|
static native function SetSettingsDataBlob(out SettingsData Data,out array<byte> InBlob);
|
||
|
|
||
|
/**
|
||
|
* Static function for setting members of the SettingsData union
|
||
|
*
|
||
|
* @param Data the data structure to set the fields of
|
||
|
* @param Data2Copy the SettingsData object to copy
|
||
|
*/
|
||
|
static native function SetSettingsData(out SettingsData Data,out SettingsData Data2Copy);
|
||
|
|
||
|
/**
|
||
|
* Empties an SettingsData structure
|
||
|
*
|
||
|
* @param Data the data structure to set the fields of
|
||
|
*/
|
||
|
static native function EmptySettingsData(out SettingsData Data);
|
||
|
|
||
|
/**
|
||
|
* Static function for copying data out of the SettingsData union
|
||
|
*
|
||
|
* @param Data the data structure to copy the data from
|
||
|
*/
|
||
|
static native function float GetSettingsDataFloat(out SettingsData Data);
|
||
|
|
||
|
/**
|
||
|
* Static function for copying data out of the SettingsData union
|
||
|
*
|
||
|
* @param Data the data structure to copy the data from
|
||
|
*/
|
||
|
static native function int GetSettingsDataInt(out SettingsData Data);
|
||
|
|
||
|
/**
|
||
|
* Static function for copying data out the SettingsData union
|
||
|
*
|
||
|
* @param Data the data structure to copy the data from
|
||
|
* @param OutBlob the buffer to copy the data into
|
||
|
*/
|
||
|
static native function GetSettingsDataBlob(out SettingsData Data,out array<byte> OutBlob);
|
||
|
|
||
|
/**
|
||
|
* Static function for getting members of the SettingsData union
|
||
|
*
|
||
|
* @param Data the data structure to get the fields of
|
||
|
* @param OutInt1 first half of the data to get
|
||
|
* @param OutInt2 second half of the data to get
|
||
|
*/
|
||
|
static native function GetSettingsDataDateTime(out SettingsData Data,out int OutInt1,out int OutInt2);
|
||
|
|
||
|
/**
|
||
|
* Searches the localized string setting array for the matching id and sets the value
|
||
|
*
|
||
|
* @param StringSettingId the string setting to set the value for
|
||
|
* @param ValueIndex the value of the string setting
|
||
|
* @param bShouldAutoAdd whether to add the context if it is missing
|
||
|
*/
|
||
|
native function SetStringSettingValue(int StringSettingId,int ValueIndex,optional bool bShouldAutoAdd);
|
||
|
|
||
|
/**
|
||
|
* Searches the localized string setting array for the matching id and returns its value
|
||
|
*
|
||
|
* @param StringSettingId the string setting to find the value of
|
||
|
* @param ValueIndex the out value that is set when found
|
||
|
*
|
||
|
* @return true if found, false otherwise
|
||
|
*/
|
||
|
native function bool GetStringSettingValue(int StringSettingId,out int ValueIndex);
|
||
|
|
||
|
/**
|
||
|
* Searches the localized string setting array for the matching id and sets the selected value
|
||
|
* to the next (or prev) item in the list, wrapping if required
|
||
|
*
|
||
|
* @param StringSettingId the string setting to find the value of
|
||
|
* @param Direction the direction to move in the list (1 forward, -1 backward)
|
||
|
* @param bShouldWrap if true out of bound access wraps around, false clamps to min/max
|
||
|
*
|
||
|
* @return true if found, false otherwise
|
||
|
*/
|
||
|
native function bool IncrementStringSettingValue(int StringSettingId,int Direction,bool bShouldWrap);
|
||
|
|
||
|
/**
|
||
|
* Searches the localized string setting array for the matching id and
|
||
|
* returns the list of possible values
|
||
|
*
|
||
|
* @param StringSettingId the string setting to find the value of
|
||
|
* @param Values the out value that is a list of value names and their ids
|
||
|
*
|
||
|
* @return true if found, false otherwise
|
||
|
*/
|
||
|
native function bool GetStringSettingValueNames(int StringSettingId,out array<IdToStringMapping> Values);
|
||
|
|
||
|
/**
|
||
|
* Searches the localized string setting array for the matching name and sets the value
|
||
|
*
|
||
|
* @param StringSettingName the setting name to set the value for
|
||
|
* @param ValueIndex the value of the string setting
|
||
|
* @param bShouldAutoAdd whether to add the string setting if it is missing
|
||
|
*/
|
||
|
native function SetStringSettingValueByName(name StringSettingName,int ValueIndex,bool bShouldAutoAdd);
|
||
|
|
||
|
/**
|
||
|
* Searches the localized string setting array for the matching name and returns its value
|
||
|
*
|
||
|
* @param StringSettingName the setting name to find the value of
|
||
|
* @param ValueIndex the out value that is set when found
|
||
|
*
|
||
|
* @return true if found, false otherwise
|
||
|
*/
|
||
|
native function bool GetStringSettingValueByName(name StringSettingName,out int ValueIndex);
|
||
|
|
||
|
/**
|
||
|
* Searches the context array for the matching string setting name and returns the id
|
||
|
*
|
||
|
* @param StringSettingName the name of the string setting being searched for
|
||
|
* @param StringSettingId the id of the context that matches the name
|
||
|
*
|
||
|
* @return true if the seting was found, false otherwise
|
||
|
*/
|
||
|
native function bool GetStringSettingId(name StringSettingName,out int StringSettingId);
|
||
|
|
||
|
/**
|
||
|
* Finds the human readable name for the localized string setting
|
||
|
*
|
||
|
* @param StringSettingId the id to look up in the mappings table
|
||
|
*
|
||
|
* @return the name of the string setting that matches the id or NAME_None if not found
|
||
|
*/
|
||
|
native function name GetStringSettingName(int StringSettingId);
|
||
|
|
||
|
/**
|
||
|
* Finds the localized column header text for the string setting
|
||
|
*
|
||
|
* @param StringSettingId the id to look up in the mappings table
|
||
|
*
|
||
|
* @return the string to use as the list column header for the string setting that matches the id, or an empty string if not found.
|
||
|
*/
|
||
|
native function string GetStringSettingColumnHeader( int StringSettingId );
|
||
|
|
||
|
/**
|
||
|
* Determines if the value for the specified setting is a wildcard option
|
||
|
*
|
||
|
* @param StringSettingId the id to check for being a wildcard
|
||
|
*
|
||
|
* @return true if the current value is a wildcard, false otherwise
|
||
|
*/
|
||
|
native function bool IsWildcardStringSetting(int StringSettingId);
|
||
|
|
||
|
/**
|
||
|
* Finds the human readable name for a string setting's value. Searches the
|
||
|
* string settings mappings for the specifc string setting and then searches
|
||
|
* the set of values for the specific value index and returns that value's
|
||
|
* human readable name
|
||
|
*
|
||
|
* @param StringSettingId the id to look up in the mappings table
|
||
|
* @param ValueIndex the value index to find the string value of
|
||
|
*
|
||
|
* @return the name of the string setting value that matches the id & index or NAME_None if not found
|
||
|
*/
|
||
|
native function name GetStringSettingValueName(int StringSettingId,int ValueIndex);
|
||
|
|
||
|
/**
|
||
|
* Finds the human readable name for a string setting's value. Searches the
|
||
|
* string settings mappings for the specifc string setting and then searches
|
||
|
* the set of values for the specific value index and returns that value's
|
||
|
* human readable name
|
||
|
*
|
||
|
* @param StringSettingName the name of the string setting to find the string value of
|
||
|
*
|
||
|
* @return the name of the string setting value that matches the name or NAME_None if not found
|
||
|
*/
|
||
|
native function name GetStringSettingValueNameByName(name StringSettingName);
|
||
|
|
||
|
/**
|
||
|
* Searches for the string setting by name and sets the value index to the
|
||
|
* value contained in the string setting meta data
|
||
|
*
|
||
|
* @param StringSettingName the name of the string setting to find
|
||
|
* @param NewValue the string value to use
|
||
|
*
|
||
|
* @return true if the string setting was found and the value was set, false otherwise
|
||
|
*/
|
||
|
native function bool SetStringSettingValueFromStringByName(name StringSettingName,const out string NewValue);
|
||
|
|
||
|
/**
|
||
|
* Searches the property array for the matching property and returns the id
|
||
|
*
|
||
|
* @param PropertyName the name of the property being searched for
|
||
|
* @param PropertyId the id of the context that matches the name
|
||
|
*
|
||
|
* @return true if the property was found, false otherwise
|
||
|
*/
|
||
|
native function bool GetPropertyId(name PropertyName,out int PropertyId);
|
||
|
|
||
|
/**
|
||
|
* Finds the human readable name for the property
|
||
|
*
|
||
|
* @param PropertyId the id to look up in the mappings table
|
||
|
*
|
||
|
* @return the name of the property that matches the id or NAME_None if not found
|
||
|
*/
|
||
|
native function name GetPropertyName(int PropertyId);
|
||
|
|
||
|
/**
|
||
|
* Finds the localized column header text for the property
|
||
|
*
|
||
|
* @param PropertyId the id to look up in the mappings table
|
||
|
*
|
||
|
* @return the string to use as the list column header for the property that matches the id, or an empty string if not found.
|
||
|
*/
|
||
|
native function string GetPropertyColumnHeader( int PropertyId );
|
||
|
|
||
|
/**
|
||
|
* Converts a property to a string. Searches by id
|
||
|
*
|
||
|
* @param PropertyId the id to look up in the mappings table
|
||
|
*
|
||
|
* @return the string form of the property value or an empty string if invalid/missing
|
||
|
*/
|
||
|
native function string GetPropertyAsString(int PropertyId);
|
||
|
|
||
|
/**
|
||
|
* Converts a property to a string. Searches by name
|
||
|
*
|
||
|
* @param PropertyName the name of the property to find
|
||
|
*
|
||
|
* @return the string form of the property value or an empty string if invalid/missing
|
||
|
*/
|
||
|
native function string GetPropertyAsStringByName(name PropertyName);
|
||
|
|
||
|
/**
|
||
|
* Searches for the property by name and sets the property to the value contained
|
||
|
* in the string
|
||
|
*
|
||
|
* @param PropertyName the name of the property to find
|
||
|
* @param NewValue the string value to use
|
||
|
*
|
||
|
* @return true if the property was found and the value was set, false otherwise
|
||
|
*/
|
||
|
native function bool SetPropertyFromStringByName(name PropertyName,const out string NewValue);
|
||
|
|
||
|
/**
|
||
|
* Sets a property of type SDT_Float to the value specified. Does nothing
|
||
|
* if the property is not of the right type.
|
||
|
*
|
||
|
* @param PropertyId the property to change the value of
|
||
|
* @param Value the new value to assign
|
||
|
*/
|
||
|
native function SetFloatProperty(int PropertyId,float Value);
|
||
|
|
||
|
/**
|
||
|
* Reads a property of type SDT_Float into the value specified. Does nothing
|
||
|
* if the property is not of the right type.
|
||
|
*
|
||
|
* @param PropertyId the property to read the value of
|
||
|
* @param Value the out value containing the property's value
|
||
|
*
|
||
|
* @return true if found and is the right type, false otherwise
|
||
|
*/
|
||
|
native function bool GetFloatProperty(int PropertyId,out float Value);
|
||
|
|
||
|
/**
|
||
|
* Sets a property of type SDT_Int32 to the value specified. Does nothing
|
||
|
* if the property is not of the right type.
|
||
|
*
|
||
|
* @param PropertyId the property to change the value of
|
||
|
* @param Value the new value to assign
|
||
|
*/
|
||
|
native function SetIntProperty(int PropertyId,int Value);
|
||
|
|
||
|
/**
|
||
|
* Reads a property of type SDT_Int32 into the value specified. Does nothing
|
||
|
* if the property is not of the right type.
|
||
|
*
|
||
|
* @param PropertyId the property to change the value of
|
||
|
* @param Value the out value containing the property's value
|
||
|
*
|
||
|
* @return true if found and is the right type, false otherwise
|
||
|
*/
|
||
|
native function bool GetIntProperty(int PropertyId,out int Value);
|
||
|
|
||
|
/**
|
||
|
* Sets a property of type SDT_String to the value specified. Does nothing
|
||
|
* if the property is not of the right type.
|
||
|
*
|
||
|
* @param PropertyId the property to change the value of
|
||
|
* @param Value the new value to assign
|
||
|
*/
|
||
|
native function SetStringProperty(int PropertyId,string Value);
|
||
|
|
||
|
/**
|
||
|
* Reads a property of type SDT_String into the value specified. Does nothing
|
||
|
* if the property is not of the right type.
|
||
|
*
|
||
|
* @param PropertyId the property to change the value of
|
||
|
* @param Value the out value containing the property's value
|
||
|
*
|
||
|
* @return true if found and is the right type, false otherwise
|
||
|
*/
|
||
|
native function bool GetStringProperty(int PropertyId,out string Value);
|
||
|
|
||
|
/**
|
||
|
* Change the current value for a mapped property's using a value id.
|
||
|
*
|
||
|
* @param PropertyId the property to change the value of
|
||
|
* @param ValueId the id for the value to set.
|
||
|
*
|
||
|
* @return true if the property was found and id mapped, false otherwise
|
||
|
*/
|
||
|
native function bool SetPropertyValueId(int PropertyId,int ValueId);
|
||
|
|
||
|
/**
|
||
|
* Retrieves the id for a mapped property's current value.
|
||
|
*
|
||
|
* @param PropertyId the property to change the value of
|
||
|
* @param ValueId receives the id of the property value
|
||
|
*
|
||
|
* @return true if the property was found and id mapped, false otherwise
|
||
|
*/
|
||
|
native function bool GetPropertyValueId(int PropertyId, out int ValueId);
|
||
|
|
||
|
/**
|
||
|
* Determines the property type for the specified property id
|
||
|
*
|
||
|
* @param PropertyId the property to change the value of
|
||
|
*
|
||
|
* @return the type of property, or SDT_Empty if not found
|
||
|
*/
|
||
|
native function ESettingsDataType GetPropertyType(int PropertyId);
|
||
|
|
||
|
/**
|
||
|
* Using the specified array, updates the matching settings to the new values
|
||
|
* in that array. Optionally, it will add settings that aren't currently part
|
||
|
* of this object.
|
||
|
*
|
||
|
* @param Settings the list of settings to update
|
||
|
* @param bShouldAddIfMissing whether to automatically add the setting if missing
|
||
|
*/
|
||
|
native function UpdateStringSettings(const out array<LocalizedStringSetting> Settings,bool bShouldAddIfMissing = true);
|
||
|
|
||
|
/**
|
||
|
* Using the specified array, updates the matching properties to the new values
|
||
|
* in that array. Optionally, it will add properties that aren't currently part
|
||
|
* of this object.
|
||
|
*
|
||
|
* @param Props the list of properties to update
|
||
|
* @param bShouldAddIfMissing whether to automatically add the property if missing
|
||
|
*/
|
||
|
native function UpdateProperties(const out array<SettingsProperty> Props,bool bShouldAddIfMissing = true);
|
||
|
|
||
|
/**
|
||
|
* Determines if a given property is present for this object
|
||
|
*
|
||
|
* @param PropertyId the ID to check on
|
||
|
*
|
||
|
* @return TRUE if the property is part of this object, FALSE otherwise
|
||
|
*/
|
||
|
native function bool HasProperty(int PropertyId);
|
||
|
|
||
|
/**
|
||
|
* Determines if a given localized string setting is present for this object
|
||
|
*
|
||
|
* @param SettingId the ID to check on
|
||
|
*
|
||
|
* @return TRUE if the setting is part of this object, FALSE otherwise
|
||
|
*/
|
||
|
native function bool HasStringSetting(int SettingId);
|
||
|
|
||
|
/**
|
||
|
* Determines the mapping type for the specified property
|
||
|
*
|
||
|
* @param PropertyId the ID to get the mapping type for
|
||
|
* @param OutType the out var the value is placed in
|
||
|
*
|
||
|
* @return TRUE if found, FALSE otherwise
|
||
|
*/
|
||
|
native function bool GetPropertyMappingType(int PropertyId,out EPropertyValueMappingType OutType);
|
||
|
|
||
|
/**
|
||
|
* Determines the min and max values of a property that is clamped to a range
|
||
|
*
|
||
|
* @param PropertyId the ID to get the mapping type for
|
||
|
* @param OutMinValue the out var the min value is placed in
|
||
|
* @param OutMaxValue the out var the max value is placed in
|
||
|
* @param RangeIncrement the amount the range can be adjusted by the UI in any single update
|
||
|
* @param bFormatAsInt whether the range's value should be treated as an int.
|
||
|
*
|
||
|
* @return TRUE if found and is a range property, FALSE otherwise
|
||
|
*/
|
||
|
native function bool GetPropertyRange(int PropertyId,out float OutMinValue,out float OutMaxValue,out float RangeIncrement,out byte bFormatAsInt);
|
||
|
|
||
|
/**
|
||
|
* Sets the value of a ranged property, clamping to the min/max values
|
||
|
*
|
||
|
* @param PropertyId the ID of the property to set
|
||
|
* @param NewValue the new value to apply to the
|
||
|
*
|
||
|
* @return TRUE if found and is a range property, FALSE otherwise
|
||
|
*/
|
||
|
native function bool SetRangedPropertyValue(int PropertyId,float NewValue);
|
||
|
|
||
|
/**
|
||
|
* Gets the value of a ranged property
|
||
|
*
|
||
|
* @param PropertyId the ID to get the value of
|
||
|
* @param OutValue the out var that receives the value
|
||
|
*
|
||
|
* @return TRUE if found and is a range property, FALSE otherwise
|
||
|
*/
|
||
|
native function bool GetRangedPropertyValue(int PropertyId,out float OutValue);
|
||
|
|
||
|
/**
|
||
|
* Scans the properties for the ones that need to be set via QoS data
|
||
|
*
|
||
|
* @param QoSProps the out array holding the list of properties to advertise via QoS
|
||
|
*/
|
||
|
native function GetQoSAdvertisedProperties(out array<SettingsProperty> QoSProps);
|
||
|
|
||
|
/**
|
||
|
* Scans the string settings for the ones that need to be set via QoS data
|
||
|
*
|
||
|
* @param QoSSettings the out array holding the list of settings to advertise via QoS
|
||
|
*/
|
||
|
native function GetQoSAdvertisedStringSettings(out array<LocalizedStringSetting> QoSSettings);
|
||
|
|
||
|
/**
|
||
|
* Appends databindings to the URL.
|
||
|
*
|
||
|
* @param OutURL String to append bindings to.
|
||
|
*/
|
||
|
native function AppendDataBindingsToURL(out string URL);
|
||
|
|
||
|
/**
|
||
|
* Appends properties to the URL.
|
||
|
*
|
||
|
* @param OutURL String to append properties to.
|
||
|
*/
|
||
|
native function AppendPropertiesToURL(out string URL);
|
||
|
|
||
|
/**
|
||
|
* Appends contexts to the URL.
|
||
|
*
|
||
|
* @param OutURL String to append contexts to.
|
||
|
*/
|
||
|
native function AppendContextsToURL(out string URL);
|
||
|
|
||
|
/**
|
||
|
* Builds an URL out of the string settings and properties
|
||
|
*
|
||
|
* @param URL the string to populate
|
||
|
*/
|
||
|
native function BuildURL(out string URL);
|
||
|
|
||
|
/**
|
||
|
* Updates the game settings object from parameters passed on the URL
|
||
|
*
|
||
|
* @param URL the URL to parse for settings
|
||
|
*/
|
||
|
native function UpdateFromURL(const out string URL, GameInfo Game);
|