From 8a58ecbaebb4cb8e8a85b330ac47d15a570b0cb4 Mon Sep 17 00:00:00 2001 From: Cruor Date: Wed, 27 Mar 2024 21:15:00 +0100 Subject: [PATCH] Fix oversight with new simplified entity/trigger callbacks Some functions were getting the wrong amount of arguments or unpacking values where they shouldn't --- src/entities.lua | 18 ++++++++++++++++-- src/triggers.lua | 25 ++++++++++++++++++++++--- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/src/entities.lua b/src/entities.lua index b4c50080..068686a3 100644 --- a/src/entities.lua +++ b/src/entities.lua @@ -1160,6 +1160,8 @@ function entities.getHandler(entity) end -- All extra arguments considered default value +-- Specifically for functions that need both entity and room +-- Will unpack returned tables, do not use for functions that actually want table returns function entities.getHandlerValue(entity, room, key, ...) local handler = entities.getHandler(entity) @@ -1209,7 +1211,13 @@ function entities.nodeLimits(room, layer, entity) end function entities.nodeLineRenderType(layer, entity) - return entities.getHandlerValue(entity, nil, "nodeLineRenderType", false) + local handler = entities.getHandler(entity) + + if handler and handler.nodeLineRenderType then + return utils.callIfFunction(handler.nodeLineRenderType, entity) + end + + return false end function entities.nodeLineRenderOffset(layer, entity, node, nodeIndex) @@ -1224,7 +1232,13 @@ function entities.nodeLineRenderOffset(layer, entity, node, nodeIndex) end function entities.nodeVisibility(layer, entity) - return entities.getHandlerValue(entity, nil, "nodeVisibility", "selected") + local handler = entities.getHandler(entity) + + if handler and handler.nodeVisibility then + return utils.callIfFunction(handler.nodeVisibility, entity) + end + + return "selected" end function entities.ignoredFields(layer, entity) diff --git a/src/triggers.lua b/src/triggers.lua index a437ed4a..3e36c5b6 100644 --- a/src/triggers.lua +++ b/src/triggers.lua @@ -635,6 +635,8 @@ function triggers.getHandler(trigger) end -- All extra arguments considered default value +-- Specifically for functions that need both entity and room +-- Will unpack returned tables, do not use for functions that actually want table returns function triggers.getHandlerValue(trigger, room, key, ...) local handler = triggers.getHandler(trigger) @@ -676,11 +678,23 @@ function triggers.nodeLimits(room, layer, trigger) end function triggers.nodeLineRenderType(layer, trigger) - return triggers.getHandlerValue(trigger, nil, "nodeLineRenderType", "line") + local handler = triggers.getHandler(trigger) + + if handler and handler.nodeLineRenderType then + return utils.callIfFunction(handler.nodeLineRenderType, trigger) + end + + return "line" end function triggers.nodeVisibility(layer, trigger) - return triggers.getHandlerValue(trigger, nil, "nodeVisibility", "selected") + local handler = triggers.getHandler(trigger) + + if handler and handler.nodeVisibility then + return utils.callIfFunction(handler.nodeVisibility, trigger) + end + + return "selected" end function triggers.ignoredFields(layer, trigger) @@ -707,8 +721,13 @@ end function triggers.fieldOrder(layer, trigger) local defaultFieldOrder = {"x", "y", "width", "height"} + local handler = triggers.getHandler(trigger) + + if handler and handler.fieldOrder then + return utils.callIfFunction(handler.fieldOrder, trigger) + end - return triggers.getHandlerValue(trigger, nil, "fieldOrder", defaultFieldOrder) + return defaultFieldOrder end function triggers.fieldInformation(layer, trigger)