Add quick terminal hotkey

This commit is contained in:
2025-04-04 09:04:38 +02:00
parent a289115312
commit 3a5dea231e
2 changed files with 93 additions and 71 deletions

View File

@@ -28,6 +28,7 @@ else
QICK_FABRICATOR = Keys.K, QICK_FABRICATOR = Keys.K,
QICK_DECONSTRUCTOR = Keys.J, QICK_DECONSTRUCTOR = Keys.J,
QICK_MEDICAL_FABRICATOR = Keys.M, QICK_MEDICAL_FABRICATOR = Keys.M,
QICK_TERMINAL = Keys.N,
NESTED_CONTAINERS = true, NESTED_CONTAINERS = true,
DEBUG_MODE = true, DEBUG_MODE = true,
}, },
@@ -97,88 +98,93 @@ else
LuaUserData.RegisterType("Barotrauma.Items.Components.Repairable") LuaUserData.RegisterType("Barotrauma.Items.Components.Repairable")
LuaUserData.RegisterType("Barotrauma.VisualSlot") LuaUserData.RegisterType("Barotrauma.VisualSlot")
-- Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable) Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
-- if not PlayerInput.KeyHit(MyModGlobal.CONFIG.QUICKSTACK_KEYS) then return end if not PlayerInput.KeyHit(MyModGlobal.CONFIG.QUICKSTACK_KEYS) then return end
-- quickstack.quickStackItems(instance) quickstack.quickStackItems(instance)
-- end, Hook.HookMethodType.After) end, Hook.HookMethodType.After)
-- Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable) Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
-- if not PlayerInput.KeyHit(MyModGlobal.CONFIG.STACK_TO_CURSOR) then return end if not PlayerInput.KeyHit(MyModGlobal.CONFIG.STACK_TO_CURSOR) then return end
-- if not PlayerInput.IsShiftDown() then if not PlayerInput.IsShiftDown() then
-- quickstack.stackToCursor() quickstack.stackToCursor()
-- else else
-- quickstack.stackAllToCursor() quickstack.stackAllToCursor()
-- end end
-- end, Hook.HookMethodType.After) end, Hook.HookMethodType.After)
-- Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable) Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
-- if not PlayerInput.KeyHit(MyModGlobal.CONFIG.FABRICATOR_KEY) then return end if not PlayerInput.KeyHit(MyModGlobal.CONFIG.FABRICATOR_KEY) then return end
-- fabricatorstack.tryStackFabricator(instance) fabricatorstack.tryStackFabricator(instance)
-- end, Hook.HookMethodType.After) end, Hook.HookMethodType.After)
-- Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable) -- Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
-- if not PlayerInput.KeyHit(MyModGlobal.CONFIG.FIX) then return end -- if not PlayerInput.KeyHit(MyModGlobal.CONFIG.FIX) then return end
-- hotkeyrepair.tryRepair() -- hotkeyrepair.tryRepair()
-- end, Hook.HookMethodType.After) -- end, Hook.HookMethodType.After)
-- Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable) Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
-- if not PlayerInput.KeyHit(MyModGlobal.CONFIG.MAX_BUY) then return end if not PlayerInput.KeyHit(MyModGlobal.CONFIG.MAX_BUY) then return end
-- quickbuy.tryBuy() quickbuy.tryBuy()
-- end, Hook.HookMethodType.After) end, Hook.HookMethodType.After)
-- local throttle = 0.1 local throttle = 0.1
-- local throttleTimer = 0 local throttleTimer = 0
-- Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable) Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
-- if PlayerInput.Mouse4ButtonClicked() then if PlayerInput.Mouse4ButtonClicked() then
-- cursormacroer.setTargetInventory() cursormacroer.setTargetInventory()
-- end end
-- if not PlayerInput.IsAltDown() then return end if not PlayerInput.IsAltDown() then return end
-- if Timer.GetTime() < throttleTimer then return end if Timer.GetTime() < throttleTimer then return end
-- throttleTimer = Timer.GetTime() + throttle throttleTimer = Timer.GetTime() + throttle
-- -- We can not use shift because holding shift means we're moving half a stack -- We can not use shift because holding shift means we're moving half a stack
-- -- Fuck me sideways -- Fuck me sideways
-- -- if not PlayerInput.IsShiftDown() then return end -- if not PlayerInput.IsShiftDown() then return end
-- -- if not PlayerInput.PrimaryMouseButtonClicked() then return end -- if not PlayerInput.PrimaryMouseButtonClicked() then return end
-- cursormacroer.tryStackCursorItem() cursormacroer.tryStackCursorItem()
-- end, Hook.HookMethodType.After) end, Hook.HookMethodType.After)
-- Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable) Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
-- if not PlayerInput.KeyHit(MyModGlobal.CONFIG.UNLOAD) then return end if not PlayerInput.KeyHit(MyModGlobal.CONFIG.UNLOAD) then return end
-- quickunload.tryUnloadCursorItem() quickunload.tryUnloadCursorItem()
-- end, Hook.HookMethodType.After) end, Hook.HookMethodType.After)
-- Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable) Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
-- if not PlayerInput.KeyHit(MyModGlobal.CONFIG.RELOAD) then return end if not PlayerInput.KeyHit(MyModGlobal.CONFIG.RELOAD) then return end
-- quickreload.tryReloadCursorItem(PlayerInput.IsShiftDown()) quickreload.tryReloadCursorItem(PlayerInput.IsShiftDown())
-- end, Hook.HookMethodType.After) end, Hook.HookMethodType.After)
-- -- Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable) -- Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)i
-- -- if not PlayerInput.KeyHit(MyModGlobal.CONFIG.LOOT) then return end -- if not PlayerInput.KeyHit(MyModGlobal.CONFIG.LOOT) then return end
-- -- quickloot.tryLoot() -- quickloot.tryLoot()
-- -- end, Hook.HookMethodType.After) -- end, Hook.HookMethodType.After)
-- Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable) Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
-- if not PlayerInput.KeyHit(MyModGlobal.CONFIG.SONAR) then return end if not PlayerInput.KeyHit(MyModGlobal.CONFIG.SONAR) then return end
-- sonarpinger.tryPing() sonarpinger.tryPing()
-- end, Hook.HookMethodType.After) end, Hook.HookMethodType.After)
-- Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable) Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
-- if not PlayerInput.KeyHit(MyModGlobal.CONFIG.AOEPICKUP) then return end if not PlayerInput.KeyHit(MyModGlobal.CONFIG.AOEPICKUP) then return end
-- aoepickup.tryAoePickup() aoepickup.tryAoePickup()
-- end, Hook.HookMethodType.After) end, Hook.HookMethodType.After)
-- Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable) Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
-- if not PlayerInput.KeyHit(MyModGlobal.CONFIG.QICK_FABRICATOR) then return end if not PlayerInput.KeyHit(MyModGlobal.CONFIG.QICK_FABRICATOR) then return end
-- quickaccess.tryAccessFabricator(PlayerInput.IsShiftDown()) quickaccess.tryAccessFabricator(PlayerInput.IsShiftDown())
-- end, Hook.HookMethodType.After) end, Hook.HookMethodType.After)
-- Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable) Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
-- if not PlayerInput.KeyHit(MyModGlobal.CONFIG.QICK_DECONSTRUCTOR) then return end if not PlayerInput.KeyHit(MyModGlobal.CONFIG.QICK_DECONSTRUCTOR) then return end
-- quickaccess.tryAccessDeconstructor(PlayerInput.IsShiftDown()) quickaccess.tryAccessDeconstructor(PlayerInput.IsShiftDown())
-- end, Hook.HookMethodType.After) end, Hook.HookMethodType.After)
-- Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable) Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
-- if not PlayerInput.KeyHit(MyModGlobal.CONFIG.QICK_MEDICAL_FABRICATOR) then return end if not PlayerInput.KeyHit(MyModGlobal.CONFIG.QICK_MEDICAL_FABRICATOR) then return end
-- quickaccess.tryAccessMedicalFabricator(PlayerInput.IsShiftDown()) quickaccess.tryAccessMedicalFabricator(PlayerInput.IsShiftDown())
-- end, Hook.HookMethodType.After) end, Hook.HookMethodType.After)
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.QICK_TERMINAL) then return end
quickaccess.tryAccessTerminal(PlayerInput.IsShiftDown())
end, Hook.HookMethodType.After)
end end

