Return: Difference between revisions

From EDukeWiki
Jump to navigation Jump to search
m wording
m make example run with vanilla EDuke32
Line 1: Line 1:
A '''return''' command is similar to '''[[break]]''' in that it stops code after the '''return''' from executing and thus can be used to exit a state early. However, a '''return''' proparates along a call chain of [[state]]s, so that when the following code snippet is run, only quote 125 ("SPAWNED LIGHTEFFECT1") is displayed.
A '''return''' command is similar to '''[[break]]''' in that it stops code after the '''return''' from executing and thus can be used to exit a state early. However, a '''return''' proparates along a call chain of [[state]]s, so that when the following code snippet is run, only quote 125 ("SPAWNED LIGHTEFFECT1") is displayed.


  '''definequote''' 125 SPAWNED LIGHTEFFECT1
  '''definequote''' 125 SPAWNED HEAVYHBOMB
  '''definequote''' 126 RAN EVENT_EGS
  '''definequote''' 126 RAN EVENT_EGS
  '''definequote''' 127 RAN TEST STATE
  '''definequote''' 127 RAN TEST STATE
Line 11: Line 11:
   
   
  '''onevent''' [[EVENT_EGS]]
  '''onevent''' [[EVENT_EGS]]
     ifactor LIGHTEFFECT1
     ifactor HEAVYHBOMB
     {
     {
         state teststate1  ''// after teststate1's return, return from EVENT_EGS!''
         state teststate1  ''// after teststate1's return, return from EVENT_EGS!''
Line 22: Line 22:
     {
     {
         ''// the concrete actor is irrelevant, only placeholder''
         ''// the concrete actor is irrelevant, only placeholder''
         [[spawn]] LIGHTEFFECT1 ''// --> EVENT_EGS''
         [[spawn]] HEAVYHBOMB ''// --> EVENT_EGS''
         userquote 125
         userquote 125
     }
     }

Revision as of 10:33, 23 December 2012

A return command is similar to break in that it stops code after the return from executing and thus can be used to exit a state early. However, a return proparates along a call chain of states, so that when the following code snippet is run, only quote 125 ("SPAWNED LIGHTEFFECT1") is displayed.

definequote 125 SPAWNED HEAVYHBOMB
definequote 126 RAN EVENT_EGS
definequote 127 RAN TEST STATE

state teststate1
    return
    userquote 127
ends

onevent EVENT_EGS
    ifactor HEAVYHBOMB
    {
        state teststate1  // after teststate1's return, return from EVENT_EGS!
        userquote 126
    }
endevent

onevent EVENT_LOADACTOR
    ifvare THISACTOR 0
    {
        // the concrete actor is irrelevant, only placeholder
        spawn HEAVYHBOMB  // --> EVENT_EGS
        userquote 125
    }
endevent

Replacing the return by a break in the above example would lead to quotes 126 and 125 being displayed (in that order) at run time.