Difference between revisions of "RegisterHookFunction"
From The Official Visionaire Studio: Adventure Game Engine Wiki
| Line 9: | Line 9: | ||
===Arguments=== | ===Arguments=== | ||
====hook==== | ====hook==== | ||
| − | :'''"string"''' - The operation for which the hook function should be called. Currently supported hooks: "setTextPosition" (the hook is called everytime the position of a displayed text is set), "getActionText" (the hook is called everytime to get the currently displayed action text). | + | :'''"string"''' - The operation for which the hook function should be called. Currently supported hooks: "setTextPosition" (the hook is called everytime the position of a displayed text is set), "getActionText" (the hook is called everytime to get the currently displayed action text), "getWalkAnimationIndex" (the hook is called everytime a character changes its direction during walking). |
====hookFunction==== | ====hookFunction==== | ||
| − | :'''"string"''' - The name of the lua function which is called when the hook is executed. "setTextPosition": The function should take exactly one argument which is the affected visionaire object. The function must return a boolean value: true if the operation was handled in the hook function, false if the operation was not handled and should be handled by the engine (as if there were no hook). | + | :'''"string"''' - The name of the lua function which is called when the hook is executed. |
| + | :"setTextPosition": The function should take exactly one argument which is the affected visionaire object. The function must return a boolean value: true if the operation was handled in the hook function, false if the operation was not handled and should be handled by the engine (as if there were no hook). | ||
:"getActionText": The function should take exactly one argument which is the current mouse position (a table containing x- and y-position). The function must return a string value which will be used as the current action text. | :"getActionText": The function should take exactly one argument which is the current mouse position (a table containing x- and y-position). The function must return a string value which will be used as the current action text. | ||
| + | :"getCharacterAnimationIndex": The function takes exactly 3 arguments: the character (visionaire object), animation type () and new direction (degrees). The function must return an integer value which specifies the walk animation to use for the new direction (0-based index). | ||
| + | :If -1 is returned the index is handled by the engine (as if there were no hook). | ||
===Flags=== | ===Flags=== | ||
===Return Values=== | ===Return Values=== | ||
None. | None. | ||
===Examples=== | ===Examples=== | ||
| − | + | Example 1: setTextPosition | |
| − | + | <syntaxhighlight> | |
| + | function adaptedTextPosition(text) | ||
| + | -- show texts of character Hero 10 pixel below character position | ||
| + | local owner = text:getLink(VTextOwner) | ||
| + | if owner:getId().tableId == eCharacters and owner:getName() == 'Hero' then | ||
| + | local pos = owner:getPoint(VCharacterPosition) | ||
| + | pos.y = pos.y + 10 | ||
| + | text:setValue(VTextPosition, pos) | ||
| + | return true | ||
| + | end | ||
| + | return false | ||
| + | end | ||
| + | |||
| + | registerHookFunction("setTextPosition", "adaptedTextPosition") | ||
| + | |||
| + | </syntaxhighlight> | ||
| + | Example 2: getActionText | ||
| + | <syntaxhighlight> | ||
| + | function myActionText(mousePos) | ||
| + | -- individual action text: object name (in current language) of object below cursor, if there is no object then '<empty>' is shown as action text | ||
| + | local obj = game:getLink(VGameCurrentObject) | ||
| + | if obj:getId().tableId == eObjects then | ||
| + | return 'current object: ' .. obj:getTextStr(VObjectName) | ||
| + | end | ||
| + | return '<empty>' | ||
| + | end | ||
| + | |||
| + | registerHookFunction("getActionText", "myActionText") | ||
| + | |||
| + | </syntaxhighlight> | ||
Revision as of 21:27, 30 September 2014
Contents
registerHookFunction
Available since: v3.0
Registers a hook function for a specific operation.
Lua Syntax:
registerHookFunction(hook, hookFunction)
Arguments
hook
- "string" - The operation for which the hook function should be called. Currently supported hooks: "setTextPosition" (the hook is called everytime the position of a displayed text is set), "getActionText" (the hook is called everytime to get the currently displayed action text), "getWalkAnimationIndex" (the hook is called everytime a character changes its direction during walking).
hookFunction
- "string" - The name of the lua function which is called when the hook is executed.
- "setTextPosition": The function should take exactly one argument which is the affected visionaire object. The function must return a boolean value: true if the operation was handled in the hook function, false if the operation was not handled and should be handled by the engine (as if there were no hook).
- "getActionText": The function should take exactly one argument which is the current mouse position (a table containing x- and y-position). The function must return a string value which will be used as the current action text.
- "getCharacterAnimationIndex": The function takes exactly 3 arguments: the character (visionaire object), animation type () and new direction (degrees). The function must return an integer value which specifies the walk animation to use for the new direction (0-based index).
- If -1 is returned the index is handled by the engine (as if there were no hook).
Flags
Return Values
None.
Examples
Example 1: setTextPosition
function adaptedTextPosition(text)
-- show texts of character Hero 10 pixel below character position
local owner = text:getLink(VTextOwner)
if owner:getId().tableId == eCharacters and owner:getName() == 'Hero' then
local pos = owner:getPoint(VCharacterPosition)
pos.y = pos.y + 10
text:setValue(VTextPosition, pos)
return true
end
return false
end
registerHookFunction("setTextPosition", "adaptedTextPosition")Example 2: getActionText
function myActionText(mousePos)
-- individual action text: object name (in current language) of object below cursor, if there is no object then '<empty>' is shown as action text
local obj = game:getLink(VGameCurrentObject)
if obj:getId().tableId == eObjects then
return 'current object: ' .. obj:getTextStr(VObjectName)
end
return '<empty>'
end
registerHookFunction("getActionText", "myActionText")