Phase 0: accessibility mod bootstrap and TTS
Establishes the mod skeleton and gets speech working end to end. Game-file footprint: one line in main.lua. - accessibility/init.lua: sole entry point. Patch registry, hooks states.switch (announces screen changes) and states.update (per-frame speech flush, avoiding an edit to love.update). Startup self-test prints what resolved -- the canary for when a future game version moves something we hook. - accessibility/speech.lua: TTS wrapper. pcall-guarded so a missing DLL degrades to silence instead of crashing. Queues utterances within a frame and joins them, since one game turn emits several console.print calls and speaking each with interrupt would leave only the last audible. - accessibility/stateNames.lua: spoken names for the 28 states. - accessibility/vendor/love2talk: vendored TTS library, see VENDORED.md. Loads Tolk.dll by absolute path via love.filesystem.getSource() and adds that directory via SetDllDirectory, so the DLLs live in the project instead of needing an elevated copy into Program Files. Verified with lovec against NVDA: TTS available, speech channel yes, 'Main menu' spoken on startup. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
-- Human-readable names for the game's states, spoken on screen change.
|
||||
--
|
||||
-- Keys must match the filenames in states/ exactly, since states.switch() is
|
||||
-- called with the filename. Anything missing falls back to the raw state name,
|
||||
-- which is ugly but never wrong.
|
||||
|
||||
return {
|
||||
main_menu = "Main menu",
|
||||
new_game = "New game",
|
||||
load_game = "Load game",
|
||||
settings_menu = "Settings",
|
||||
config_menu = "Configuration",
|
||||
keybindings_menu = "Key bindings",
|
||||
menu_message = "Message",
|
||||
menu_text = "Text",
|
||||
|
||||
ingame = "Game",
|
||||
ingame_observe = "Examine",
|
||||
ingame_dialogue = "Conversation",
|
||||
ingame_message = "Message",
|
||||
ingame_popup = "Popup",
|
||||
ingame_say = "Console",
|
||||
ingame_wait = "Wait",
|
||||
ingame_targeting_melee = "Targeting, melee",
|
||||
ingame_targeting_throw = "Targeting, throw",
|
||||
|
||||
inventory = "Inventory",
|
||||
character = "Character",
|
||||
journal = "Journal",
|
||||
research = "Research",
|
||||
worldmap = "World map",
|
||||
actions_menu = "Actions",
|
||||
trade = "Trade",
|
||||
craft = "Crafting",
|
||||
refine = "Refining",
|
||||
alchemy_table = "Alchemy table",
|
||||
narration = "Narration",
|
||||
}
|
||||
Reference in New Issue
Block a user