AGI Command Reference - String Management Commands and AGI Indirect Command: Difference between pages
m 1 revision imported |
sierraw>Andrew Branscom |
||
Line 1: | Line 1: | ||
[[Category:AGI Pages]] | [[Category:AGI Pages]] | ||
<div align="center" style="font-size: 22pt">AGI Indirect Command</div><br /> | |||
< | An indirect command is a [[AGI Logic Resource|logic]] command that requires the number of a [[AGI Resources|resource]] to be specified but uses a [[Variable (AGI)|variable]] to specify the resource number. For example compare the direct command <code>load.view</code> to the indirect command <code>load.view.v</code>: | ||
load.view(20); | |||
= | v200 = 20; | ||
load.view.v(v200); | |||
< | In the above code, both commands load VIEW.020, but <code>load.view</code> is direct because it accepts the actual number of the [[AGI View Resource|view resource]] that should be loaded. The <code>load.view.v</code> command is indirect because it does not accept the actual number of the resource that should be loaded. You have to put the number into a variable and give that to the <code>load.view.v</code> command. | ||
This probably seems like more work than is necessary, and in many cases it is. But indirect commands do have an advantage over direct commands, namely that they are more flexible. For example, the following code, from the [[agiw:AGI Studio Template Game|AGI Studio Template Game]], allows the player to teleport to any [[ROOM (AGI)|room]] in the game by entering the room number: | |||
< | <div class="CodeBlockHeader">Code:</div> | ||
<syntaxhighlight lang="agi"> | |||
if (said("tp")) { | |||
get.num("new room: ", v255); | |||
new.room.v(v255); | |||
} | |||
</syntaxhighlight> | |||
This function is not possible without indirect commands, because there is no way to know ahead of time which room the player will want to teleport to. The alternate approach of having up to 254 different commands for teleporting to each of the possible rooms in the game is obviously no good. | |||
Indirect command listing | |||
The following is a list of all the indirect commands in AGI logic. Most indirect commands end in <code>.v</code>, but there are exceptions to this rule. Also, not all commands that end in <code>.v</code> are indirect commands. | |||
< | * <code>[[add.to.pic.v]]</code> | ||
* <code>[[call.v]]</code> | |||
</ | * <code>[[cycle.time]]</code> | ||
* <code>[[discard.view.v]]</code> | |||
* <code>[[display.v]]</code> | |||
* <code>[[draw.pic]]</code> | |||
* <code>[[get.room.v]]</code> | |||
* <code>[[get.v]]</code> | |||
* <code>[[load.logics.v]]</code> | |||
* <code>[[load.pic]]</code> | |||
* <code>[[load.view.v]]</code> | |||
* <code>[[move.obj.v]]</code> | |||
* <code>[[new.room.v]]</code> | |||
* <code>[[obj.status.v]]</code> | |||
* <code>[[overlay.pic]]</code> | |||
* <code>[[position.v]]</code> | |||
* <code>[[print.at.v]]</code> | |||
* <code>[[print.v]]</code> | |||
* <code>[[put.v]]</code> | |||
* <code>[[reposition]]</code> | |||
* <code>[[reposition.to.v]]</code> | |||
* <code>[[reset.v]]</code> | |||
* <code>[[set.cel.v]]</code> | |||
* <code>[[set.dir]]</code> | |||
* <code>[[set.loop.v]]</code> | |||
* <code>[[set.priority.v]]</code> | |||
* <code>[[set.view.v]]</code> | |||
* <code>[[set.v]]</code> | |||
* <code>[[show.obj.v]]</code> | |||
* <code>[[step.size]]</code> | |||
* <code>[[step.time]]</code> | |||
* <code>[[toggle.v]]</code> | |||
==<br /> References == | ==<br /> References == | ||
Line 53: | Line 65: | ||
<references /> | <references /> | ||
==<br /> | ==<br /> Also See == | ||
* | * | ||
| | ||
[[Category:Technical Info]] | [[Category:Technical Info]] | ||
[[Category:Development]] | |||
[[Category:References]] | [[Category:References]] | ||
[[Category:AGI References]] | [[Category:AGI References]] | ||
[[Category: | [[Category:Commands]] | ||
[[Category:AGI Commands]] | [[Category:AGI Commands]] | ||
Revision as of 19:57, 8 February 2022
An indirect command is a logic command that requires the number of a resource to be specified but uses a variable to specify the resource number. For example compare the direct command load.view
to the indirect command load.view.v
:
load.view(20);
v200 = 20; load.view.v(v200);
In the above code, both commands load VIEW.020, but load.view
is direct because it accepts the actual number of the view resource that should be loaded. The load.view.v
command is indirect because it does not accept the actual number of the resource that should be loaded. You have to put the number into a variable and give that to the load.view.v
command.
This probably seems like more work than is necessary, and in many cases it is. But indirect commands do have an advantage over direct commands, namely that they are more flexible. For example, the following code, from the AGI Studio Template Game, allows the player to teleport to any room in the game by entering the room number:
if (said("tp")) {
get.num("new room: ", v255);
new.room.v(v255);
}
This function is not possible without indirect commands, because there is no way to know ahead of time which room the player will want to teleport to. The alternate approach of having up to 254 different commands for teleporting to each of the possible rooms in the game is obviously no good.
Indirect command listing
The following is a list of all the indirect commands in AGI logic. Most indirect commands end in .v
, but there are exceptions to this rule. Also, not all commands that end in .v
are indirect commands.
add.to.pic.v
call.v
cycle.time
discard.view.v
display.v
draw.pic
get.room.v
get.v
load.logics.v
load.pic
load.view.v
move.obj.v
new.room.v
obj.status.v
overlay.pic
position.v
print.at.v
print.v
put.v
reposition
reposition.to.v
reset.v
set.cel.v
set.dir
set.loop.v
set.priority.v
set.view.v
set.v
show.obj.v
step.size
step.time
toggle.v
References
Also See