Streamlined baseUI profiles

Implemented audioOptions file with structure to comply to BaseUI options menu
Implemented majority of keybind remapping logic for options menu
This commit is contained in:
Areloch 2023-12-18 23:49:13 -06:00
parent f14c96c2bc
commit 55697cffdb
23 changed files with 1605 additions and 1582 deletions

View file

@ -52,7 +52,7 @@ new GuiControlProfile(GuiConsoleTextProfile)
category = "Core";
};
$ConsoleDefaultFillColor = "12 14 19 175";
$ConsoleDefaultFillColor = "0 0 0 175";
if(!isObject(ConsoleScrollProfile))
new GuiControlProfile(ConsoleScrollProfile : GuiScrollProfile)

View file

@ -267,3 +267,24 @@ new GuiControlProfile(GuiScrollProfile)
bitmapAsset = "Core_GUI:scrollBar_image";
category = "Core";
};
// ---------------------------------------------------------------------------
singleton GuiControlProfile( GuiInputCtrlProfile )
{
tab = true;
canKeyFocus = true;
category = "Core";
};
singleton GuiControlProfile (GuiTextProfile)
{
justify = "left";
fontColor = "20 20 20";
category = "Core";
};
singleton GuiControlProfile (GuiTextRightProfile : GuiTextProfile)
{
justify = "right";
category = "Core";
};

View file

@ -7,7 +7,7 @@ function Core_SFX::onCreate(%this)
exec("./scripts/audioDescriptions." @ $TorqueScriptFileExtension);
exec("./scripts/audioEnvironments." @ $TorqueScriptFileExtension);
exec("./scripts/audioStates." @ $TorqueScriptFileExtension);
exec("./scripts/audioOptions." @ $TorqueScriptFileExtension);
}
function Core_SFX::onDestroy(%this)

View file

@ -0,0 +1,82 @@
new SimGroup(AudioSettingsGroup)
{
class = "PrimaryOptionsGroup";
displayName = "Audio";
new SimGroup()
{
class = "SubOptionsGroup";
displayName = "Audio Devices";
new SimGroup(AudioSettingsProviderGroup)
{
class = "AudioOptionsSettings";
OptionName = "Audio Provider";
Description = "";
};
new SimGroup(AudioSettingsDeviceGroup)
{
class = "AudioOptionsSettings";
OptionName = "Audio Device";
Description = "";
};
};
};
function AudioSettingsGroup::populateSettings(%this)
{
AudioSettingsProviderGroup.clear();
AudioSettingsDeviceGroup.clear();
%buffer = sfxGetAvailableDevices();
%count = getRecordCount( %buffer );
for(%i = 0; %i < %count; %i++)
{
%record = getRecord(%buffer, %i);
%provider = getField(%record, 0);
%device = getField(%record, 1);
//When the client is actually running, we don't care about null audo devices
if(%provider $= "null")
continue;
//We can't have duplicate providers, so double check for uniqueness
%foundProvider = false;
foreach(%registeredProviders in AudioSettingsProviderGroup)
{
if(%registeredProviders.displayName $= %provider)
{
%foundProvider = true;
break;
}
}
if(!%foundProvider)
{
//Provider entry
%providerEntry = new ArrayObject()
{
class = "OptionsQualityLevel";
displayName = %provider;
key["$pref::SFX::provider"] = %provider;
};
AudioSettingsProviderGroup.add(%providerEntry);
}
//Device Entry
%deviceEntry = new ArrayObject()
{
class = "OptionsQualityLevel";
displayName = %device;
provider = %provider; //this is for filtering later, if we need to
key["$pref::SFX::device"] = %device;
};
AudioSettingsDeviceGroup.add(%deviceEntry);
}
}