diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 064e41af..8339effb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -48,7 +48,5 @@ jobs: run: scripts/doc-links.py - name: pass-span-lint run: scripts/pass-span-lint.py - - name: player-build - run: cargo build -p benilla --no-default-features - name: player-tests run: cargo test -p benilla-formats -p benilla-app --no-default-features --lib diff --git a/Cargo.lock b/Cargo.lock index aba3867d..7afa1b73 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -546,6 +546,7 @@ dependencies = [ "toml", "wgpu", "windows-sys 0.59.0", + "winit", ] [[package]] @@ -3048,15 +3049,6 @@ dependencies = [ "syn", ] -[[package]] -name = "encoding_rs" -version = "0.8.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" -dependencies = [ - "cfg-if", -] - [[package]] name = "epaint" version = "0.33.3" @@ -4120,7 +4112,7 @@ checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" [[package]] name = "kira" -version = "0.12.1" +version = "0.12.4" dependencies = [ "atomic-arena", "glam 0.33.2", @@ -5664,6 +5656,12 @@ dependencies = [ "regex-syntax", ] +[[package]] +name = "regex-lite" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab834c73d247e67f4fae452806d17d3c7501756d98c8808d7c9c7aa7d18f973" + [[package]] name = "regex-syntax" version = "0.8.10" @@ -6181,9 +6179,9 @@ dependencies = [ [[package]] name = "symphonia" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5773a4c030a19d9bfaa090f49746ff35c75dfddfa700df7a5939d5e076a57039" +checksum = "a7edef6a96b696d4e0cab5ee9ebb7ca155ed95f30a6b45bbb8b97d2727f02424" dependencies = [ "lazy_static", "symphonia-bundle-mp3", @@ -6196,21 +6194,20 @@ dependencies = [ [[package]] name = "symphonia-bundle-mp3" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4872dd6bb56bf5eac799e3e957aa1981086c3e613b27e0ac23b176054f7c57ed" +checksum = "98ea5ffc8716bff677dfb3b01b420c7b758de901a72b8c330bf2040ab74b4add" dependencies = [ "lazy_static", "log", "symphonia-core", - "symphonia-metadata", ] [[package]] name = "symphonia-codec-adpcm" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dddc50e2bbea4cfe027441eece77c46b9f319748605ab8f3443350129ddd07f" +checksum = "445932ecb0c59362fde9c082dd63a75380650c5077fdb8b80b8cac850442a74c" dependencies = [ "log", "symphonia-core", @@ -6218,9 +6215,9 @@ dependencies = [ [[package]] name = "symphonia-codec-pcm" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e89d716c01541ad3ebe7c91ce4c8d38a7cf266a3f7b2f090b108fb0cb031d95" +checksum = "e04ba75686acbe43542fdd374571195f0530c0b7785ca25cc6840e9c6c4b6eea" dependencies = [ "log", "symphonia-core", @@ -6228,22 +6225,23 @@ dependencies = [ [[package]] name = "symphonia-core" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea00cc4f79b7f6bb7ff87eddc065a1066f3a43fe1875979056672c9ef948c2af" +checksum = "01c412864d599d4750d0c3d684d7e093ec05e5309681ef5252cc1096a437f6e0" dependencies = [ - "arrayvec", - "bitflags 1.3.2", + "bitflags 2.11.1", "bytemuck", "lazy_static", "log", + "num-complex", + "smallvec", ] [[package]] name = "symphonia-format-riff" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2d7c3df0e7d94efb68401d81906eae73c02b40d5ec1a141962c592d0f11a96f" +checksum = "1ff70929083a8c1a5f6cd7c904b6071c7914ad04739b510c2f7239dfc9b7dabe" dependencies = [ "extended", "log", @@ -6253,13 +6251,14 @@ dependencies = [ [[package]] name = "symphonia-metadata" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36306ff42b9ffe6e5afc99d49e121e0bd62fe79b9db7b9681d48e29fa19e6b16" +checksum = "83713a97705d77bdef7cdbc0768fd6e5a54e4cd7e48d60a806ae85639e2c87c6" dependencies = [ - "encoding_rs", "lazy_static", "log", + "regex-lite", + "smallvec", "symphonia-core", ] diff --git a/Cargo.toml b/Cargo.toml index d747a754..c046a0b6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,7 +39,7 @@ sha1 = "0.10.6" # the hunks and the command that checks them: `third_party/lua-src/BENILLA.md`. [patch.crates-io] lua-src = { path = "third_party/lua-src" } -# kira 0.12.1, patched to compute spatial gains and the volume tween per output chunk and +# kira 0.12.4, patched to compute spatial gains and the volume tween per output chunk and # interpolate them, not per sample frame (`third_party/kira/BENILLA.md`). kira = { path = "third_party/kira" } diff --git a/crates/benilla-app/Cargo.toml b/crates/benilla-app/Cargo.toml index 80ed5285..7dd1c49f 100644 --- a/crates/benilla-app/Cargo.toml +++ b/crates/benilla-app/Cargo.toml @@ -32,7 +32,8 @@ half = "2" include_dir = "0.7" # The 1.12 chat filters (`text_filter`), with one `RegexSet` for the any-match pass per line. regex = "1" -# `getrusage` for perf CPU time; the audio clock and render thread's realtime policy on macOS. +# `getrusage` for perf CPU time; `localtime_r` for the log stamp; the audio clock and render +# thread's realtime policy on macOS. libc = "0.2" # PNG encoding only: the macOS cursor's NSImage data and screenshots. image = { version = "0.25", default-features = false, features = ["png"] } @@ -49,6 +50,9 @@ toml = "0.8" avian3d = "0.6" # Shapes and rasterizes `FontString` text standalone (`ui_text`), at bevy_text's own 0.16. cosmic-text = "0.16" +# The layout's unshifted character per key (`KeyEventExtModifierSupplement`), which bevy's +# `KeyboardInput` drops; bevy_winit's own 0.30, whose features it sets. +winit = { version = "0.30", default-features = false } # `cosmic-text`'s font database, named by `ui_text`; must stay the version it depends on. fontdb = "0.23" # The mixer. Its `cpal` backend stays off on every target: `sound::output` is our own backend. @@ -56,7 +60,7 @@ kira = { version = "0.12", default-features = false, features = ["mp3", "wav", " # Aborts a debug build on an allocation in the audio IO callback or render pass; off in release. assert_no_alloc = "1.1" # `MediaSource`: our source raises kira's decode thread's QoS; must stay kira's version. -symphonia = { version = "0.5", default-features = false } +symphonia = { version = "0.6", default-features = false } # The audio threads' lock-free SPSC rings (output, mix tap); kira's version, so the graph has one. rtrb = "0.3" mint = "0.5" @@ -93,9 +97,15 @@ objc2-foundation = { version = "0.2", features = ["NSArray", "NSData", "NSGeomet [target.'cfg(not(target_os = "macos"))'.dependencies] cpal = "0.17" -# Windows CPU clocks for `perf::clock`. +# Windows CPU clocks for `perf::clock`; `GetLocalTime` for the log stamp (`ui_chat::logging`); the +# layout's virtual keys for `bindings::layout`. [target.'cfg(windows)'.dependencies] -windows-sys = { version = "0.59", features = ["Win32_Foundation", "Win32_System_Threading"] } +windows-sys = { version = "0.59", features = [ + "Win32_Foundation", + "Win32_System_SystemInformation", + "Win32_System_Threading", + "Win32_UI_Input_KeyboardAndMouse", +] } # The login cycle's fake realmd runs the server half of SRP6 (`net::io::cycle_tests`). [dev-dependencies] diff --git a/crates/benilla-app/assets/ui/ContainerFrameAdapters.xml b/crates/benilla-app/assets/ui/ContainerFrameAdapters.xml index 26466581..dbf4261d 100644 --- a/crates/benilla-app/assets/ui/ContainerFrameAdapters.xml +++ b/crates/benilla-app/assets/ui/ContainerFrameAdapters.xml @@ -1,54 +1,18 @@ diff --git a/crates/benilla-app/assets/ui/FrameXMLFixes.xml b/crates/benilla-app/assets/ui/FrameXMLFixes.xml new file mode 100644 index 00000000..461e6f9a --- /dev/null +++ b/crates/benilla-app/assets/ui/FrameXMLFixes.xml @@ -0,0 +1,51 @@ + + + + diff --git a/crates/benilla-app/assets/ui/GameMenuAdapters.xml b/crates/benilla-app/assets/ui/GameMenuAdapters.xml new file mode 100644 index 00000000..43cf5fea --- /dev/null +++ b/crates/benilla-app/assets/ui/GameMenuAdapters.xml @@ -0,0 +1,132 @@ + + + + + + + + + + diff --git a/crates/benilla-app/assets/ui/GameMenuFrame.xml b/crates/benilla-app/assets/ui/GameMenuFrame.xml deleted file mode 100644 index 955fa369..00000000 --- a/crates/benilla-app/assets/ui/GameMenuFrame.xml +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- ERA_WINDOW_SCALE (OptionsFrame.xml) stands in for the era's UIParent scale. A - -- second OnShow on this frame would replace this one. - this:SetScale(ERA_WINDOW_SCALE or 1) - if UpdateMicroButtons then UpdateMicroButtons() end - if Disable_BagButtons then Disable_BagButtons() end - - - if UpdateMicroButtons then UpdateMicroButtons() end - if Enable_BagButtons then Enable_BagButtons() end - - - - diff --git a/crates/benilla-app/assets/ui/KeyBindingsPage.xml b/crates/benilla-app/assets/ui/KeyBindingsPage.xml index a89fa332..03d4de7e 100644 --- a/crates/benilla-app/assets/ui/KeyBindingsPage.xml +++ b/crates/benilla-app/assets/ui/KeyBindingsPage.xml @@ -4,14 +4,16 @@ OptionsFrame.xml, which loads after. Only commands the engine dispatches appear. Deviation: the layout is the era Settings panel's Keybindings page (collapsible category sections), because 1.12's settings screens are much worse to use. Capture follows 1.12's - Blizzard_BindingUI: the next key or mouse 3/4/5 press binds, left and right clicks only - select, and ESC while armed binds Escape (its OnKeyDown has no ESCAPE filter). + Blizzard_BindingUI: while a capsule is selected the window is keyboard-enabled, so the + next key binds through its OnKeyDown, and a mouse 3/4/5 click or a wheel notch binds; + left and right clicks only select, and ESC while armed binds Escape (its OnKeyDown has no + ESCAPE filter). Deviation: every bind, unbind and reset saves at once, as the era panel commits, where 1.12 had Okay and Cancel; only Reset To Default and leaving the character set confirm. --> - - - + @@ -61,13 +63,13 @@ - KeyBindings_ToggleSection(this.sectionIndex) + BenillaKeyBindings_ToggleSection(this.sectionIndex) - - @@ -75,7 +77,7 @@ - - - + - + @@ -1764,7 +1774,7 @@ - - + @@ -1828,21 +1838,21 @@ - OptionsCheckbox_OnClick(this) - OptionsRow_Hover(this:GetParent(), 1) - OptionsRow_Hover(this:GetParent(), nil) + BenillaOptionsCheckbox_OnClick(this) + BenillaOptionsRow_Hover(this:GetParent(), 1) + BenillaOptionsRow_Hover(this:GetParent(), nil) - OptionsRow_Hover(this, 1) - OptionsRow_Hover(this, nil) + BenillaOptionsRow_Hover(this, 1) + BenillaOptionsRow_Hover(this, nil) - + @@ -1904,22 +1914,22 @@ - OptionsSlider_OnValueChanged(this, arg1) - OptionsRow_Hover(this:GetParent():GetParent(), 1) - OptionsRow_Hover(this:GetParent():GetParent(), nil) + BenillaOptionsSlider_OnValueChanged(this, arg1) + BenillaOptionsRow_Hover(this:GetParent():GetParent(), 1) + BenillaOptionsRow_Hover(this:GetParent():GetParent(), nil) - OptionsRow_Hover(this, 1) - OptionsRow_Hover(this, nil) + BenillaOptionsRow_Hover(this, 1) + BenillaOptionsRow_Hover(this, nil) - + @@ -1953,8 +1963,8 @@ - OptionsRow_Hover(this, 1) - OptionsRow_Hover(this, nil) + BenillaOptionsRow_Hover(this, 1) + BenillaOptionsRow_Hover(this, nil) @@ -1988,7 +1998,7 @@ - + @@ -2059,7 +2069,7 @@ - OptionsTab_FitWidth(self) + BenillaOptionsTab_FitWidth(this) @@ -2102,64 +2112,64 @@ - + - getglobal(self:GetName() .. "Label"):SetText("Gameplay") + getglobal(this:GetName() .. "Label"):SetText("Gameplay") - - - - - - - - + - getglobal(self:GetName() .. "Label"):SetText("System") + getglobal(this:GetName() .. "Label"):SetText("System") - - - @@ -2184,37 +2194,37 @@ - + - - @@ -2226,9 +2236,16 @@ - self:SetScrollChild(BenillaOptionsFrameContainerBody) - OptionsScroll_Fit() - BenillaScroll_OnMouseWheel(this, arg1) + this:SetScrollChild(BenillaOptionsFrameContainerBody) + BenillaOptionsScroll_Fit() + + + if BenillaKeyBindingsPage.selected then + BenillaKeyBindings_OnMouseWheel(arg1) + else + BenillaScroll_OnMouseWheel(this, arg1) + end + BenillaScroll_SyncBar(this) BenillaScroll_SyncBar(this) @@ -2236,7 +2253,7 @@ + BenillaOptionsScroll_Fit sizes it. --> @@ -2256,185 +2273,194 @@ - + - OptionsRow_OnLoad(self, "deselectOnClick", "Sticky Targeting", + BenillaOptionsRow_OnLoad(this, "deselectOnClick", "Sticky Targeting", "OPTION_TOOLTIP_GAMEFIELD_DESELECT") - self.invert = 1 + this.invert = 1 - + - OptionsRow_OnLoad(self, "assistAttack", "Attack on assist", + BenillaOptionsRow_OnLoad(this, "assistAttack", "Attack on assist", "OPTION_TOOLTIP_ASSIST_ATTACK") - + - OptionsRow_OnLoad(self, "autoClearAFK", "Auto Clear AFK", + BenillaOptionsRow_OnLoad(this, "autoClearAFK", "Auto Clear AFK", "OPTION_TOOLTIP_CLEAR_AFK") - + - OptionsRow_OnLoad(self, "BlockTrades", "Block Trades", + BenillaOptionsRow_OnLoad(this, "BlockTrades", "Block Trades", "OPTION_TOOLTIP_BLOCK_TRADES") - + - OptionsRow_OnLoad(self, "autoSelfCast", "Auto Self Cast", + BenillaOptionsRow_OnLoad(this, "autoSelfCast", "Auto Self Cast", "OPTION_TOOLTIP_AUTO_SELF_CAST") - + - OptionsRow_OnLoad(self, "autoLootDefault", "Auto Loot") + BenillaOptionsRow_OnLoad(this, "autoLootDefault", "Auto Loot") - + - OptionsRow_OnLoad(self, "mouseInvertPitch", "Invert Mouse", + BenillaOptionsRow_OnLoad(this, "mouseInvertPitch", "Invert Mouse", "OPTION_TOOLTIP_INVERT_MOUSE") - + - OptionsRow_OnLoad(self, "mousespeed", "Mouse Sensitivity", + BenillaOptionsRow_OnLoad(this, "mousespeed", "Mouse Sensitivity", "OPTION_TOOLTIP_MOUSE_SENSITIVITY") - OptionsSliderRow_Setup(self, 0.5, 1.5, 0.05) + BenillaOptionsSliderRow_Setup(this, 0.5, 1.5, 0.05) - - + + + BenillaOptionsRow_OnLoad(this, "autointeract", "Click-to-Move", + "OPTION_TOOLTIP_CLICK_TO_MOVE") + + + + + + + - OptionsRow_OnLoad(self, "cameraSmoothStyle", + BenillaOptionsRow_OnLoad(this, "cameraSmoothStyle", "Camera Following Style", "OPTION_TOOLTIP_CAMERA1") - OptionsDropdownRow_Setup(self, { + BenillaOptionsDropdownRow_Setup(this, { { 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", + BenillaOptionsRow_OnLoad(this, "cameraTerrainTilt", "Follow Terrain", "OPTION_TOOLTIP_FOLLOW_TERRAIN") - + - OptionsRow_OnLoad(self, "cameraBobbing", "Head Bob", + BenillaOptionsRow_OnLoad(this, "cameraBobbing", "Head Bob", "OPTION_TOOLTIP_HEAD_BOB") - + - OptionsRow_OnLoad(self, "cameraYawSmoothSpeed", "Auto-Follow Speed", + BenillaOptionsRow_OnLoad(this, "cameraYawSmoothSpeed", "Auto-Follow Speed", "OPTION_TOOLTIP_AUTO_FOLLOW_SPEED") - OptionsSliderRow_Setup(self, 90, 270, 10, "raw") + BenillaOptionsSliderRow_Setup(this, 90, 270, 10, "raw") - + - OptionsRow_OnLoad(self, "cameraWaterCollision", "Water Collision", + BenillaOptionsRow_OnLoad(this, "cameraWaterCollision", "Water Collision", "OPTION_TOOLTIP_WATER_COLLISION") - + - OptionsRow_OnLoad(self, "cameraPivot", "Smart Pivot", + BenillaOptionsRow_OnLoad(this, "cameraPivot", "Smart Pivot", "OPTION_TOOLTIP_SMART_PIVOT") - + - OptionsRow_OnLoad(self, "cameraYawMoveSpeed", "Mouse Look Speed", + BenillaOptionsRow_OnLoad(this, "cameraYawMoveSpeed", "Mouse Look Speed", "OPTION_TOOLTIP_MOUSE_LOOK_SPEED") - OptionsSliderRow_Setup(self, 90, 270, 10, "raw") - self.partner = { cvar = "cameraPitchMoveSpeed", scale = 0.5 } + BenillaOptionsSliderRow_Setup(this, 90, 270, 10, "raw") + this.partner = { cvar = "cameraPitchMoveSpeed", scale = 0.5 } - + - OptionsRow_OnLoad(self, "cameraDistanceMaxFactor", + BenillaOptionsRow_OnLoad(this, "cameraDistanceMaxFactor", "Max Camera Distance", "OPTION_TOOLTIP_MAX_FOLLOW_DIST") - OptionsSliderRow_Setup(self, 1.0, 2.0, 0.1, "yards") + BenillaOptionsSliderRow_Setup(this, 1.0, 2.0, 0.1, "yards") @@ -2446,104 +2472,104 @@ - + - OptionsRow_OnLoad(self, "MasterSoundEffects", "Enable All Sound", + BenillaOptionsRow_OnLoad(this, "MasterSoundEffects", "Enable All Sound", "OPTION_TOOLTIP_ENABLE_ALL_SOUND") - self.soundQuirk = 1 + this.soundQuirk = 1 - + - OptionsRow_OnLoad(self, "MasterVolume", "Master Volume", + BenillaOptionsRow_OnLoad(this, "MasterVolume", "Master Volume", "OPTION_TOOLTIP_MASTER_VOLUME") - + - OptionsRow_OnLoad(self, "SoundVolume", "Sound Volume", + BenillaOptionsRow_OnLoad(this, "SoundVolume", "Sound Volume", "OPTION_TOOLTIP_SOUND_VOLUME", 1) - self.parentRow = "RowMaster" + this.parentRow = "RowMaster" - + - OptionsRow_OnLoad(self, "MusicVolume", "Music Volume", + BenillaOptionsRow_OnLoad(this, "MusicVolume", "Music Volume", "OPTION_TOOLTIP_MUSIC_VOLUME", 1) - self.parentRow = "RowMaster" + this.parentRow = "RowMaster" - + - OptionsRow_OnLoad(self, "AmbienceVolume", "Ambience Volume", + BenillaOptionsRow_OnLoad(this, "AmbienceVolume", "Ambience Volume", "OPTION_TOOLTIP_AMBIENCE_VOLUME", 1) - self.parentRow = "RowMaster" + this.parentRow = "RowMaster" - + - OptionsRow_OnLoad(self, "EnableMusic", "Enable Music", + BenillaOptionsRow_OnLoad(this, "EnableMusic", "Enable Music", "OPTION_TOOLTIP_ENABLE_MUSIC") - self.soundQuirk = 1 + this.soundQuirk = 1 - + - OptionsRow_OnLoad(self, "EnableAmbience", "Enable Ambience", + BenillaOptionsRow_OnLoad(this, "EnableAmbience", "Enable Ambience", "OPTION_TOOLTIP_ENABLE_AMBIENCE") - self.soundQuirk = 1 + this.soundQuirk = 1 - + - OptionsRow_OnLoad(self, "EnableErrorSpeech", "Enable Error Speech", + BenillaOptionsRow_OnLoad(this, "EnableErrorSpeech", "Enable Error Speech", "OPTION_TOOLTIP_ENABLE_ERROR_SPEECH") - self.soundQuirk = 1 + this.soundQuirk = 1 - + - OptionsRow_OnLoad(self, "Sound_EnableSoundWhenGameIsInBG", + BenillaOptionsRow_OnLoad(this, "Sound_EnableSoundWhenGameIsInBG", "Enable Sound in Background", "BENILLA_TOOLTIP_BACKGROUND_SOUND") - self.soundQuirk = 1 + this.soundQuirk = 1 @@ -2557,88 +2583,106 @@ - + - OptionsRow_OnLoad(self, "uiScale", "UI Scale", + BenillaOptionsRow_OnLoad(this, "uiScale", "UI Scale", "OPTION_TOOLTIP_UI_SCALE") - OptionsSliderRow_Setup(self, OptionsFrameSliders[1].minValue, + BenillaOptionsSliderRow_Setup(this, OptionsFrameSliders[1].minValue, OptionsFrameSliders[1].maxValue, OptionsFrameSliders[1].valueStep) -- A live write would rescale the slider mid-drag. - self.deferred = 1 + this.deferred = 1 - + - OptionsRow_OnLoad(self, "farclip", "Terrain Distance", + BenillaOptionsRow_OnLoad(this, "farclip", "Terrain Distance", "OPTION_TOOLTIP_FARCLIP") - OptionsSliderRow_Setup(self, OptionsFrameSliders[2].minValue, + BenillaOptionsSliderRow_Setup(this, OptionsFrameSliders[2].minValue, OptionsFrameSliders[2].maxValue, OptionsFrameSliders[2].valueStep, "raw") - + - OptionsRow_OnLoad(self, "WorldDetail", "Environment Detail", + BenillaOptionsRow_OnLoad(this, "WorldDetail", "Environment Detail", "OPTION_TOOLTIP_ENVIRONMENT_DETAIL") -- Stop names from the era quality ladder. - OptionsSliderRow_Setup(self, OptionsFrameSliders[3].minValue, + BenillaOptionsSliderRow_Setup(this, OptionsFrameSliders[3].minValue, OptionsFrameSliders[3].maxValue, OptionsFrameSliders[3].valueStep, nil, { "Low", "Medium", "High" }) + + + + + + + + BenillaOptionsRow_OnLoad(this, "spellEffectLevel", SPELL_DETAIL, + "OPTION_TOOLTIP_SPELL_DETAIL") + -- Our names for the handler's emission scalars + -- 0.33, 0.66 and 1.0 (`0x689510`). + BenillaOptionsSliderRow_Setup(this, OptionsFrameSliders[8].minValue, + OptionsFrameSliders[8].maxValue, + OptionsFrameSliders[8].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, + BenillaOptionsNumFuncRow_OnLoad(this, GetGamma, SetGamma, tostring(1 - gd), "Brightness", "BENILLA_TOOLTIP_BRIGHTNESS") - OptionsSliderRow_Setup(self, OptionsFrameSliders[6].minValue, + BenillaOptionsSliderRow_Setup(this, OptionsFrameSliders[6].minValue, OptionsFrameSliders[6].maxValue, OptionsFrameSliders[6].valueStep, "travel") - + - OptionsRow_OnLoad(self, "weatherDensity", "Weather Intensity", + BenillaOptionsRow_OnLoad(this, "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, + BenillaOptionsSliderRow_Setup(this, OptionsFrameSliders[9].minValue, OptionsFrameSliders[9].maxValue, OptionsFrameSliders[9].valueStep, nil, { "Minimal", "Low", "Medium", "Full" }) - + @@ -2647,15 +2691,15 @@ -- Deviation: modern Classic's two-entry Display -- Mode, as there is no exclusive fullscreen; -- gxWindow "0" is the borderless window. - OptionsRow_OnLoad(self, "gxWindow", "Display Mode", + BenillaOptionsRow_OnLoad(this, "gxWindow", "Display Mode", "BENILLA_TOOLTIP_DISPLAY_MODE") - OptionsDropdownRow_Setup(self, { + BenillaOptionsDropdownRow_Setup(this, { { text = "Windowed (Fullscreen)", value = "0" }, { text = "Windowed", value = "1" }, }) - + @@ -2663,7 +2707,7 @@ -- Not deferred despite gxRestart: vsync changes -- live. - OptionsRow_OnLoad(self, "gxVSync", "Vertical Sync", + BenillaOptionsRow_OnLoad(this, "gxVSync", "Vertical Sync", "OPTION_TOOLTIP_VERTICAL_SYNC") @@ -2674,7 +2718,7 @@ labels, same descriptions, same deferred commit on the slider — because they are three rows of one rig whose other fifteen a player could not reach at all. --> - + @@ -2684,10 +2728,10 @@ -- the backbuffer), and no Multisampling, which -- misses alpha-tested cutouts. Deferred: a write -- rebuilds the render target. - OptionsRow_OnLoad(self, "renderScale", "Render Scale", + BenillaOptionsRow_OnLoad(this, "renderScale", "Render Scale", "BENILLA_TOOLTIP_RENDER_SCALE") - OptionsSliderRow_Setup(self, 0.5, 2.0, 0.05) - self.deferred = 1 + BenillaOptionsSliderRow_Setup(this, 0.5, 2.0, 0.05) + this.deferred = 1 @@ -2699,7 +2743,7 @@ local info = OptionsFrameSliders[i] local row = getglobal(this:GetName() .. name) if ( info and row ) then - OptionsSliderRow_Setup(row, info.minValue, info.maxValue, + BenillaOptionsSliderRow_Setup(row, info.minValue, info.maxValue, info.valueStep, row.fmt, row.stops) end end @@ -2735,17 +2779,17 @@ Quality below it, ONE CVar: the host's `cvars::GRAPHICS_PRESETS` writes the rows and re-derives this one every frame. --> - + - OptionsRow_OnLoad(self, "graphicsQuality", + BenillaOptionsRow_OnLoad(this, "graphicsQuality", BENILLA_ADVGFX.graphicsQuality, "BENILLA_TOOLTIP_GRAPHICS_QUALITY") - self.preset = 1 - OptionsDropdownRow_Setup(self, { + this.preset = 1 + BenillaOptionsDropdownRow_Setup(this, { { text = BENILLA_ADVGFX.pClassic, value = "Classic" }, { text = BENILLA_ADVGFX.qLow, value = "Low" }, { text = BENILLA_ADVGFX.qMedium, value = "Medium" }, @@ -2759,19 +2803,19 @@ Distance, on the extended range (`view::FARCLIP_RANGE`, 177..1497 on the 1.12 grid of 60). Live like its Graphics twin; both read the one CVar. --> - + - OptionsRow_OnLoad(self, "farclip", + BenillaOptionsRow_OnLoad(this, "farclip", BENILLA_ADVGFX.renderDistance, "BENILLA_TOOLTIP_RENDER_DISTANCE") - OptionsSliderRow_Setup(self, 177, 1497, 60, "yd") + BenillaOptionsSliderRow_Setup(this, 177, 1497, 60, "yd") - + @@ -2792,10 +2836,10 @@ -- 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", + BenillaOptionsRow_OnLoad(this, "lightingQuality", BENILLA_ADVGFX.lightingQuality, "BENILLA_TOOLTIP_LIGHTING_QUALITY") - OptionsDropdownRow_Setup(self, { + BenillaOptionsDropdownRow_Setup(this, { { text = BENILLA_ADVGFX.qOff, value = "Off" }, { text = BENILLA_ADVGFX.qLow, value = "Low" }, { text = BENILLA_ADVGFX.qMedium, value = "Medium" }, @@ -2805,16 +2849,16 @@ }) - + - OptionsRow_OnLoad(self, "waterQuality", + BenillaOptionsRow_OnLoad(this, "waterQuality", BENILLA_ADVGFX.waterQuality, "BENILLA_TOOLTIP_WATER_QUALITY") - OptionsDropdownRow_Setup(self, { + BenillaOptionsDropdownRow_Setup(this, { { text = BENILLA_ADVGFX.waterClassic, value = "0" }, { text = BENILLA_ADVGFX.waterEnhanced, value = "1" }, { text = BENILLA_ADVGFX.waterHigh, value = "2" }, @@ -2822,15 +2866,15 @@ - + - OptionsRow_OnLoad(self, "volumetricFog", BENILLA_ADVGFX.volumetricFog, + BenillaOptionsRow_OnLoad(this, "volumetricFog", BENILLA_ADVGFX.volumetricFog, "BENILLA_TOOLTIP_VOLUMETRIC_FOG") - OptionsDropdownRow_Setup(self, { + BenillaOptionsDropdownRow_Setup(this, { { text = BENILLA_ADVGFX.fogOff, value = "0" }, { text = BENILLA_ADVGFX.qLow, value = "1" }, { text = BENILLA_ADVGFX.qHigh, value = "2" }, @@ -2838,15 +2882,15 @@ - + - OptionsRow_OnLoad(self, "skyQuality", BENILLA_ADVGFX.skyQuality, + BenillaOptionsRow_OnLoad(this, "skyQuality", BENILLA_ADVGFX.skyQuality, "BENILLA_TOOLTIP_SKY_QUALITY") - OptionsDropdownRow_Setup(self, { + BenillaOptionsDropdownRow_Setup(this, { { text = BENILLA_ADVGFX.waterClassic, value = "0" }, { text = BENILLA_ADVGFX.waterEnhanced, value = "1" }, { text = BENILLA_ADVGFX.waterHigh, value = "2" }, @@ -2854,15 +2898,15 @@ - + - OptionsRow_OnLoad(self, "bloom", BENILLA_ADVGFX.bloom, + BenillaOptionsRow_OnLoad(this, "bloom", BENILLA_ADVGFX.bloom, "BENILLA_TOOLTIP_BLOOM") - OptionsDropdownRow_Setup(self, { + BenillaOptionsDropdownRow_Setup(this, { { text = BENILLA_ADVGFX.fogOff, value = "0" }, { text = BENILLA_ADVGFX.qLow, value = "1" }, { text = BENILLA_ADVGFX.qHigh, value = "2" }, @@ -2870,51 +2914,51 @@ - + - OptionsRow_OnLoad(self, "sunShafts", BENILLA_ADVGFX.sunShafts, + BenillaOptionsRow_OnLoad(this, "sunShafts", BENILLA_ADVGFX.sunShafts, "BENILLA_TOOLTIP_SUN_SHAFTS") - + - OptionsRow_OnLoad(self, "colorGrading", BENILLA_ADVGFX.colorGrading, + BenillaOptionsRow_OnLoad(this, "colorGrading", BENILLA_ADVGFX.colorGrading, "BENILLA_TOOLTIP_COLOR_GRADING") - + - OptionsRow_OnLoad(self, "characterShadows", + BenillaOptionsRow_OnLoad(this, "characterShadows", BENILLA_ADVGFX.characterShadows, "BENILLA_TOOLTIP_CHARACTER_SHADOWS") - + - OptionsRow_OnLoad(self, "worldShadows", + BenillaOptionsRow_OnLoad(this, "worldShadows", BENILLA_ADVGFX.worldShadows, "BENILLA_TOOLTIP_WORLD_SHADOWS") - + @@ -2925,7 +2969,7 @@ -- 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", + BenillaOptionsRow_OnLoad(this, "shadowDistance", BENILLA_ADVGFX.shadowDistance, "BENILLA_TOOLTIP_SHADOW_DISTANCE") -- `"yd"`, not `"yards"`: the value is already a @@ -2934,11 +2978,11 @@ -- 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 + BenillaOptionsSliderRow_Setup(this, 40, 200, 10, "yd") + this.deferred = 1 - + @@ -2951,17 +2995,17 @@ -- 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", + BenillaOptionsRow_OnLoad(this, "shadowMapSize", BENILLA_ADVGFX.shadowResolution, "BENILLA_TOOLTIP_SHADOW_RESOLUTION") - OptionsDropdownRow_Setup(self, { + BenillaOptionsDropdownRow_Setup(this, { { text = "1024", value = "1024" }, { text = "2048", value = "2048" }, { text = "4096", value = "4096" }, }) - + @@ -2972,58 +3016,58 @@ -- on it, so the left end of this groove is the -- night the client rendered before the moon lane -- existed. - OptionsRow_OnLoad(self, "moonShadowStrength", + BenillaOptionsRow_OnLoad(this, "moonShadowStrength", BENILLA_ADVGFX.moonShadows, "BENILLA_TOOLTIP_MOON_SHADOWS") - OptionsSliderRow_Setup(self, 0, 1, 0.05) + BenillaOptionsSliderRow_Setup(this, 0, 1, 0.05) - + - OptionsRow_OnLoad(self, "interiorLight", + BenillaOptionsRow_OnLoad(this, "interiorLight", BENILLA_ADVGFX.interiorLight, "BENILLA_TOOLTIP_INTERIOR_LIGHT") - + - OptionsRow_OnLoad(self, "interiorShadows", + BenillaOptionsRow_OnLoad(this, "interiorShadows", BENILLA_ADVGFX.interiorShadows, "BENILLA_TOOLTIP_INTERIOR_SHADOWS") - + - OptionsRow_OnLoad(self, "exteriorShadows", + BenillaOptionsRow_OnLoad(this, "exteriorShadows", BENILLA_ADVGFX.exteriorShadows, "BENILLA_TOOLTIP_EXTERIOR_SHADOWS") - + - OptionsRow_OnLoad(self, "torchTerrainShadows", + BenillaOptionsRow_OnLoad(this, "torchTerrainShadows", BENILLA_ADVGFX.torchTerrainShadows, "BENILLA_TOOLTIP_TORCH_TERRAIN_SHADOWS") - + @@ -3033,26 +3077,26 @@ -- 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", + BenillaOptionsRow_OnLoad(this, "interiorShadowSoft", BENILLA_ADVGFX.torchSoft, "BENILLA_TOOLTIP_TORCH_SOFT") - OptionsSliderRow_Setup(self, 0.5, 3, 0.1) + BenillaOptionsSliderRow_Setup(this, 0.5, 3, 0.1) - + -- Full 0..4 registry range, in five-percent steps. - OptionsRow_OnLoad(self, "fireLightGain", + BenillaOptionsRow_OnLoad(this, "fireLightGain", BENILLA_ADVGFX.fireLight, "BENILLA_TOOLTIP_FIRE_LIGHT") - OptionsSliderRow_Setup(self, 0, 4, 0.05) + BenillaOptionsSliderRow_Setup(this, 0, 4, 0.05) - + @@ -3061,38 +3105,38 @@ -- 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", + BenillaOptionsRow_OnLoad(this, "fireFlicker", BENILLA_ADVGFX.fireFlicker, "BENILLA_TOOLTIP_FIRE_FLICKER") - OptionsSliderRow_Setup(self, 0, 2, 0.05) + BenillaOptionsSliderRow_Setup(this, 0, 2, 0.05) - + -- Full 0..4 registry range, in five-percent steps. - OptionsRow_OnLoad(self, "spellLightGain", + BenillaOptionsRow_OnLoad(this, "spellLightGain", BENILLA_ADVGFX.spellLights, "BENILLA_TOOLTIP_SPELL_LIGHTS") - OptionsSliderRow_Setup(self, 0, 4, 0.05) + BenillaOptionsSliderRow_Setup(this, 0, 4, 0.05) - + - OptionsRow_OnLoad(self, "lavaLightGain", + BenillaOptionsRow_OnLoad(this, "lavaLightGain", BENILLA_ADVGFX.lavaGlow, "BENILLA_TOOLTIP_LAVA_GLOW") - OptionsSliderRow_Setup(self, 0, 4, 0.05) + BenillaOptionsSliderRow_Setup(this, 0, 4, 0.05) - + @@ -3109,13 +3153,13 @@ -- 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", + BenillaOptionsRow_OnLoad(this, "nightGain", BENILLA_ADVGFX.nightDarkness, "BENILLA_TOOLTIP_NIGHT_DARKNESS") - OptionsSliderRow_Setup(self, 0.2, 1.5, 0.05, "darkness") + BenillaOptionsSliderRow_Setup(this, 0.2, 1.5, 0.05, "darkness") - + @@ -3123,59 +3167,59 @@ -- The room lane's own dim dial, same clamp and same -- backwards readout as the night one above it. - OptionsRow_OnLoad(self, "interiorGain", + BenillaOptionsRow_OnLoad(this, "interiorGain", BENILLA_ADVGFX.interiorDarkness, "BENILLA_TOOLTIP_INTERIOR_DARKNESS") - OptionsSliderRow_Setup(self, 0.2, 1.5, 0.05, "darkness") + BenillaOptionsSliderRow_Setup(this, 0.2, 1.5, 0.05, "darkness") - + - OptionsRow_OnLoad(self, "skyDither", + BenillaOptionsRow_OnLoad(this, "skyDither", BENILLA_ADVGFX.skyDither, "BENILLA_TOOLTIP_SKY_DITHER") - + - OptionsRow_OnLoad(self, "fogModel", + BenillaOptionsRow_OnLoad(this, "fogModel", BENILLA_ADVGFX.fogModel, "BENILLA_TOOLTIP_FOG_MODEL") - + - OptionsRow_OnLoad(self, "rainSurfaces", + BenillaOptionsRow_OnLoad(this, "rainSurfaces", BENILLA_ADVGFX.rainSurfaces, "BENILLA_TOOLTIP_RAIN_SURFACES") - + - OptionsRow_OnLoad(self, "foliageWind", + BenillaOptionsRow_OnLoad(this, "foliageWind", BENILLA_ADVGFX.foliageWind, "BENILLA_TOOLTIP_FOLIAGE_WIND") - OptionsDropdownRow_Setup(self, { + BenillaOptionsDropdownRow_Setup(this, { { text = BENILLA_ADVGFX.qOff, value = "0" }, { text = BENILLA_ADVGFX.windGrass, value = "1" }, { text = BENILLA_ADVGFX.windTrees, value = "2" }, @@ -3183,28 +3227,28 @@ - + - OptionsRow_OnLoad(self, "foliageWindStrength", + BenillaOptionsRow_OnLoad(this, "foliageWindStrength", BENILLA_ADVGFX.foliageWindStrength, "BENILLA_TOOLTIP_FOLIAGE_WIND_STRENGTH") - OptionsSliderRow_Setup(self, 0.25, 3, 0.25) + BenillaOptionsSliderRow_Setup(this, 0.25, 3, 0.25) - + - OptionsRow_OnLoad(self, "ambientOcclusion", BENILLA_ADVGFX.ambientOcclusion, + BenillaOptionsRow_OnLoad(this, "ambientOcclusion", BENILLA_ADVGFX.ambientOcclusion, "BENILLA_TOOLTIP_AMBIENT_OCCLUSION") - OptionsDropdownRow_Setup(self, { + BenillaOptionsDropdownRow_Setup(this, { { text = BENILLA_ADVGFX.fogOff, value = "0" }, { text = BENILLA_ADVGFX.qLow, value = "1" }, { text = BENILLA_ADVGFX.qHigh, value = "2" }, @@ -3212,15 +3256,15 @@ - + - OptionsRow_OnLoad(self, "lampFog", BENILLA_ADVGFX.lampFog, + BenillaOptionsRow_OnLoad(this, "lampFog", BENILLA_ADVGFX.lampFog, "BENILLA_TOOLTIP_LAMP_FOG") - OptionsDropdownRow_Setup(self, { + BenillaOptionsDropdownRow_Setup(this, { { text = BENILLA_ADVGFX.fogOff, value = "0" }, { text = BENILLA_ADVGFX.qLow, value = "1" }, { text = BENILLA_ADVGFX.qHigh, value = "2" }, @@ -3228,39 +3272,39 @@ - + - OptionsRow_OnLoad(self, "daylightWindowSplit", + BenillaOptionsRow_OnLoad(this, "daylightWindowSplit", BENILLA_ADVGFX.daylightWindowSplit, "BENILLA_TOOLTIP_DAYLIGHT_WINDOW_SPLIT") - + - OptionsRow_OnLoad(self, "zoneSkyboxes", + BenillaOptionsRow_OnLoad(this, "zoneSkyboxes", BENILLA_ADVGFX.zoneSkyboxes, "BENILLA_TOOLTIP_ZONE_SKYBOXES") - + - OptionsRow_OnLoad(self, "volumetricLight", BENILLA_ADVGFX.volumetricLight, + BenillaOptionsRow_OnLoad(this, "volumetricLight", BENILLA_ADVGFX.volumetricLight, "BENILLA_TOOLTIP_VOLUMETRIC_LIGHT") - OptionsDropdownRow_Setup(self, { + BenillaOptionsDropdownRow_Setup(this, { { text = BENILLA_ADVGFX.fogOff, value = "0" }, { text = BENILLA_ADVGFX.qMedium, value = "1" }, { text = BENILLA_ADVGFX.qHigh, value = "2" }, @@ -3268,28 +3312,28 @@ - + - OptionsRow_OnLoad(self, "volumetricLightStrength", + BenillaOptionsRow_OnLoad(this, "volumetricLightStrength", BENILLA_ADVGFX.volumetricLightStrength, "BENILLA_TOOLTIP_VOLUMETRIC_LIGHT_STRENGTH") - OptionsSliderRow_Setup(self, 0, 2, 0.25) + BenillaOptionsSliderRow_Setup(this, 0, 2, 0.25) - + - OptionsRow_OnLoad(self, "moonLight", BENILLA_ADVGFX.moonLight, + BenillaOptionsRow_OnLoad(this, "moonLight", BENILLA_ADVGFX.moonLight, "BENILLA_TOOLTIP_MOONLIGHT") - OptionsSliderRow_Setup(self, 0, 2, 0.25) + BenillaOptionsSliderRow_Setup(this, 0, 2, 0.25) @@ -3310,227 +3354,227 @@ - + - OptionsGlobalRow_OnLoad(self, "SHOW_COMBAT_TEXT", + BenillaOptionsGlobalRow_OnLoad(this, "SHOW_COMBAT_TEXT", "Enable Floating Combat Text", "OPTION_TOOLTIP_SHOW_COMBAT_TEXT") - self.applyFunc = "CombatText_UpdateOrLoad" + this.applyFunc = "BenillaCombatText_UpdateOrLoad" - + - OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_FLOAT_MODE", + BenillaOptionsGlobalRow_OnLoad(this, "COMBAT_TEXT_FLOAT_MODE", "Combat Text Float Mode", "OPTION_TOOLTIP_COMBAT_TEXT_MODE", 1) - OptionsDropdownRow_Setup(self, { + BenillaOptionsDropdownRow_Setup(this, { { text = "Scroll Up", value = "1" }, { text = "Scroll Down", value = "2" }, { text = "Arc", value = "3" }, }) - self.parentRow = "RowCombatText" - self.applyFunc = "CombatText_UpdateOrLoad" + this.parentRow = "RowCombatText" + this.applyFunc = "BenillaCombatText_UpdateOrLoad" - + - OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_LOW_HEALTH_MANA", + BenillaOptionsGlobalRow_OnLoad(this, "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" + this.parentRow = "RowCombatText" + this.applyFunc = "BenillaCombatText_UpdateOrLoad" - + - OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_AURAS", + BenillaOptionsGlobalRow_OnLoad(this, "COMBAT_TEXT_SHOW_AURAS", "Show Auras", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_AURAS", 1) - self.parentRow = "RowCombatText" - self.applyFunc = "CombatText_UpdateOrLoad" + this.parentRow = "RowCombatText" + this.applyFunc = "BenillaCombatText_UpdateOrLoad" - + - OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_AURA_FADE", + BenillaOptionsGlobalRow_OnLoad(this, "COMBAT_TEXT_SHOW_AURA_FADE", "Show Fading Auras", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_AURA_FADE", 1) - self.parentRow = "RowCombatText" - self.applyFunc = "CombatText_UpdateOrLoad" + this.parentRow = "RowCombatText" + this.applyFunc = "BenillaCombatText_UpdateOrLoad" - + - OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_COMBAT_STATE", + BenillaOptionsGlobalRow_OnLoad(this, "COMBAT_TEXT_SHOW_COMBAT_STATE", "Show Combat State", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_COMBAT_STATE", 1) - self.parentRow = "RowCombatText" - self.applyFunc = "CombatText_UpdateOrLoad" + this.parentRow = "RowCombatText" + this.applyFunc = "BenillaCombatText_UpdateOrLoad" - + - OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_DODGE_PARRY_MISS", + BenillaOptionsGlobalRow_OnLoad(this, "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" + this.parentRow = "RowCombatText" + this.applyFunc = "BenillaCombatText_UpdateOrLoad" - + - OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_RESISTANCES", + BenillaOptionsGlobalRow_OnLoad(this, "COMBAT_TEXT_SHOW_RESISTANCES", "Show Damage Reduction", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_RESISTANCES", 1) - self.parentRow = "RowCombatText" - self.applyFunc = "CombatText_UpdateOrLoad" + this.parentRow = "RowCombatText" + this.applyFunc = "BenillaCombatText_UpdateOrLoad" - + - OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_REPUTATION", + BenillaOptionsGlobalRow_OnLoad(this, "COMBAT_TEXT_SHOW_REPUTATION", "Show Reputation", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_REPUTATION", 1) - self.parentRow = "RowCombatText" - self.applyFunc = "CombatText_UpdateOrLoad" + this.parentRow = "RowCombatText" + this.applyFunc = "BenillaCombatText_UpdateOrLoad" - + - OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_REACTIVES", + BenillaOptionsGlobalRow_OnLoad(this, "COMBAT_TEXT_SHOW_REACTIVES", "Show Reactive Spells and Abilities", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_REACTIVES", 1) - self.parentRow = "RowCombatText" - self.applyFunc = "CombatText_UpdateOrLoad" + this.parentRow = "RowCombatText" + this.applyFunc = "BenillaCombatText_UpdateOrLoad" - + - OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_FRIENDLY_NAMES", + BenillaOptionsGlobalRow_OnLoad(this, "COMBAT_TEXT_SHOW_FRIENDLY_NAMES", "Show Friendly Healer Names", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_FRIENDLY_NAMES", 1) - self.parentRow = "RowCombatText" - self.applyFunc = "CombatText_UpdateOrLoad" + this.parentRow = "RowCombatText" + this.applyFunc = "BenillaCombatText_UpdateOrLoad" - + - OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_COMBO_POINTS", + BenillaOptionsGlobalRow_OnLoad(this, "COMBAT_TEXT_SHOW_COMBO_POINTS", "Show Combo Points", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_COMBO_POINTS", 1) - self.parentRow = "RowCombatText" - self.applyFunc = "CombatText_UpdateOrLoad" + this.parentRow = "RowCombatText" + this.applyFunc = "BenillaCombatText_UpdateOrLoad" - + - OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_MANA", + BenillaOptionsGlobalRow_OnLoad(this, "COMBAT_TEXT_SHOW_MANA", "Show Energy Gains", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_MANA", 1) - self.parentRow = "RowCombatText" - self.applyFunc = "CombatText_UpdateOrLoad" + this.parentRow = "RowCombatText" + this.applyFunc = "BenillaCombatText_UpdateOrLoad" - + - OptionsGlobalRow_OnLoad(self, "COMBAT_TEXT_SHOW_HONOR_GAINED", + BenillaOptionsGlobalRow_OnLoad(this, "COMBAT_TEXT_SHOW_HONOR_GAINED", "Show Honor Gained", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_HONOR_GAINED", 1) - self.parentRow = "RowCombatText" - self.applyFunc = "CombatText_UpdateOrLoad" + this.parentRow = "RowCombatText" + this.applyFunc = "BenillaCombatText_UpdateOrLoad" - + - OptionsRow_OnLoad(self, "CombatDamage", "Show Target Damage", + BenillaOptionsRow_OnLoad(this, "CombatDamage", "Show Target Damage", "OPTION_TOOLTIP_SHOW_DAMAGE") - + - OptionsRow_OnLoad(self, "CombatLogPeriodicSpells", "Periodic Damage", + BenillaOptionsRow_OnLoad(this, "CombatLogPeriodicSpells", "Periodic Damage", "OPTION_TOOLTIP_LOG_PERIODIC_EFFECTS", 1) - self.parentRow = "RowShowDamage" + this.parentRow = "RowShowDamage" - + - OptionsRow_OnLoad(self, "PetMeleeDamage", "Pet Damage", + BenillaOptionsRow_OnLoad(this, "PetMeleeDamage", "Pet Damage", "OPTION_TOOLTIP_SHOW_PET_MELEE_DAMAGE", 1) - self.parentRow = "RowShowDamage" - self.partner = { cvar = "PetSpellDamage" } + this.parentRow = "RowShowDamage" + this.partner = { cvar = "PetSpellDamage" } @@ -3544,13 +3588,13 @@ - + - OptionsFuncRow_OnLoad(self, + BenillaOptionsFuncRow_OnLoad(this, function() return SHOW_MULTI_ACTIONBAR_1 end, function(value) local on @@ -3564,13 +3608,13 @@ "0", "Show Bottom Left ActionBar", "OPTION_TOOLTIP_SHOW_MULTIBAR1") - + - OptionsFuncRow_OnLoad(self, + BenillaOptionsFuncRow_OnLoad(this, function() return SHOW_MULTI_ACTIONBAR_2 end, function(value) local on @@ -3584,13 +3628,13 @@ "0", "Show Bottom Right ActionBar", "OPTION_TOOLTIP_SHOW_MULTIBAR2") - + - OptionsFuncRow_OnLoad(self, + BenillaOptionsFuncRow_OnLoad(this, function() return SHOW_MULTI_ACTIONBAR_3 end, function(value) local on @@ -3605,13 +3649,13 @@ - + - OptionsFuncRow_OnLoad(self, + BenillaOptionsFuncRow_OnLoad(this, function() return SHOW_MULTI_ACTIONBAR_4 end, function(value) local on @@ -3625,25 +3669,25 @@ "0", "Show Right ActionBar 2", "OPTION_TOOLTIP_SHOW_MULTIBAR4", 1) - + - OptionsGlobalRow_OnLoad(self, "ALWAYS_SHOW_MULTIBARS", + BenillaOptionsGlobalRow_OnLoad(this, "ALWAYS_SHOW_MULTIBARS", "Always Show ActionBars", "OPTION_TOOLTIP_ALWAYS_SHOW_MULTIBARS") -- UIOptionsFrame.xml:680-683's click arm. - self.applyFunc = "MultiActionBar_UpdateGridVisibility" + this.applyFunc = "MultiActionBar_UpdateGridVisibility" - + - OptionsGlobalRow_OnLoad(self, "LOCK_ACTIONBAR", + BenillaOptionsGlobalRow_OnLoad(this, "LOCK_ACTIONBAR", "Lock ActionBars", "OPTION_TOOLTIP_LOCK_ACTIONBAR") @@ -3658,153 +3702,153 @@ - + - OptionsRow_OnLoad(self, "UberTooltips", "Enhanced Tooltips", + BenillaOptionsRow_OnLoad(this, "UberTooltips", "Enhanced Tooltips", "OPTION_TOOLTIP_USE_UBERTOOLTIPS") - + - OptionsRow_OnLoad(self, "statusBarText", + BenillaOptionsRow_OnLoad(this, "statusBarText", "Status Bar Text", "OPTION_TOOLTIP_STATUS_BAR") - self.cvarEvent = "STATUS_BAR_TEXT" + this.cvarEvent = "STATUS_BAR_TEXT" - + - OptionsGlobalRow_OnLoad(self, "SHOW_TARGET_OF_TARGET", + BenillaOptionsGlobalRow_OnLoad(this, "SHOW_TARGET_OF_TARGET", "Show Target of Target", "OPTION_TOOLTIP_SHOW_TARGET_OF_TARGET") - self.applyFunc = "TargetofTarget_Update" + this.applyFunc = "TargetofTarget_Update" - + - OptionsGlobalRow_OnLoad(self, "SHOW_TARGET_OF_TARGET_STATE", + BenillaOptionsGlobalRow_OnLoad(this, "SHOW_TARGET_OF_TARGET_STATE", "Show When", "OPTION_TOOLTIP_TARGETOFTARGET5", 1) - OptionsDropdownRow_Setup(self, { + BenillaOptionsDropdownRow_Setup(this, { { 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" }, }) - self.applyFunc = "TargetofTarget_Update" + this.applyFunc = "TargetofTarget_Update" - + - OptionsFuncRow_OnLoad(self, ShowingCloak, ShowCloak, "1", + BenillaOptionsFuncRow_OnLoad(this, ShowingCloak, ShowCloak, "1", "Show Cloak", "OPTION_TOOLTIP_SHOW_CLOAK") - + - OptionsFuncRow_OnLoad(self, ShowingHelm, ShowHelm, "1", + BenillaOptionsFuncRow_OnLoad(this, ShowingHelm, ShowHelm, "1", "Show Helm", "OPTION_TOOLTIP_SHOW_HELM") - + - OptionsGlobalRow_OnLoad(self, "QUEST_FADING_DISABLE", + BenillaOptionsGlobalRow_OnLoad(this, "QUEST_FADING_DISABLE", "Instant Quest Text", "OPTION_TOOLTIP_SHOW_QUEST_FADING") - + - OptionsGlobalRow_OnLoad(self, "SHOW_BUFF_DURATIONS", + BenillaOptionsGlobalRow_OnLoad(this, "SHOW_BUFF_DURATIONS", "Buff Durations", "OPTION_TOOLTIP_SHOW_BUFF_DURATION") - self.applyFunc = "BuffButtons_UpdatePositions" + this.applyFunc = "BuffButtons_UpdatePositions" - + - OptionsGlobalRow_OnLoad(self, "AUTO_QUEST_WATCH", + BenillaOptionsGlobalRow_OnLoad(this, "AUTO_QUEST_WATCH", "Automatic Quest Tracking", "OPTION_TOOLTIP_AUTO_QUEST_WATCH") - + - OptionsRow_OnLoad(self, "profanityFilter", "Profanity Filter", + BenillaOptionsRow_OnLoad(this, "profanityFilter", "Profanity Filter", "OPTION_TOOLTIP_PROFANITY_FILTER") - + - OptionsFuncRow_OnLoad(self, TutorialsEnabled, + BenillaOptionsFuncRow_OnLoad(this, TutorialsEnabled, BenillaOptionsFrame_SetTutorialsEnabled, "1", "Show Tutorials", "OPTION_TOOLTIP_SHOW_TUTORIALS") - + - OptionsRow_OnLoad(self, "showGameTips", + BenillaOptionsRow_OnLoad(this, "showGameTips", "Show Loading Screen Tips", "OPTION_TOOLTIP_SHOW_TIPOFTHEDAY") - + - OptionsGlobalRow_OnLoad(self, "SHOW_NEWBIE_TIPS", + BenillaOptionsGlobalRow_OnLoad(this, "SHOW_NEWBIE_TIPS", "Show Detailed Tooltips", "OPTION_TOOLTIP_SHOW_NEWBIE_TIPS") @@ -3818,19 +3862,19 @@ - + - OptionsRow_OnLoad(self, "guildMemberNotify", + BenillaOptionsRow_OnLoad(this, "guildMemberNotify", "Guild Member Alert", "OPTION_TOOLTIP_GUILDMEMBER_ALERT") - + @@ -3838,41 +3882,41 @@ - OptionsGlobalRow_OnLoad(self, "REMOVE_CHAT_DELAY", + BenillaOptionsGlobalRow_OnLoad(this, "REMOVE_CHAT_DELAY", "Remove Chat Hover Delay", "OPTION_TOOLTIP_REMOVE_CHAT_DELAY") - self.applyFunc = "ChatFrame_ApplyMouseOverDelay" + this.applyFunc = "BenillaChatFrame_ApplyMouseOverDelay" - + - OptionsRow_OnLoad(self, "ChatBubbles", + BenillaOptionsRow_OnLoad(this, "ChatBubbles", "Show Chat Bubbles", "OPTION_TOOLTIP_CHAT_BUBBLES") - + - OptionsRow_OnLoad(self, "showLootSpam", + BenillaOptionsRow_OnLoad(this, "showLootSpam", "Detailed Loot Information", "OPTION_TOOLTIP_SHOW_LOOT_SPAM") - + - OptionsRow_OnLoad(self, "ChatBubblesParty", + BenillaOptionsRow_OnLoad(this, "ChatBubblesParty", "Show Party Chat Bubbles", "OPTION_TOOLTIP_PARTY_CHAT_BUBBLES") @@ -3880,78 +3924,78 @@ and writes it (l.337). The filter drops a SpamMessages.dbc match in every chat type but CHAT_MSG_FILTERED (`0x49aad2`). --> - + - OptionsRow_OnLoad(self, "spamFilter", "Disable Spam Filter", + BenillaOptionsRow_OnLoad(this, "spamFilter", "Disable Spam Filter", "OPTION_TOOLTIP_DISABLE_SPAM_FILTER") - self.invert = 1 + this.invert = 1 - + - + - OptionsRow_OnLoad(self, "nameplateShowEnemies", - "Enemy Name Plates") + BenillaOptionsFuncRow_OnLoad(this, BenillaOptionsFrame_GetEnemyPlates, + BenillaOptionsFrame_SetEnemyPlates, "0", "Enemy Name Plates") - + - OptionsRow_OnLoad(self, "nameplateShowFriends", - "Friendly Name Plates") + BenillaOptionsFuncRow_OnLoad(this, BenillaOptionsFrame_GetFriendlyPlates, + BenillaOptionsFrame_SetFriendlyPlates, "0", "Friendly Name Plates") - + - OptionsRow_OnLoad(self, "UnitNamePlayer", "Player Names", + BenillaOptionsRow_OnLoad(this, "UnitNamePlayer", "Player Names", "OPTION_TOOLTIP_SHOW_PLAYER_NAMES") - + - OptionsRow_OnLoad(self, "UnitNamePlayerGuild", "Player Guild Names", + BenillaOptionsRow_OnLoad(this, "UnitNamePlayerGuild", "Player Guild Names", "OPTION_TOOLTIP_SHOW_GUILD_NAMES", 1) - self.parentRow = "RowPlayerNames" + this.parentRow = "RowPlayerNames" - + - OptionsRow_OnLoad(self, "UnitNameNPC", "NPC Names", + BenillaOptionsRow_OnLoad(this, "UnitNameNPC", "NPC Names", "OPTION_TOOLTIP_SHOW_NPC_NAMES") - + - OptionsRow_OnLoad(self, "UnitNameOwn", "Show Own Name", + BenillaOptionsRow_OnLoad(this, "UnitNameOwn", "Show Own Name", "OPTION_TOOLTIP_SHOW_OWN_NAME") @@ -3997,10 +4041,10 @@ - KeyBindings_CharacterToggle(this) + BenillaKeyBindings_CharacterToggle(this) GameTooltip:SetOwner(this, "ANCHOR_RIGHT") - GameTooltip:SetText(KeyBindings_String("CHARACTER_SPECIFIC_KEYBINDING_TOOLTIP", + GameTooltip:SetText(BenillaKeyBindings_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() @@ -4010,119 +4054,119 @@ getglobal(this:GetName() .. "Label"):SetText( - KeyBindings_String("CHARACTER_SPECIFIC_KEYBINDINGS", "Character Specific Key Bindings")) + BenillaKeyBindings_String("CHARACTER_SPECIFIC_KEYBINDINGS", "Character Specific Key Bindings")) - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4140,100 +4184,106 @@ ScrollFrame_OnLoad() - - FauxScrollFrame_OnVerticalScroll(KEYBINDINGS_ROW_HEIGHT, KeyBindingsPage_Update) + FauxScrollFrame_OnVerticalScroll(BENILLA_KEYBINDINGS_ROW_HEIGHT, BenillaKeyBindingsPage_Update) - if not KeyBindingsPage.selected then + if BenillaKeyBindingsPage.selected then + BenillaKeyBindings_OnMouseWheel(arg1) + else ScrollFrameTemplate_OnMouseWheel(arg1) end - + - if not KeyBindingsPage.selected then + if BenillaKeyBindingsPage.selected then + BenillaKeyBindings_OnMouseWheel(arg1) + else BenillaFauxScrollFrame_OnMouseWheel(getglobal(this:GetName() .. "ScrollFrame"), arg1) end + BenillaKeyBindings_OnKeyDown(arg1) - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - @@ -4355,13 +4405,22 @@ BenillaOptionsFrame_SelectCategory(this.selectedCategory or "Controls") if UpdateMicroButtons then UpdateMicroButtons() end - + + + this:EnableKeyboard(false) + this:EnableMouseWheel(false) + + BenillaKeyBindings_OnKeyDown() + BenillaKeyBindings_OnKeyDown(arg1) + BenillaKeyBindings_OnMouseWheel(arg1) + BenillaOptionsFrameSearchBox:SetText("") - OptionsPage_DiscardPending() - KeyBindings_SetSelected(nil) - KeyBindings_Output("") + BenillaOptionsPage_DiscardPending() + BenillaKeyBindings_SetSelected(nil) + BenillaKeyBindings_Output("") if UpdateMicroButtons then UpdateMicroButtons() end diff --git a/crates/benilla-app/assets/ui/ScriptLogFrame.xml b/crates/benilla-app/assets/ui/ScriptLogFrame.xml index 375c1dcc..9a2abc30 100644 --- a/crates/benilla-app/assets/ui/ScriptLogFrame.xml +++ b/crates/benilla-app/assets/ui/ScriptLogFrame.xml @@ -1,16 +1,20 @@ diff --git a/crates/benilla-app/assets/ui/ScrollTemplates.xml b/crates/benilla-app/assets/ui/ScrollTemplates.xml index 0a7cfd07..19a3f3e8 100644 --- a/crates/benilla-app/assets/ui/ScrollTemplates.xml +++ b/crates/benilla-app/assets/ui/ScrollTemplates.xml @@ -183,7 +183,7 @@ - BenillaFauxScrollBar_OnValueChanged(self, arg1) + BenillaFauxScrollBar_OnValueChanged(this, arg1) diff --git a/crates/benilla-app/assets/ui/benilla.toc b/crates/benilla-app/assets/ui/benilla.toc deleted file mode 100644 index 9170c73a..00000000 --- a/crates/benilla-app/assets/ui/benilla.toc +++ /dev/null @@ -1,167 +0,0 @@ -# The built-in interface, in load order: a bare filename is ours, from `assets/ui`; a path is -# the reference's own file, off the player's patch chain. Entry 0, Fonts.xml, loads alone into -# every boot VM, from Startup on; the rest loads on entering the world, then third-party addons. -# The font objects thus exist before the login screen; the reference loads Fonts.xml with the -# rest of FrameXML. -# `inherits=`, `parent=` and a named `relativeTo=` resolve only against names declared above; a -# missing one only warns (the template is skipped, the parent falls back to the enclosing frame). -# A later Lua global or template replaces an earlier one; a named frame publishes its global -# only while the name is free. -# A stock `.xml` that does not `