Difference between revisions of "Workflow Functions"

From The Official Visionaire Studio: Adventure Game Engine Wiki
Line 11: Line 11:
 
{| class="ts"
 
{| class="ts"
 
|-
 
|-
! style="text-align:left" | setCond() || Update or toggle specified condition via global or direct linking || AFRLme
+
! style="text-align:left" | setCond(cond, val, path) || Update or toggle specified condition via global or direct linking || AFRLme
 
|}
 
|}
 
Syntax:
 
Syntax:
Line 19: Line 19:
 
Scripts (definition):
 
Scripts (definition):
 
<syntaxhighlight lang="lua">
 
<syntaxhighlight lang="lua">
function setCond(cond, val, cs)
+
function setCond(cond, val, path)
  if cs ~= nil then cond = game.CurrentScene.Conditions[cond] else cond = Conditions[cond] end -- check global or direct path
+
  if path ~= nil then cond = path.Conditions[cond] else cond = Conditions[cond] end -- check global or direct path
 
  -- + --
 
  -- + --
 
  if val == nil then -- check if condition should be toggled
 
  if val == nil then -- check if condition should be toggled
Line 36: Line 36:
 
Usage example #2: toggle condition example, access condition belonging to current scene
 
Usage example #2: toggle condition example, access condition belonging to current scene
 
<syntaxhighlight lang="lua">
 
<syntaxhighlight lang="lua">
setCond("example", nil, true)
+
setCond("example", nil, game.CurrentScene)
 
</syntaxhighlight>
 
</syntaxhighlight>
  

Revision as of 20:52, 20 August 2022

What is a workflow function? A workflow function is a function that you can script to save yourself time by reducing the amount of work you need to do. The function could perform one specific task, or it could perform multiple tasks.


Quick note: Workflow functions are not meant to replace action parts. Mostly they are used to save time while scripting, by reducing the amount of code you need to type out, which could be done by shortening what you have to type out, or by iteration.

Examples

setCond(cond, val, path) Update or toggle specified condition via global or direct linking AFRLme

Syntax:

setCond(condition name, boolean value or nil, condition belongs to current scene?)

Scripts (definition):

function setCond(cond, val, path)
 if path ~= nil then cond = path.Conditions[cond] else cond = Conditions[cond] end -- check global or direct path
 -- + --
 if val == nil then -- check if condition should be toggled
  if cond.Value then cond.Value = false else Cond.Value = true end -- toggle condition
 else
  cond.Value = val -- update condition based on val (true or false)
 end
end

Usage example #1: set condition example as true, access globally

setCond("example", true)

Usage example #2: toggle condition example, access condition belonging to current scene

setCond("example", nil, game.CurrentScene)


Example #2: Basic Iteration

Script section > definition type script:

function updateConditions(t, val)
 for i = 1, #t do -- iterate through table stored in the t input variable
  Conditions[ t[i] ].Value = val -- update all conditions listed in t variable to val
 end
end

Usage: update all listed conditions to true

updateConditions({"example1", "example2", "example3"}, true)


Example #3: Advanced Iteration

Script section > definition type script:

function updateData(t)
 for i = 1, #t do -- iterate through table stored in the t input variable
  if t[i].typ == "bool" then -- check if condition
   Conditions[ t[i].name ].Value = t[i].val -- update condition
  elseif t[i].typ == "int" then -- check if value (number)
   Values[ t[i].name ].Int = t[i].val -- update value
  elseif t[i].typ == "str" then -- check if value (string)
   Values[ t[i].name ].String = t[i].val -- update value
  end
 end
end

Usage: update mixed data types using a table & the function

local tbl = {

{name = "condition_1", val = true, typ = "bool"},
{name = "condition_2", val = false, typ = "bool"},
{name = "value_1", val = 10, typ = "int"},
{name = "value_1", val = "hello world", typ = "str"}

}

updateData(tbl) -- pass the tbl data through the function