68 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| -- luacheck: globals Character
 | |
| ---@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
 | |
| 
 | |
| local function tryRepair()
 | |
| 	clickRepairButton()
 | |
| 	-- local success = clickRepairButton()
 | |
| 	-- if success then
 | |
| 	-- 	-- MyModGlobal.debugPrint("Successfully clicked repair button")
 | |
| 	-- else
 | |
| 	-- 	-- MyModGlobal.debugPrint("Failed to click repair button")
 | |
| 	-- end
 | |
| end
 | |
| 
 | |
| return {
 | |
| 	tryRepair = tryRepair
 | |
| }
 |