107 lines
2.8 KiB
Lua
107 lines
2.8 KiB
Lua
--- STEAMODDED HEADER
|
|
--- MOD_NAME: J Cursor
|
|
--- MOD_ID: JCursor
|
|
--- MOD_AUTHOR: [Jie65535, MarioMak967]
|
|
--- MOD_DESCRIPTION: Custom Cursor (Mods/JCursor/Cursor.png CursorHover.png CursorDrag.png)
|
|
|
|
----------------------------------------------
|
|
------------MOD CODE -------------------------
|
|
|
|
-- The x-coordinate in the cursor's hot spot.
|
|
local HOT_X = 30
|
|
-- The y-coordinate in the cursor's hot spot.
|
|
local HOT_Y = 6
|
|
|
|
local currentCursor
|
|
local function setCursor(cursor)
|
|
if currentCursor ~= cursor then
|
|
currentCursor = cursor
|
|
love.mouse.setCursor(cursor)
|
|
end
|
|
end
|
|
|
|
local MOD_DIRECTORY = "/Mods/JCursor"
|
|
local function getCursor(state, hotx, hoty)
|
|
local filename = MOD_DIRECTORY .. "/" .. state .. ".png"
|
|
if love.filesystem.exists(filename) then
|
|
return love.mouse.newCursor(filename, hotx, hoty)
|
|
end
|
|
return nil
|
|
end
|
|
|
|
local cursorDefault
|
|
local cursorHover
|
|
local cursorDrag
|
|
local function updateCursors()
|
|
cursorDefault = getCursor("Cursor", HOT_X, HOT_Y)
|
|
cursorHover = getCursor("CursorHover", HOT_X, HOT_Y)
|
|
cursorDrag = getCursor("CursorDrag", HOT_X, HOT_Y)
|
|
if cursorDefault then
|
|
setCursor(cursorDefault)
|
|
end
|
|
end
|
|
|
|
-- init cursors
|
|
updateCursors()
|
|
|
|
local function myDrag()
|
|
if cursorDrag then
|
|
setCursor(cursorDrag)
|
|
-- sendDebugMessage("drag start!")
|
|
end
|
|
end
|
|
|
|
local function myStopDrag()
|
|
if cursorDrag and cursorDefault and currentCursor == cursorDrag then
|
|
setCursor(cursorDefault)
|
|
-- sendDebugMessage("drag stop!")
|
|
end
|
|
end
|
|
|
|
|
|
local hoverLevel = 0
|
|
local function myHover()
|
|
if cursorHover and currentCursor == cursorDefault and hoverLevel == 0 then
|
|
setCursor(cursorHover)
|
|
-- sendDebugMessage("hover start!")
|
|
end
|
|
hoverLevel = hoverLevel + 1
|
|
end
|
|
|
|
local function myStopHover()
|
|
if hoverLevel > 0 then
|
|
hoverLevel = hoverLevel - 1
|
|
end
|
|
if cursorHover
|
|
and cursorDefault
|
|
and currentCursor == cursorHover
|
|
and hoverLevel == 0
|
|
then
|
|
setCursor(cursorDefault)
|
|
-- sendDebugMessage("hover stop!")
|
|
end
|
|
end
|
|
|
|
local function injectCodeBefore(originalFunction, codeToInject)
|
|
return function(...)
|
|
codeToInject(...)
|
|
return originalFunction(...)
|
|
end
|
|
end
|
|
|
|
Node.drag = injectCodeBefore(Node.drag, myDrag)
|
|
Node.stop_drag = injectCodeBefore(Node.stop_drag, myStopDrag)
|
|
-- Node.hover = injectCodeBefore(Node.hover, myHover)
|
|
-- Node.stop_hover = injectCodeBefore(Node.stop_hover, myStopHover)
|
|
|
|
Card.hover = injectCodeBefore(Card.hover, myHover)
|
|
Card.stop_hover = injectCodeBefore(Card.stop_hover, myStopHover)
|
|
|
|
-- UIElement.hover = injectCodeBefore(UIElement.hover, myHover)
|
|
-- UIElement.stop_hover = injectCodeBefore(UIElement.stop_hover, myStopHover)
|
|
|
|
sendDebugMessage("JCursor loaded!")
|
|
|
|
----------------------------------------------
|
|
------------MOD CODE END----------------------
|