OptionsCheckbox_OnClick(this)OptionsRow_Hover(this:GetParent(), 1)OptionsRow_Hover(this:GetParent(), nil)OptionsRow_Hover(this, 1)OptionsRow_Hover(this, nil)OptionsSlider_OnValueChanged(this, arg1)OptionsRow_Hover(this:GetParent():GetParent(), 1)OptionsRow_Hover(this:GetParent():GetParent(), nil)OptionsRow_Hover(this, 1)OptionsRow_Hover(this, nil)OptionsRow_Hover(this, 1)OptionsRow_Hover(this, nil)
this:SetBackdropColor(0, 0, 0, 0)
this:SetBackdropBorderColor(0.6, 0.6, 0.6)
this:SetBackdropColor(0, 0, 0, 0)
this:SetBackdropBorderColor(0.6, 0.6, 0.6)
getglobal(self:GetName() .. "Label"):SetText("Gameplay")getglobal(self:GetName() .. "Label"):SetText("System")self:SetScrollChild(BenillaOptionsFrameContainerBody)OptionsScroll_Fit()BenillaScroll_OnMouseWheel(this, arg1)BenillaScroll_SyncBar(this)BenillaScroll_SyncBar(this)
OptionsRow_OnLoad(self, "deselectOnClick", "Sticky Targeting",
"OPTION_TOOLTIP_GAMEFIELD_DESELECT")
self.invert = 1
OptionsRow_OnLoad(self, "assistAttack", "Attack on assist",
"OPTION_TOOLTIP_ASSIST_ATTACK")
OptionsRow_OnLoad(self, "autoClearAFK", "Auto Clear AFK",
"OPTION_TOOLTIP_CLEAR_AFK")
OptionsRow_OnLoad(self, "BlockTrades", "Block Trades",
"OPTION_TOOLTIP_BLOCK_TRADES")
OptionsRow_OnLoad(self, "autoSelfCast", "Auto Self Cast",
"OPTION_TOOLTIP_AUTO_SELF_CAST")
OptionsRow_OnLoad(self, "autoLootDefault", "Auto Loot")OptionsRow_OnLoad(self, "mouseInvertPitch", "Invert Mouse",
"OPTION_TOOLTIP_INVERT_MOUSE")
OptionsRow_OnLoad(self, "mousespeed", "Mouse Sensitivity",
"OPTION_TOOLTIP_MOUSE_SENSITIVITY")
OptionsSliderRow_Setup(self, 0.5, 1.5, 0.05)
OptionsRow_OnLoad(self, "cameraSmoothStyle",
"Camera Following Style", "OPTION_TOOLTIP_CAMERA1")
OptionsDropdownRow_Setup(self, {
{ text = "Smart", value = "1", tip = "OPTION_TOOLTIP_CAMERA1" },
{ text = "Always", value = "2", tip = "OPTION_TOOLTIP_CAMERA2" },
{ text = "Never", value = "0", alt = "3", tip = "OPTION_TOOLTIP_CAMERA3" },
})
OptionsRow_OnLoad(self, "cameraTerrainTilt", "Follow Terrain",
"OPTION_TOOLTIP_FOLLOW_TERRAIN")
OptionsRow_OnLoad(self, "cameraBobbing", "Head Bob",
"OPTION_TOOLTIP_HEAD_BOB")
OptionsRow_OnLoad(self, "cameraYawSmoothSpeed", "Auto-Follow Speed",
"OPTION_TOOLTIP_AUTO_FOLLOW_SPEED")
OptionsSliderRow_Setup(self, 90, 270, 10, "raw")
OptionsRow_OnLoad(self, "cameraWaterCollision", "Water Collision",
"OPTION_TOOLTIP_WATER_COLLISION")
OptionsRow_OnLoad(self, "cameraPivot", "Smart Pivot",
"OPTION_TOOLTIP_SMART_PIVOT")
OptionsRow_OnLoad(self, "cameraYawMoveSpeed", "Mouse Look Speed",
"OPTION_TOOLTIP_MOUSE_LOOK_SPEED")
OptionsSliderRow_Setup(self, 90, 270, 10, "raw")
self.partner = { cvar = "cameraPitchMoveSpeed", scale = 0.5 }
OptionsRow_OnLoad(self, "cameraDistanceMaxFactor",
"Max Camera Distance", "OPTION_TOOLTIP_MAX_FOLLOW_DIST")
OptionsSliderRow_Setup(self, 1.0, 2.0, 0.1, "yards")
OptionsRow_OnLoad(self, "MasterSoundEffects", "Enable All Sound",
"OPTION_TOOLTIP_ENABLE_ALL_SOUND")
self.soundQuirk = 1
OptionsRow_OnLoad(self, "MasterVolume", "Master Volume",
"OPTION_TOOLTIP_MASTER_VOLUME")
OptionsRow_OnLoad(self, "SoundVolume", "Sound Volume",
"OPTION_TOOLTIP_SOUND_VOLUME", 1)
self.parentRow = "RowMaster"
OptionsRow_OnLoad(self, "MusicVolume", "Music Volume",
"OPTION_TOOLTIP_MUSIC_VOLUME", 1)
self.parentRow = "RowMaster"
OptionsRow_OnLoad(self, "AmbienceVolume", "Ambience Volume",
"OPTION_TOOLTIP_AMBIENCE_VOLUME", 1)
self.parentRow = "RowMaster"
OptionsRow_OnLoad(self, "EnableMusic", "Enable Music",
"OPTION_TOOLTIP_ENABLE_MUSIC")
self.soundQuirk = 1
OptionsRow_OnLoad(self, "EnableAmbience", "Enable Ambience",
"OPTION_TOOLTIP_ENABLE_AMBIENCE")
self.soundQuirk = 1
OptionsRow_OnLoad(self, "EnableErrorSpeech", "Enable Error Speech",
"OPTION_TOOLTIP_ENABLE_ERROR_SPEECH")
self.soundQuirk = 1
OptionsRow_OnLoad(self, "Sound_EnableSoundWhenGameIsInBG",
"Enable Sound in Background",
"BENILLA_TOOLTIP_BACKGROUND_SOUND")
self.soundQuirk = 1
OptionsRow_OnLoad(self, "uiScale", "UI Scale",
"OPTION_TOOLTIP_UI_SCALE")
OptionsSliderRow_Setup(self, OptionsFrameSliders[1].minValue,
OptionsFrameSliders[1].maxValue,
OptionsFrameSliders[1].valueStep)
-- A live write would rescale the slider mid-drag.
self.deferred = 1
OptionsRow_OnLoad(self, "farclip", "Terrain Distance",
"OPTION_TOOLTIP_FARCLIP")
OptionsSliderRow_Setup(self, OptionsFrameSliders[2].minValue,
OptionsFrameSliders[2].maxValue,
OptionsFrameSliders[2].valueStep, "raw")
OptionsRow_OnLoad(self, "WorldDetail", "Environment Detail",
"OPTION_TOOLTIP_ENVIRONMENT_DETAIL")
-- Stop names from the era quality ladder.
OptionsSliderRow_Setup(self, OptionsFrameSliders[3].minValue,
OptionsFrameSliders[3].maxValue,
OptionsFrameSliders[3].valueStep, nil,
{ "Low", "Medium", "High" })
-- OptionsFrame_SetDefaults' default (l.444-445);
-- `or 1` covers a VM with no CVars.
local gd = tonumber(GetCVarDefault("gamma")) or 1
OptionsNumFuncRow_OnLoad(self, GetGamma, SetGamma,
tostring(1 - gd), "Brightness",
"BENILLA_TOOLTIP_BRIGHTNESS")
OptionsSliderRow_Setup(self, OptionsFrameSliders[6].minValue,
OptionsFrameSliders[6].maxValue,
OptionsFrameSliders[6].valueStep, "travel")
-- Index 7 of OptionsFrameSliders, seated where the
-- reference's own slider order puts it: after
-- Brightness, before Weather Intensity. Before this
-- the row was a hole, so the only way to anisotropy
-- was `/console anisotropic 16` — and a player on a
-- Custom graphics preset never met it at all, since
-- the preset ladder is what seeds the value.
OptionsRow_OnLoad(self, "anisotropic", "Anisotropic Filtering",
"BENILLA_TOOLTIP_ANISOTROPIC")
-- 1 to 16, the CVar's own range (`ANISO_RANGE`),
-- not the stock table's 1-4 — see
-- BENILLA_GRAPHICS_SLIDER_ROWS. Step 1 rather than
-- a power-of-two ladder because the value is a
-- MAXIMUM the driver is free to round down: an
-- off-ladder stop is a weaker setting, never a
-- wrong one, which is the test `RowShadowResolution`
-- fails and so takes a dropdown instead.
OptionsSliderRow_Setup(self, 1, 16, 1, "aniso")
-- DEFERRED to Apply, as Render Scale below it is,
-- and for the same kind of reason: the commit
-- re-samples every resident texture and rebuilds
-- the bind group of every material that names one
-- (`benilla_world::tex_filter_live`). That is
-- cheap once and silly sixteen times, which is
-- what a drag across this groove would ask for.
--
-- It does NOT need a restart, though the reference
-- says so of its own row: its sampler state lived
-- inside each TextureCreate and it kept no list of
-- live textures. Ours re-stamps them in place.
self.deferred = 1
-- The other half of the filter policy
-- (`tex_filter.rs`), under the row that outranks
-- it: `anisotropic` at 2 or more writes mode 5 and
-- this writes mode 4 only while that bit is clear
-- (`0x688d0d`). So the row is greyed, not hidden,
-- when anisotropy is on — it still holds the value
-- a player set, and turning anisotropy off hands
-- it back.
OptionsRow_OnLoad(self, "trilinear", "Trilinear Filtering",
"BENILLA_TOOLTIP_TRILINEAR")
-- Deferred for the same reason its neighbour is:
-- the commit re-samples every resident texture,
-- and a player changing both rows should pay that
-- once rather than twice.
self.deferred = 1
OptionsRow_OnLoad(self, "weatherDensity", "Weather Intensity",
"OPTION_TOOLTIP_WEATHER_DETAIL")
-- Our names for `0x67b870`'s spawn-rate gains
-- `{0.1, 0.33, 0.66, 1.0}` (`[0x8680ec]`).
OptionsSliderRow_Setup(self, OptionsFrameSliders[9].minValue,
OptionsFrameSliders[9].maxValue,
OptionsFrameSliders[9].valueStep, nil,
{ "Minimal", "Low", "Medium", "Full" })
-- Deviation: modern Classic's two-entry Display
-- Mode, as there is no exclusive fullscreen;
-- gxWindow "0" is the borderless window.
-- Latched, like the other two video rows.
self.deferred = 1
OptionsRow_OnLoad(self, "gxWindow", "Display Mode",
"BENILLA_TOOLTIP_DISPLAY_MODE")
OptionsDropdownRow_Setup(self, {
{ text = "Windowed (Fullscreen)", value = "0" },
{ text = "Windowed", value = "1" },
})
-- The window size. Backed by the index verbs, not
-- by `gxResolution` directly: `SetScreenResolution`
-- is 1-based into `GetScreenResolutions`, and
-- `GetCurrentResolution` reports the *live* window
-- rather than the CVar, which in borderless
-- fullscreen are not the same thing.
--
-- Built from the real list, so the entries are
-- whatever this monitor actually offers. 1.12's
-- own video panel had this row; benilla shipped
-- the display-mode and vsync rows without it, so
-- there was no way to resize from inside the game.
-- `rebuild`, not a list baked here: at OnLoad
-- the engine has pushed no modes yet, so a list
-- built now is empty for the whole session.
self.rebuild = OptionsResolutionRow_Rebuild
self.deferred = 1
OptionsNumFuncRow_OnLoad(self,
GetCurrentResolution, SetScreenResolution,
"1", "Resolution",
"BENILLA_TOOLTIP_RESOLUTION")
OptionsResolutionRow_Rebuild(self)
OptionsDropdownRow_Setup(self, self.entries)
-- Deferred: `gxVSync` is registered **latched**
-- (`cvars.rs`), so a write only stages until
-- `RestartGx`, which is what Apply calls. An
-- earlier comment here said "vsync changes live"
-- — it cannot, and that mismatch is why the
-- setting came back on after a relaunch.
self.deferred = 1
OptionsRow_OnLoad(self, "gxVSync", "Vertical Sync",
"OPTION_TOOLTIP_VERTICAL_SYNC")
-- 1.12 had this row and benilla did not, so the
-- only way to multisampling was `/console
-- gxMultisample 4`. Backed by the index verbs the
-- reference's own dropdown uses — `0x48c580` /
-- `0x48c640` — not by `gxMultisample` directly,
-- because picking a format writes the colour and
-- depth rows with it, as one record.
--
-- `rebuild` for the same reason the resolution row
-- has one: at OnLoad the engine has published no
-- formats yet, so a list baked now is empty for
-- the whole session.
self.rebuild = OptionsMultisampleRow_Rebuild
-- Latched (`cvars.rs`, flags 3), so a write only
-- stages host-side until `RestartGx` — which is
-- what Apply calls. Without this the row would
-- write through, no Apply button would appear, and
-- the setting would look like it did not persist:
-- exactly the bug Vertical Sync had.
self.deferred = 1
OptionsNumFuncRow_OnLoad(self,
GetCurrentMultisampleFormat, SetMultisampleFormat,
"1", "Multisampling",
"BENILLA_TOOLTIP_MULTISAMPLING")
OptionsMultisampleRow_Rebuild(self)
OptionsDropdownRow_Setup(self, self.entries)
-- Deviation: our own row (the reference draws to
-- the backbuffer), and no Multisampling, which
-- misses alpha-tested cutouts. Deferred: a write
-- rebuilds the render target.
OptionsRow_OnLoad(self, "renderScale", "Render Scale",
"BENILLA_TOOLTIP_RENDER_SCALE")
OptionsSliderRow_Setup(self, 0.5, 2.0, 0.05)
self.deferred = 1
-- Our own row, and not in the reference's slider
-- table, so it stays out of
-- BENILLA_GRAPHICS_SLIDER_ROWS as Render Scale
-- above it does. `raw`, because the groove's unit
-- IS the number: the default percent format would
-- read 45 degrees as "4500%".
--
-- NOT deferred: the lens is re-stamped onto the
-- projection every frame
-- (`player::scoped_view::apply_scoped_view`), so
-- a drag is the only way to pick a field of view
-- and nothing has to be rebuilt to honour it.
OptionsRow_OnLoad(self, "fieldOfView",
"Field of View",
"BENILLA_TOOLTIP_FIELD_OF_VIEW")
OptionsSliderRow_Setup(self, 40, 70, 1, "raw")
for i, name in BENILLA_GRAPHICS_SLIDER_ROWS do
local info = OptionsFrameSliders[i]
local row = getglobal(this:GetName() .. name)
if ( info and row ) then
OptionsSliderRow_Setup(row, info.minValue, info.maxValue,
info.valueStep, row.fmt, row.stops)
end
end
OptionsRow_OnLoad(self, "graphicsQuality",
BENILLA_ADVGFX.graphicsQuality,
"BENILLA_TOOLTIP_GRAPHICS_QUALITY")
self.preset = 1
OptionsDropdownRow_Setup(self, {
{ text = BENILLA_ADVGFX.pClassic, value = "Classic" },
{ text = BENILLA_ADVGFX.qLow, value = "Low" },
{ text = BENILLA_ADVGFX.qMedium, value = "Medium" },
{ text = BENILLA_ADVGFX.qHigh, value = "High" },
{ text = BENILLA_ADVGFX.qUltra, value = "Ultra" },
{ text = BENILLA_ADVGFX.qCustom, value = "Custom" },
})
OptionsRow_OnLoad(self, "farclip",
BENILLA_ADVGFX.renderDistance,
"BENILLA_TOOLTIP_RENDER_DISTANCE")
OptionsSliderRow_Setup(self, 177, 1497, 60, "yd")
-- The preset ladder. This row writes ONE CVar and
-- nothing else: the host's own table
-- (`cvars::LIGHTING_PRESETS`) answers the write by
-- setting the member rows, and re-derives this
-- row's value from them every frame — which is why
-- Custom is an entry the capsule can SHOW but
-- picking it writes nothing anyone keeps.
--
-- The table is deliberately NOT here. Three other
-- ways reach the same ladder (the console, the
-- native lighting panel, a hand-edited
-- config.toml), and a copy carried by this window
-- would be a copy the other three cannot see.
-- The page's OnUpdate poll is what brings the
-- member rows' new values back onto the screen.
OptionsRow_OnLoad(self, "lightingQuality",
BENILLA_ADVGFX.lightingQuality,
"BENILLA_TOOLTIP_LIGHTING_QUALITY")
OptionsDropdownRow_Setup(self, {
{ text = BENILLA_ADVGFX.qOff, value = "Off" },
{ text = BENILLA_ADVGFX.qLow, value = "Low" },
{ text = BENILLA_ADVGFX.qMedium, value = "Medium" },
{ text = BENILLA_ADVGFX.qHigh, value = "High" },
{ text = BENILLA_ADVGFX.qUltra, value = "Ultra" },
{ text = BENILLA_ADVGFX.qCustom, value = "Custom" },
})
OptionsRow_OnLoad(self, "waterQuality",
BENILLA_ADVGFX.waterQuality,
"BENILLA_TOOLTIP_WATER_QUALITY")
OptionsDropdownRow_Setup(self, {
{ text = BENILLA_ADVGFX.waterClassic, value = "0" },
{ text = BENILLA_ADVGFX.waterEnhanced, value = "1" },
{ text = BENILLA_ADVGFX.waterHigh, value = "2" },
{ text = BENILLA_ADVGFX.waterUltra, value = "3" },
})
OptionsRow_OnLoad(self, "volumetricFog", BENILLA_ADVGFX.volumetricFog,
"BENILLA_TOOLTIP_VOLUMETRIC_FOG")
OptionsDropdownRow_Setup(self, {
{ text = BENILLA_ADVGFX.fogOff, value = "0" },
{ text = BENILLA_ADVGFX.qLow, value = "1" },
{ text = BENILLA_ADVGFX.qHigh, value = "2" },
-- GFX (froxel volumetrics)
{ text = BENILLA_ADVGFX.fogVolume, value = "3" },
})
OptionsRow_OnLoad(self, "volumetricFogShadow",
BENILLA_ADVGFX.volumetricFogShadow,
"BENILLA_TOOLTIP_VOLUMETRIC_FOG_SHADOW")
OptionsSliderRow_Setup(self, 0, 2, 0.25)
OptionsRow_OnLoad(self, "skyQuality", BENILLA_ADVGFX.skyQuality,
"BENILLA_TOOLTIP_SKY_QUALITY")
OptionsDropdownRow_Setup(self, {
{ text = BENILLA_ADVGFX.waterClassic, value = "0" },
{ text = BENILLA_ADVGFX.waterEnhanced, value = "1" },
{ text = BENILLA_ADVGFX.waterHigh, value = "2" },
})
OptionsRow_OnLoad(self, "bloom", BENILLA_ADVGFX.bloom,
"BENILLA_TOOLTIP_BLOOM")
OptionsDropdownRow_Setup(self, {
{ text = BENILLA_ADVGFX.fogOff, value = "0" },
{ text = BENILLA_ADVGFX.qLow, value = "1" },
{ text = BENILLA_ADVGFX.qHigh, value = "2" },
})
OptionsRow_OnLoad(self, "sunShafts", BENILLA_ADVGFX.sunShafts,
"BENILLA_TOOLTIP_SUN_SHAFTS")
OptionsRow_OnLoad(self, "colorGrading", BENILLA_ADVGFX.colorGrading,
"BENILLA_TOOLTIP_COLOR_GRADING")
-- With the other screen effects, because that is
-- what it is: one pass over the finished frame.
-- The tiers are named rather than numbered because
-- what each one sets is a CEILING on the gain, and
-- "2x" would read as the amount applied rather
-- than as the most that ever will be.
OptionsRow_OnLoad(self, "autoExposure",
BENILLA_ADVGFX.autoExposure,
"BENILLA_TOOLTIP_AUTO_EXPOSURE")
OptionsDropdownRow_Setup(self, {
{ text = BENILLA_ADVGFX.qOff, value = "0" },
{ text = BENILLA_ADVGFX.aeSubtle, value = "1" },
{ text = BENILLA_ADVGFX.aeFull, value = "2" },
})
-- 0..1, the CVar's own clamp; no `fmt`, so the
-- default percent reads the blend as a percentage
-- of the chosen tier, which is what it is.
OptionsRow_OnLoad(self, "autoExposureStrength",
BENILLA_ADVGFX.autoExposureStrength,
"BENILLA_TOOLTIP_AUTO_EXPOSURE_STRENGTH",
1)
OptionsSliderRow_Setup(self, 0, 1, 0.05)
OptionsRow_OnLoad(self, "sharpening",
BENILLA_ADVGFX.sharpening,
"BENILLA_TOOLTIP_SHARPENING")
OptionsDropdownRow_Setup(self, {
{ text = BENILLA_ADVGFX.qOff, value = "0" },
{ text = BENILLA_ADVGFX.qLow, value = "1" },
{ text = BENILLA_ADVGFX.qMedium, value = "2" },
{ text = BENILLA_ADVGFX.qHigh, value = "3" },
})
OptionsRow_OnLoad(self, "characterShadows",
BENILLA_ADVGFX.characterShadows,
"BENILLA_TOOLTIP_CHARACTER_SHADOWS")
OptionsRow_OnLoad(self, "worldShadows",
BENILLA_ADVGFX.worldShadows,
"BENILLA_TOOLTIP_WORLD_SHADOWS")
-- Realtime-shadow render distance (yd): the cascade
-- range + caster reach. 40-200, matching the CVar's
-- own clamp (SHADOW_DISTANCE_RANGE). DEFERRED to
-- Apply so a drag doesn't re-fit the cascade + recollect
-- casters on every tick (one rebuild on commit instead).
OptionsRow_OnLoad(self, "shadowDistance",
BENILLA_ADVGFX.shadowDistance,
"BENILLA_TOOLTIP_SHADOW_DISTANCE")
-- `"yd"`, not `"yards"`: the value is already a
-- distance in yards, where the format beside it
-- multiplies a FACTOR by the 15 yd camera base.
-- This row rode the wrong one from the day it was
-- seated and printed "1200 yd" for an 80 yd
-- cascade.
OptionsSliderRow_Setup(self, 40, 200, 10, "yd")
self.deferred = 1
-- The three stops the CVar's own snap accepts
-- (`shadow_core::SHADOW_MAP_SIZES`): a dropdown
-- rather than a slider because an off-ladder value
-- is not a weaker setting, it is one the renderer
-- rounds UP into a bigger and slower map than the
-- one that was asked for. The entry texts are the
-- numbers themselves — nothing to translate.
OptionsRow_OnLoad(self, "shadowMapSize",
BENILLA_ADVGFX.shadowResolution,
"BENILLA_TOOLTIP_SHADOW_RESOLUTION")
OptionsDropdownRow_Setup(self, {
{ text = "1024", value = "1024" },
{ text = "2048", value = "2048" },
{ text = "4096", value = "4096" },
})
-- 0 is the card's own 2x2 comparison (one
-- sample), 1 the 9-tap gaussian — the whole
-- `shadowFilter` ladder (`MAX_SHADOW_FILTER` is 1),
-- which is why this is a checkbox and not the
-- dropdown Shadow Resolution gets. Bevy's third
-- mode, Temporal, is deliberately not offered: it
-- only resolves under TAA, which this camera does
-- not run, so it would read as noise.
OptionsRow_OnLoad(self, "shadowFilter",
BENILLA_ADVGFX.shadowFilter,
"BENILLA_TOOLTIP_SHADOW_FILTER")
-- `CASTER_REACH_RANGE`, 0.25..2. The floor is not
-- 0 on purpose: a 0 reach admits no caster at all
-- and would read as "shadows broke", which is what
-- the two toggles above are for. No `fmt`, so the
-- default percent formatting applies and the
-- untouched reach law reads as 100%.
OptionsRow_OnLoad(self, "shadowCasterReach",
BENILLA_ADVGFX.shadowCasterReach,
"BENILLA_TOOLTIP_SHADOW_CASTER_RANGE")
OptionsSliderRow_Setup(self, 0.25, 2.0, 0.05)
-- DEFERRED: a drag re-collects the whole caster
-- set on every step.
self.deferred = 1
-- `MAX_SHADOW_RATE`, 0..120, where 0 is "every
-- frame" and not "never" — see the `hz` format.
-- Step 10: the knob is a coarse budget dial, and
-- 121 stops of a 1 Hz grid is not a choice anyone
-- makes.
OptionsRow_OnLoad(self, "characterShadowRate",
BENILLA_ADVGFX.characterShadowRate,
"BENILLA_TOOLTIP_CHARACTER_SHADOW_UPDATES")
OptionsSliderRow_Setup(self, 0, 120, 10, "hz")
-- The world lane's twin of the row above.
OptionsRow_OnLoad(self, "worldShadowRate",
BENILLA_ADVGFX.worldShadowRate,
"BENILLA_TOOLTIP_WORLD_SHADOW_UPDATES")
OptionsSliderRow_Setup(self, 0, 120, 10, "hz")
-- 0..1, the CVar's own clamp, and 0 is the FAITHFUL
-- null rather than a floor: every consumer guards
-- on it, so the left end of this groove is the
-- night the client rendered before the moon lane
-- existed.
OptionsRow_OnLoad(self, "moonShadowStrength",
BENILLA_ADVGFX.moonShadows,
"BENILLA_TOOLTIP_MOON_SHADOWS")
OptionsSliderRow_Setup(self, 0, 1, 0.05)
OptionsRow_OnLoad(self, "interiorLight",
BENILLA_ADVGFX.interiorLight,
"BENILLA_TOOLTIP_INTERIOR_LIGHT")
-- The CVar's own clamp, 0.25..8, and the
-- shipped 2.5 lands on a stop. No `fmt`: the value
-- IS a multiplier, so the default percent reads
-- "250%" and means it.
OptionsRow_OnLoad(self, "interiorExposure",
BENILLA_ADVGFX.interiorExposure,
"BENILLA_TOOLTIP_INTERIOR_LIGHT_BUDGET")
OptionsSliderRow_Setup(self, 0.25, 8, 0.25)
-- The groove offers 0..0.1 inside the CVar's
-- own 0..1, as `RowRenderScale` offers 50..200%
-- inside a 0.25..4 clamp: ambient is a FLOOR under
-- every indoor surface, the shipped value is
-- 0.015, and past about 0.1 a room is not lit, it
-- is fogged. `/console` still reaches the rest.
-- "travel", because the number has no unit a
-- player could read — the dial's own position is
-- the honest readout.
OptionsRow_OnLoad(self, "interiorAmbient",
BENILLA_ADVGFX.interiorAmbient,
"BENILLA_TOOLTIP_INTERIOR_AMBIENT")
OptionsSliderRow_Setup(self, 0, 0.1, 0.005, "travel")
-- In `interiorAmbient`'s own units, so it
-- takes that row's groove. Ships at 0, which is
-- the restore: the lane adds nothing until asked.
OptionsRow_OnLoad(self, "interiorDaylight",
BENILLA_ADVGFX.interiorDaylight,
"BENILLA_TOOLTIP_INDOOR_DAYLIGHT")
OptionsSliderRow_Setup(self, 0, 0.1, 0.005, "travel")
-- 0..2, the CVar's clamp; the shipped 0.08
-- lands on a stop and reads "8%".
OptionsRow_OnLoad(self, "interiorFill",
BENILLA_ADVGFX.interiorFill,
"BENILLA_TOOLTIP_INTERIOR_BOUNCE")
OptionsSliderRow_Setup(self, 0, 2, 0.02)
-- 0..8, the CVar's clamp. 0 is not "no
-- light": it switches the authored window OFF, so
-- every fixture reaches the whole room — which is
-- why the description says so rather than letting
-- the left end read as darkness.
OptionsRow_OnLoad(self, "interiorAttenScale",
BENILLA_ADVGFX.interiorAttenScale,
"BENILLA_TOOLTIP_INTERIOR_LIGHT_REACH")
OptionsSliderRow_Setup(self, 0, 8, 0.1)
-- A SHARE of the batch's own bake, so the
-- default percent is the right readout: the
-- shipped 0.12 reads "12%".
OptionsRow_OnLoad(self, "interiorBakeFloor",
BENILLA_ADVGFX.interiorBakeFloor,
"BENILLA_TOOLTIP_UNLIT_ROOM_FLOOR")
OptionsSliderRow_Setup(self, 0, 1, 0.02)
-- Kept as a dial because a room the gate
-- leaves on ambient alone looks exactly like a
-- bug, and this tells the two apart in one click
-- — which is a thing to be able to do from the
-- options window, not only from `/console`.
OptionsRow_OnLoad(self, "interiorRoomGate",
BENILLA_ADVGFX.interiorRoomGate,
"BENILLA_TOOLTIP_LIGHTS_STAY_IN_THEIR_ROOM")
OptionsRow_OnLoad(self, "interiorShadows",
BENILLA_ADVGFX.interiorShadows,
"BENILLA_TOOLTIP_INTERIOR_SHADOWS")
OptionsRow_OnLoad(self, "exteriorShadows",
BENILLA_ADVGFX.exteriorShadows,
"BENILLA_TOOLTIP_EXTERIOR_SHADOWS")
OptionsRow_OnLoad(self, "torchTerrainShadows",
BENILLA_ADVGFX.torchTerrainShadows,
"BENILLA_TOOLTIP_TORCH_TERRAIN_SHADOWS")
-- 0.5..3, the CVar's own clamp verbatim: it is a
-- SCALE on the PCF tap radius at a contact, so the
-- readout is a percentage of the shipped radius
-- and 100% is what the lane was tuned at.
OptionsRow_OnLoad(self, "interiorShadowSoft",
BENILLA_ADVGFX.torchSoft,
"BENILLA_TOOLTIP_TORCH_SOFT")
OptionsSliderRow_Setup(self, 0.5, 3, 0.1)
-- Beside the softness dial, since the two shape
-- the same shadow: how wide its edge is, and how
-- much light it removes. 0..1, the CVar's own
-- clamp; the shipped 0.7 leaves 30% of the direct
-- term standing in place of the bounce light this
-- renderer does not have.
OptionsRow_OnLoad(self, "torchShadowStrength",
BENILLA_ADVGFX.torchShadowStrength,
"BENILLA_TOOLTIP_TORCH_SHADOW_DARKNESS")
OptionsSliderRow_Setup(self, 0, 1, 0.05)
-- 1..16, the CVar's own clamp — the RESIDENT
-- map budget. "raw", because this is a count of
-- maps and a percentage of one would be nonsense.
OptionsRow_OnLoad(self, "interiorShadowCasters",
BENILLA_ADVGFX.interiorShadowCasters,
"BENILLA_TOOLTIP_INDOOR_SHADOW_MAPS")
OptionsSliderRow_Setup(self, 1, 16, 1, "raw")
-- 1..8 (`MAX_TORCH_DYNAMIC`), not the 0..16 the
-- registration's help line says: the observer
-- arm raises 0 to 1 and clamps to the cube-array
-- the depth pass actually has room for, so a
-- groove to 16 would offer seven stops that all
-- mean 8 and a zero that means 1.
OptionsRow_OnLoad(self, "interiorShadowDynamic",
BENILLA_ADVGFX.interiorShadowDynamic,
"BENILLA_TOOLTIP_MOVING_SHADOWS_INDOORS")
OptionsSliderRow_Setup(self, 1, 8, 1, "raw")
-- The same groove and the same `hz` readout as
-- the two sun-lane rate caps, inside this CVar's
-- wider 0..240; `0` is every frame there too.
-- This is the row that actually costs frame time
-- in the indoor lane — neither count dial above
-- moved it — which the description says.
OptionsRow_OnLoad(self, "interiorShadowEntityRate",
BENILLA_ADVGFX.interiorShadowEntityRate,
"BENILLA_TOOLTIP_MOVING_SHADOW_UPDATES")
OptionsSliderRow_Setup(self, 0, 120, 10, "hz")
-- Full 0..4 registry range, in five-percent steps.
OptionsRow_OnLoad(self, "fireLightGain",
BENILLA_ADVGFX.fireLight,
"BENILLA_TOOLTIP_FIRE_LIGHT")
OptionsSliderRow_Setup(self, 0, 4, 0.05)
-- 0..2, the CVar's own clamp verbatim: the
-- amplitudes are authored at 100%, and 200% is the
-- deliberate over-drive for judging the shape.
OptionsRow_OnLoad(self, "fireFlicker",
BENILLA_ADVGFX.fireFlicker,
"BENILLA_TOOLTIP_FIRE_FLICKER")
OptionsSliderRow_Setup(self, 0, 2, 0.05)
-- Full 0..4 registry range, in five-percent steps.
OptionsRow_OnLoad(self, "spellLightGain",
BENILLA_ADVGFX.spellLights,
"BENILLA_TOOLTIP_SPELL_LIGHTS")
OptionsSliderRow_Setup(self, 0, 4, 0.05)
OptionsRow_OnLoad(self, "lavaLightGain",
BENILLA_ADVGFX.lavaGlow,
"BENILLA_TOOLTIP_LAVA_GLOW")
OptionsSliderRow_Setup(self, 0, 4, 0.05)
-- 0.2..1.5, the CVar's own clamp verbatim: the
-- floor is 0.2 rather than 0 because a true 0 is
-- indistinguishable from a broken light pack, and
-- the "off" a player wants is the reference's own
-- night at gain 1.
--
-- The readout is `darkness` — travel read from the
-- right — because the stored unit is a GAIN while
-- the row is named for the darkness: left is
-- darker, and this is what makes the number say so
-- too. The store keeps the gain, untouched.
OptionsRow_OnLoad(self, "nightGain",
BENILLA_ADVGFX.nightDarkness,
"BENILLA_TOOLTIP_NIGHT_DARKNESS")
OptionsSliderRow_Setup(self, 0.2, 1.5, 0.05, "darkness")
-- The room lane's own dim dial, same clamp and same
-- backwards readout as the night one above it.
OptionsRow_OnLoad(self, "interiorGain",
BENILLA_ADVGFX.interiorDarkness,
"BENILLA_TOOLTIP_INTERIOR_DARKNESS")
OptionsSliderRow_Setup(self, 0.2, 1.5, 0.05, "darkness")
OptionsRow_OnLoad(self, "skyDither",
BENILLA_ADVGFX.skyDither,
"BENILLA_TOOLTIP_SKY_DITHER")
OptionsRow_OnLoad(self, "fogModel",
BENILLA_ADVGFX.fogModel,
"BENILLA_TOOLTIP_FOG_MODEL")
OptionsRow_OnLoad(self, "rainSurfaces",
BENILLA_ADVGFX.rainSurfaces,
"BENILLA_TOOLTIP_RAIN_SURFACES")
OptionsRow_OnLoad(self, "foliageWind",
BENILLA_ADVGFX.foliageWind,
"BENILLA_TOOLTIP_FOLIAGE_WIND")
OptionsDropdownRow_Setup(self, {
{ text = BENILLA_ADVGFX.qOff, value = "0" },
{ text = BENILLA_ADVGFX.windGrass, value = "1" },
{ text = BENILLA_ADVGFX.windTrees, value = "2" },
})
OptionsRow_OnLoad(self, "foliageWindStrength",
BENILLA_ADVGFX.foliageWindStrength,
"BENILLA_TOOLTIP_FOLIAGE_WIND_STRENGTH")
OptionsSliderRow_Setup(self, 0.25, 3, 0.25)
OptionsRow_OnLoad(self, "foliageDistance",
BENILLA_ADVGFX.foliageDistance,
"BENILLA_TOOLTIP_FOLIAGE_DISTANCE")
-- `"yd"`: the stored value already IS a distance in
-- yards, like Shadow Distance beside it.
OptionsSliderRow_Setup(self, 70, 300, 10, "yd")
self.deferred = 1
OptionsRow_OnLoad(self, "ambientOcclusion", BENILLA_ADVGFX.ambientOcclusion,
"BENILLA_TOOLTIP_AMBIENT_OCCLUSION")
OptionsDropdownRow_Setup(self, {
{ text = BENILLA_ADVGFX.fogOff, value = "0" },
{ text = BENILLA_ADVGFX.qLow, value = "1" },
{ text = BENILLA_ADVGFX.qHigh, value = "2" },
-- GFX (ssilvb)
{ text = BENILLA_ADVGFX.aoIndirect, value = "3" },
})
OptionsRow_OnLoad(self, "lampFog", BENILLA_ADVGFX.lampFog,
"BENILLA_TOOLTIP_LAMP_FOG")
OptionsDropdownRow_Setup(self, {
{ text = BENILLA_ADVGFX.fogOff, value = "0" },
{ text = BENILLA_ADVGFX.qLow, value = "1" },
{ text = BENILLA_ADVGFX.qHigh, value = "2" },
})
OptionsRow_OnLoad(self, "daylightWindowSplit",
BENILLA_ADVGFX.daylightWindowSplit,
"BENILLA_TOOLTIP_DAYLIGHT_WINDOW_SPLIT")
OptionsRow_OnLoad(self, "zoneSkyboxes",
BENILLA_ADVGFX.zoneSkyboxes,
"BENILLA_TOOLTIP_ZONE_SKYBOXES")
OptionsRow_OnLoad(self, "volumetricLight", BENILLA_ADVGFX.volumetricLight,
"BENILLA_TOOLTIP_VOLUMETRIC_LIGHT")
OptionsDropdownRow_Setup(self, {
{ text = BENILLA_ADVGFX.fogOff, value = "0" },
{ text = BENILLA_ADVGFX.qMedium, value = "1" },
{ text = BENILLA_ADVGFX.qHigh, value = "2" },
})
OptionsRow_OnLoad(self, "volumetricLightStrength",
BENILLA_ADVGFX.volumetricLightStrength,
"BENILLA_TOOLTIP_VOLUMETRIC_LIGHT_STRENGTH")
OptionsSliderRow_Setup(self, 0, 2, 0.25)
OptionsRow_OnLoad(self, "moonLight", BENILLA_ADVGFX.moonLight,
"BENILLA_TOOLTIP_MOONLIGHT")
OptionsSliderRow_Setup(self, 0, 2, 0.25)
AdvGfx_OnUpdate(this, arg1)
OptionsGlobalRow_OnLoad(self, "SHOW_COMBAT_TEXT",
"Enable Floating Combat Text", "OPTION_TOOLTIP_SHOW_COMBAT_TEXT")
self.applyFunc = "CombatText_UpdateOrLoad"
OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_FLOAT_MODE",
"Combat Text Float Mode", "OPTION_TOOLTIP_COMBAT_TEXT_MODE", 1)
OptionsDropdownRow_Setup(self, {
{ text = "Scroll Up", value = "1" },
{ text = "Scroll Down", value = "2" },
{ text = "Arc", value = "3" },
})
self.parentRow = "RowCombatText"
self.applyFunc = "CombatText_UpdateOrLoad"
OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_LOW_HEALTH_MANA",
"Show Low Mana and Health",
"OPTION_TOOLTIP_COMBAT_TEXT_SHOW_LOW_HEALTH_MANA", 1)
self.parentRow = "RowCombatText"
self.applyFunc = "CombatText_UpdateOrLoad"
OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_AURAS",
"Show Auras", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_AURAS", 1)
self.parentRow = "RowCombatText"
self.applyFunc = "CombatText_UpdateOrLoad"
OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_AURA_FADE",
"Show Fading Auras", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_AURA_FADE", 1)
self.parentRow = "RowCombatText"
self.applyFunc = "CombatText_UpdateOrLoad"
OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_COMBAT_STATE",
"Show Combat State",
"OPTION_TOOLTIP_COMBAT_TEXT_SHOW_COMBAT_STATE", 1)
self.parentRow = "RowCombatText"
self.applyFunc = "CombatText_UpdateOrLoad"
OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_DODGE_PARRY_MISS",
"Show Dodge/Parries/Misses",
"OPTION_TOOLTIP_COMBAT_TEXT_SHOW_DODGE_PARRY_MISS", 1)
self.parentRow = "RowCombatText"
self.applyFunc = "CombatText_UpdateOrLoad"
OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_RESISTANCES",
"Show Damage Reduction",
"OPTION_TOOLTIP_COMBAT_TEXT_SHOW_RESISTANCES", 1)
self.parentRow = "RowCombatText"
self.applyFunc = "CombatText_UpdateOrLoad"
OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_REPUTATION",
"Show Reputation",
"OPTION_TOOLTIP_COMBAT_TEXT_SHOW_REPUTATION", 1)
self.parentRow = "RowCombatText"
self.applyFunc = "CombatText_UpdateOrLoad"
OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_REACTIVES",
"Show Reactive Spells and Abilities",
"OPTION_TOOLTIP_COMBAT_TEXT_SHOW_REACTIVES", 1)
self.parentRow = "RowCombatText"
self.applyFunc = "CombatText_UpdateOrLoad"
OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_FRIENDLY_NAMES",
"Show Friendly Healer Names",
"OPTION_TOOLTIP_COMBAT_TEXT_SHOW_FRIENDLY_NAMES", 1)
self.parentRow = "RowCombatText"
self.applyFunc = "CombatText_UpdateOrLoad"
OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_COMBO_POINTS",
"Show Combo Points",
"OPTION_TOOLTIP_COMBAT_TEXT_SHOW_COMBO_POINTS", 1)
self.parentRow = "RowCombatText"
self.applyFunc = "CombatText_UpdateOrLoad"
OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_MANA",
"Show Energy Gains",
"OPTION_TOOLTIP_COMBAT_TEXT_SHOW_MANA", 1)
self.parentRow = "RowCombatText"
self.applyFunc = "CombatText_UpdateOrLoad"
OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_HONOR_GAINED",
"Show Honor Gained",
"OPTION_TOOLTIP_COMBAT_TEXT_SHOW_HONOR_GAINED", 1)
self.parentRow = "RowCombatText"
self.applyFunc = "CombatText_UpdateOrLoad"
OptionsRow_OnLoad(self, "CombatDamage", "Show Target Damage",
"OPTION_TOOLTIP_SHOW_DAMAGE")
OptionsRow_OnLoad(self, "CombatLogPeriodicSpells", "Periodic Damage",
"OPTION_TOOLTIP_LOG_PERIODIC_EFFECTS", 1)
self.parentRow = "RowShowDamage"
OptionsRow_OnLoad(self, "PetMeleeDamage", "Pet Damage",
"OPTION_TOOLTIP_SHOW_PET_MELEE_DAMAGE", 1)
self.parentRow = "RowShowDamage"
self.partner = { cvar = "PetSpellDamage" }
OptionsFuncRow_OnLoad(self,
function() return SHOW_MULTI_ACTIONBAR_1 end,
function(value)
local on
if value and value ~= "0" and value ~= 0 then on = 1 end
SHOW_MULTI_ACTIONBAR_1 = on
MultiActionBar_Update()
SetActionBarToggles(SHOW_MULTI_ACTIONBAR_1, SHOW_MULTI_ACTIONBAR_2,
SHOW_MULTI_ACTIONBAR_3, SHOW_MULTI_ACTIONBAR_4)
UIParent_ManageFramePositions()
end,
"0", "Show Bottom Left ActionBar", "OPTION_TOOLTIP_SHOW_MULTIBAR1")
OptionsFuncRow_OnLoad(self,
function() return SHOW_MULTI_ACTIONBAR_2 end,
function(value)
local on
if value and value ~= "0" and value ~= 0 then on = 1 end
SHOW_MULTI_ACTIONBAR_2 = on
MultiActionBar_Update()
SetActionBarToggles(SHOW_MULTI_ACTIONBAR_1, SHOW_MULTI_ACTIONBAR_2,
SHOW_MULTI_ACTIONBAR_3, SHOW_MULTI_ACTIONBAR_4)
UIParent_ManageFramePositions()
end,
"0", "Show Bottom Right ActionBar", "OPTION_TOOLTIP_SHOW_MULTIBAR2")
OptionsFuncRow_OnLoad(self,
function() return SHOW_MULTI_ACTIONBAR_3 end,
function(value)
local on
if value and value ~= "0" and value ~= 0 then on = 1 end
SHOW_MULTI_ACTIONBAR_3 = on
MultiActionBar_Update()
SetActionBarToggles(SHOW_MULTI_ACTIONBAR_1, SHOW_MULTI_ACTIONBAR_2,
SHOW_MULTI_ACTIONBAR_3, SHOW_MULTI_ACTIONBAR_4)
UIParent_ManageFramePositions()
end,
"0", "Show Right ActionBar", "OPTION_TOOLTIP_SHOW_MULTIBAR3")
OptionsFuncRow_OnLoad(self,
function() return SHOW_MULTI_ACTIONBAR_4 end,
function(value)
local on
if value and value ~= "0" and value ~= 0 then on = 1 end
SHOW_MULTI_ACTIONBAR_4 = on
MultiActionBar_Update()
SetActionBarToggles(SHOW_MULTI_ACTIONBAR_1, SHOW_MULTI_ACTIONBAR_2,
SHOW_MULTI_ACTIONBAR_3, SHOW_MULTI_ACTIONBAR_4)
UIParent_ManageFramePositions()
end,
"0", "Show Right ActionBar 2", "OPTION_TOOLTIP_SHOW_MULTIBAR4", 1)
OptionsGlobalRow_OnLoad(self, "ALWAYS_SHOW_MULTIBARS",
"Always Show ActionBars", "OPTION_TOOLTIP_ALWAYS_SHOW_MULTIBARS")
-- UIOptionsFrame.xml:680-683's click arm.
self.applyFunc = "MultiActionBar_UpdateGridVisibility"
OptionsGlobalRow_OnLoad(self, "LOCK_ACTIONBAR",
"Lock ActionBars", "OPTION_TOOLTIP_LOCK_ACTIONBAR")
OptionsRow_OnLoad(self, "UberTooltips", "Enhanced Tooltips",
"OPTION_TOOLTIP_USE_UBERTOOLTIPS")
OptionsRow_OnLoad(self, "statusBarText",
"Status Bar Text", "OPTION_TOOLTIP_STATUS_BAR")
self.cvarEvent = "STATUS_BAR_TEXT"
OptionsGlobalRow_OnLoad(self, "SHOW_TARGET_OF_TARGET",
"Show Target of Target", "OPTION_TOOLTIP_SHOW_TARGET_OF_TARGET")
OptionsGlobalRow_OnLoad(self, "SHOW_TARGET_OF_TARGET_STATE",
"Show When", "OPTION_TOOLTIP_TARGETOFTARGET5", 1)
OptionsDropdownRow_Setup(self, {
{ text = "Raid", value = "1", tip = "OPTION_TOOLTIP_TARGETOFTARGET1" },
{ text = "Party", value = "2", tip = "OPTION_TOOLTIP_TARGETOFTARGET2" },
{ text = "Solo", value = "3", tip = "OPTION_TOOLTIP_TARGETOFTARGET3" },
{ text = "Party or Raid", value = "4", tip = "OPTION_TOOLTIP_TARGETOFTARGET4" },
{ text = "Always", value = "5", tip = "OPTION_TOOLTIP_TARGETOFTARGET5" },
})
OptionsFuncRow_OnLoad(self, ShowingCloak, ShowCloak, "1",
"Show Cloak", "OPTION_TOOLTIP_SHOW_CLOAK")
OptionsFuncRow_OnLoad(self, ShowingHelm, ShowHelm, "1",
"Show Helm", "OPTION_TOOLTIP_SHOW_HELM")
OptionsGlobalRow_OnLoad(self, "QUEST_FADING_DISABLE",
"Instant Quest Text", "OPTION_TOOLTIP_SHOW_QUEST_FADING")
OptionsGlobalRow_OnLoad(self, "SHOW_BUFF_DURATIONS",
"Buff Durations", "OPTION_TOOLTIP_SHOW_BUFF_DURATION")
self.applyFunc = "BuffButtons_UpdatePositions"
OptionsGlobalRow_OnLoad(self, "AUTO_QUEST_WATCH",
"Automatic Quest Tracking", "OPTION_TOOLTIP_AUTO_QUEST_WATCH")
OptionsRow_OnLoad(self, "profanityFilter", "Profanity Filter",
"OPTION_TOOLTIP_PROFANITY_FILTER")
OptionsFuncRow_OnLoad(self, TutorialsEnabled,
BenillaOptionsFrame_SetTutorialsEnabled, "1",
"Show Tutorials", "OPTION_TOOLTIP_SHOW_TUTORIALS")
OptionsRow_OnLoad(self, "showGameTips",
"Show Loading Screen Tips",
"OPTION_TOOLTIP_SHOW_TIPOFTHEDAY")
OptionsGlobalRow_OnLoad(self, "SHOW_NEWBIE_TIPS",
"Show Detailed Tooltips", "OPTION_TOOLTIP_SHOW_NEWBIE_TIPS")
OptionsRow_OnLoad(self, "guildMemberNotify",
"Guild Member Alert",
"OPTION_TOOLTIP_GUILDMEMBER_ALERT")
OptionsGlobalRow_OnLoad(self, "REMOVE_CHAT_DELAY",
"Remove Chat Hover Delay",
"OPTION_TOOLTIP_REMOVE_CHAT_DELAY")
self.applyFunc = "ChatFrame_ApplyMouseOverDelay"
OptionsRow_OnLoad(self, "ChatBubbles",
"Show Chat Bubbles", "OPTION_TOOLTIP_CHAT_BUBBLES")
OptionsRow_OnLoad(self, "showLootSpam",
"Detailed Loot Information",
"OPTION_TOOLTIP_SHOW_LOOT_SPAM")
OptionsRow_OnLoad(self, "ChatBubblesParty",
"Show Party Chat Bubbles", "OPTION_TOOLTIP_PARTY_CHAT_BUBBLES")
OptionsRow_OnLoad(self, "spamFilter", "Disable Spam Filter",
"OPTION_TOOLTIP_DISABLE_SPAM_FILTER")
self.invert = 1
OptionsRow_OnLoad(self, "nameplateShowEnemies",
"Enemy Name Plates")OptionsRow_OnLoad(self, "nameplateShowFriends",
"Friendly Name Plates")OptionsRow_OnLoad(self, "UnitNamePlayer", "Player Names",
"OPTION_TOOLTIP_SHOW_PLAYER_NAMES")
OptionsRow_OnLoad(self, "UnitNamePlayerGuild", "Player Guild Names",
"OPTION_TOOLTIP_SHOW_GUILD_NAMES", 1)
self.parentRow = "RowPlayerNames"
OptionsRow_OnLoad(self, "UnitNameNPC", "NPC Names",
"OPTION_TOOLTIP_SHOW_NPC_NAMES")OptionsRow_OnLoad(self, "UnitNameOwn", "Show Own Name",
"OPTION_TOOLTIP_SHOW_OWN_NAME")KeyBindings_CharacterToggle(this)
GameTooltip:SetOwner(this, "ANCHOR_RIGHT")
GameTooltip:SetText(KeyBindings_String("CHARACTER_SPECIFIC_KEYBINDING_TOOLTIP",
"Click this to toggle between general key bindings and key bindings specific to this character."), nil, nil, nil, nil, 1)
GameTooltip:Hide()
getglobal(this:GetName() .. "Label"):SetText(
KeyBindings_String("CHARACTER_SPECIFIC_KEYBINDINGS", "Character Specific Key Bindings"))
ScrollFrame_OnLoad()FauxScrollFrame_OnVerticalScroll(KEYBINDINGS_ROW_HEIGHT, KeyBindingsPage_Update)
if not KeyBindingsPage.selected then
ScrollFrameTemplate_OnMouseWheel(arg1)
end
if not KeyBindingsPage.selected then
BenillaFauxScrollFrame_OnMouseWheel(getglobal(this:GetName() .. "ScrollFrame"), arg1)
end
BenillaScrollBar_OnValueChanged(self, arg1)
if this:GetText() == "" then
BenillaOptionsFrameSearchBoxInstructions:Show()
BenillaOptionsFrameSearchBoxClearButton:Hide()
else
BenillaOptionsFrameSearchBoxInstructions:Hide()
BenillaOptionsFrameSearchBoxClearButton:Show()
end
OptionsSearch_OnTextChanged(this:GetText())
this:ClearFocus()
BenillaOptionsFrame_UpdateScale()
BenillaOptionsFrame_SelectCategory(this.selectedCategory or "Controls")
if UpdateMicroButtons then UpdateMicroButtons() end
BenillaOptionsFrameSearchBox:SetText("")
OptionsPage_DiscardPending()
KeyBindings_SetSelected(nil)
KeyBindings_Output("")
if UpdateMicroButtons then UpdateMicroButtons() end