View File

@@ -5,7 +5,7 @@ local dump = require "Cyka.dump"
-- TODO: Also cook terminal -- TODO: Also cook terminal
-- terminal d:28 t:logic,smallitem c:Terminal, Holdable, ConnectionPanel, -- terminal d:28 t:logic,smallitem c:Terminal, Holdable, ConnectionPanel,
local machines = "fabricator,deconstructor,medicalfabricator" local machines = "fabricator,deconstructor,medicalfabricator,navterminal"
Hook.Patch("Cyka", "Barotrauma.Character", "CanInteractWith", Hook.Patch("Cyka", "Barotrauma.Character", "CanInteractWith",
{ "Barotrauma.Item", "System.Single&", "System.Boolean" }, { "Barotrauma.Item", "System.Single&", "System.Boolean" },
function(_, ptable) function(_, ptable)
@@ -20,7 +20,7 @@ Hook.Patch("Cyka", "Barotrauma.Character", "CanInteractWith",
local cachedFabricator = nil local cachedFabricator = nil
local cachedDeconstructor = nil local cachedDeconstructor = nil
local cachedMedicalFabricator = nil local cachedMedicalFabricator = nil
local cachedTerminal = nil
local function select(item) local function select(item)
MyModGlobal.debugPrint("Selecting " .. tostring(item)) MyModGlobal.debugPrint("Selecting " .. tostring(item))
item.Prefab.GrabWhenSelected = false item.Prefab.GrabWhenSelected = false
@@ -109,8 +109,24 @@ local function tryAccessMedicalFabricator(force)
select(medicalFabricator) select(medicalFabricator)
end end
local function tryAccessTerminal(force)
local terminal = cachedTerminal
if not terminal or force then
terminal = findByComponent("navterminal", "Steering")
if not terminal then
MyModGlobal.debugPrint("No terminal found")
return
end
cachedTerminal = terminal
end
MyModGlobal.debugPrint("Selecting terminal")
select(terminal)
end
return { return {
tryAccessFabricator = tryAccessFabricator, tryAccessFabricator = tryAccessFabricator,
tryAccessDeconstructor = tryAccessDeconstructor, tryAccessDeconstructor = tryAccessDeconstructor,
tryAccessMedicalFabricator = tryAccessMedicalFabricator, tryAccessMedicalFabricator = tryAccessMedicalFabricator,
tryAccessTerminal = tryAccessTerminal,
} }