106 lines
2.1 KiB
Ucode
106 lines
2.1 KiB
Ucode
/**
|
|
* A base implementation of the ISettingsModifier interface
|
|
*
|
|
* Copyright (C) 2011 Tripwire Interactive LLC
|
|
*
|
|
* @author Michiel 'elmuerte' Hendriks
|
|
*/
|
|
class AbstractSettingsModifier extends Object implements(ISettingsModifier);
|
|
|
|
/**
|
|
* Current setting instance being augemented. Only set when augmentation will be
|
|
* done.
|
|
*/
|
|
var WebAdminSettings curSettings;
|
|
|
|
var class<WebAdminSettings> selectedClass;
|
|
|
|
struct ClassEntry
|
|
{
|
|
/**
|
|
* The WebAdminSettings class
|
|
*/
|
|
var class<WebAdminSettings> settingsClass;
|
|
/**
|
|
* If true it applies to the subclasses as well.
|
|
*/
|
|
var bool bIncludeSubclasses;
|
|
};
|
|
|
|
/**
|
|
* Defines which classes this modifier will affecr
|
|
*/
|
|
var array<ClassEntry> modifiesClasses;
|
|
|
|
|
|
/**
|
|
* Some meta data for settings to check
|
|
*/
|
|
struct SettingValue
|
|
{
|
|
/**
|
|
* True if the value is fixed. If false, it is ranged.
|
|
*/
|
|
var bool bFixed;
|
|
|
|
// the values. if bFixed=false, the first value is the minimum
|
|
var int intVal, intValMax;
|
|
var float floatVal, floatValMax;
|
|
var string stringVal;
|
|
|
|
structdefaultproperties
|
|
{
|
|
bFixed=true
|
|
}
|
|
};
|
|
|
|
function bool modifierAppliesTo(WebAdminSettings settings)
|
|
{
|
|
selectedClass = getSelectedClass(settings);
|
|
if (selectedClass != none)
|
|
{
|
|
curSettings = settings;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function class<WebAdminSettings> getSelectedClass(WebAdminSettings settings)
|
|
{
|
|
local ClassEntry entry;
|
|
local bool augmentEnabled;
|
|
|
|
if (settings == none) return none;
|
|
|
|
foreach modifiesClasses(entry)
|
|
{
|
|
if (entry.bIncludeSubclasses)
|
|
{
|
|
augmentEnabled = ClassIsChildOf(settings.class, entry.settingsClass);
|
|
}
|
|
else {
|
|
augmentEnabled = settings.class == entry.settingsClass;
|
|
}
|
|
if (augmentEnabled)
|
|
{
|
|
return entry.settingsClass;
|
|
}
|
|
}
|
|
return none;
|
|
}
|
|
|
|
function string finalizeAugmentation(WebResponse response, String path)
|
|
{
|
|
curSettings = none;
|
|
selectedClass = none;
|
|
return "";
|
|
}
|
|
|
|
function augmentSetting(SettingRendererState renderState, optional int index = -1, optional bool inContainer);
|
|
|
|
function ensureSettingValues(WebAdminSettings settings);
|
|
|
|
defaultProperties
|
|
{
|
|
}
|