Add hotkey repair buttoner
This commit is contained in:
@@ -12,6 +12,7 @@ MyModGlobal = {
|
|||||||
QUICKSTACK_KEYS = Keys.F,
|
QUICKSTACK_KEYS = Keys.F,
|
||||||
FABRICATOR_KEY = Keys.V,
|
FABRICATOR_KEY = Keys.V,
|
||||||
MAX_BUY = Keys.B,
|
MAX_BUY = Keys.B,
|
||||||
|
FIX = Keys.R,
|
||||||
NESTED_CONTAINERS = true,
|
NESTED_CONTAINERS = true,
|
||||||
DEBUG_MODE = true,
|
DEBUG_MODE = true,
|
||||||
},
|
},
|
||||||
@@ -48,6 +49,10 @@ MyModGlobal.debugPrint = function(message)
|
|||||||
end
|
end
|
||||||
|
|
||||||
require("Cyka.quickstack")
|
require("Cyka.quickstack")
|
||||||
|
require("Cyka.fabricatorstack")
|
||||||
|
require("Cyka.quickbuy")
|
||||||
|
require("Cyka.hotkeyrepair")
|
||||||
|
require("Cyka.xpticker")
|
||||||
|
|
||||||
print(MyModGlobal.MOD_NAME .. " v" .. MyModGlobal.MOD_VERSION .. " loaded!")
|
print(MyModGlobal.MOD_NAME .. " v" .. MyModGlobal.MOD_VERSION .. " loaded!")
|
||||||
|
|
||||||
@@ -64,6 +69,7 @@ LuaUserData.RegisterType("Barotrauma.PurchasedItem")
|
|||||||
LuaUserData.RegisterType("Barotrauma.ItemPrefab")
|
LuaUserData.RegisterType("Barotrauma.ItemPrefab")
|
||||||
LuaUserData.RegisterType("Barotrauma.Location+StoreInfo")
|
LuaUserData.RegisterType("Barotrauma.Location+StoreInfo")
|
||||||
LuaUserData.MakeMethodAccessible(Descriptors["Barotrauma.CargoManager"], "GetConfirmedSoldEntities")
|
LuaUserData.MakeMethodAccessible(Descriptors["Barotrauma.CargoManager"], "GetConfirmedSoldEntities")
|
||||||
|
LuaUserData.RegisterType("Barotrauma.Items.Components.Repairable")
|
||||||
|
|
||||||
-- -- Register necessary type to access VisualSlot
|
-- -- Register necessary type to access VisualSlot
|
||||||
-- LuaUserData.RegisterType("Barotrauma.VisualSlot")
|
-- LuaUserData.RegisterType("Barotrauma.VisualSlot")
|
||||||
@@ -125,41 +131,3 @@ LuaUserData.MakeMethodAccessible(Descriptors["Barotrauma.CargoManager"], "GetCon
|
|||||||
--
|
--
|
||||||
-- return nil, nil, nil
|
-- return nil, nil, nil
|
||||||
-- end
|
-- end
|
||||||
|
|
||||||
-- -- Register necessary types for detecting repairable objects
|
|
||||||
-- LuaUserData.RegisterType("Barotrauma.Items.Components.Repairable")
|
|
||||||
-- LuaUserData.MakeFieldAccessible(Descriptors["Barotrauma.Items.Components.Repairable"], "RepairButton")
|
|
||||||
--
|
|
||||||
-- ---@return Barotrauma.Item|nil, Barotrauma.Items.Components.Repairable|nil
|
|
||||||
-- local function getRepairableObjectInFocus()
|
|
||||||
-- -- Make sure we have a controlled character
|
|
||||||
-- local controlledCharacter = Character.Controlled
|
|
||||||
-- if not controlledCharacter then return nil, nil end
|
|
||||||
--
|
|
||||||
-- -- Check if we have a selected item - this is necessary for repair interfaces to show
|
|
||||||
-- local selectedItem = controlledCharacter.SelectedItem
|
|
||||||
-- if not selectedItem then return nil, nil end
|
|
||||||
--
|
|
||||||
-- -- Check if the selected item is in fact the repairable object itself
|
|
||||||
-- for _, component in pairs(selectedItem.Components) do
|
|
||||||
-- if component.name == "Repairable" then
|
|
||||||
-- -- Check if repair interface should be shown
|
|
||||||
-- if component:ShouldDrawHUD(controlledCharacter) then
|
|
||||||
-- return selectedItem, component
|
|
||||||
-- end
|
|
||||||
-- end
|
|
||||||
-- end
|
|
||||||
--
|
|
||||||
-- -- Nothing found
|
|
||||||
-- return nil, nil
|
|
||||||
-- end
|
|
||||||
--
|
|
||||||
-- ---@return boolean
|
|
||||||
-- local function isRepairButtonVisible()
|
|
||||||
-- local _, repairableComponent = getRepairableObjectInFocus()
|
|
||||||
-- if not repairableComponent then return false end
|
|
||||||
--
|
|
||||||
-- -- Check if the repair button exists and is visible
|
|
||||||
-- local repairButton = repairableComponent.RepairButton
|
|
||||||
-- return repairButton ~= nil and repairButton.Visible
|
|
||||||
-- end
|
|
||||||
|
|||||||
65
QuickStackToBag/Lua/Cyka/hotkeyrepair.lua
Normal file
65
QuickStackToBag/Lua/Cyka/hotkeyrepair.lua
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
---@return Barotrauma.Item|nil, Barotrauma.Items.Components.Repairable|nil
|
||||||
|
local function getRepairableObjectInFocus()
|
||||||
|
-- Make sure we have a controlled character
|
||||||
|
local controlledCharacter = Character.Controlled
|
||||||
|
if not controlledCharacter then
|
||||||
|
-- MyModGlobal.debugPrint("No controlled character")
|
||||||
|
return nil, nil
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Check if we have a selected item - this is necessary for repair interfaces to show
|
||||||
|
local selectedItem = controlledCharacter.SelectedItem
|
||||||
|
if not selectedItem then
|
||||||
|
-- MyModGlobal.debugPrint("No selected item")
|
||||||
|
return nil, nil
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Check if the selected item is in fact the repairable object itself
|
||||||
|
for _, component in pairs(selectedItem.Components) do
|
||||||
|
if component.name == "Repairable" then
|
||||||
|
-- Check if repair interface should be shown
|
||||||
|
if component:ShouldDrawHUD(controlledCharacter) then
|
||||||
|
return selectedItem, component
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Nothing found
|
||||||
|
return nil, nil
|
||||||
|
end
|
||||||
|
|
||||||
|
---@return boolean
|
||||||
|
local function clickRepairButton()
|
||||||
|
local item, repairableComponent = getRepairableObjectInFocus()
|
||||||
|
if not item or not repairableComponent then
|
||||||
|
-- MyModGlobal.debugPrint("No repairable object in focus")
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Access the controlled character
|
||||||
|
local controlledCharacter = Character.Controlled
|
||||||
|
if not controlledCharacter then
|
||||||
|
-- MyModGlobal.debugPrint("No controlled character")
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Call the StartRepairing method directly
|
||||||
|
-- The second parameter (FixActions.Repair = 1) indicates a repair action
|
||||||
|
local result = repairableComponent:StartRepairing(controlledCharacter, 1)
|
||||||
|
-- MyModGlobal.debugPrint("StartRepairing result: " .. tostring(result))
|
||||||
|
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
|
||||||
|
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||||
|
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.FIX) then return end
|
||||||
|
-- MyModGlobal.debugPrint("Fix key pressed")
|
||||||
|
|
||||||
|
-- Try to click the repair button
|
||||||
|
local success = clickRepairButton()
|
||||||
|
if success then
|
||||||
|
-- MyModGlobal.debugPrint("Successfully clicked repair button")
|
||||||
|
else
|
||||||
|
-- MyModGlobal.debugPrint("Failed to click repair button")
|
||||||
|
end
|
||||||
|
end, Hook.HookMethodType.After)
|
||||||
Reference in New Issue
Block a user