Difference between revisions of "AGIWiki/controller"

From ScummVM :: Wiki
Jump to navigation Jump to search
m (Created page with "__NOTOC__ {{AGIWiki}} The '''controller''' command returns TRUE if a menu item or key assigned to the controller has been selected or pressed during the current cycle. == Synt...")
 
m (Text replacement - "</source>" to "</syntaxhighlight>")
Tags: Mobile edit Mobile web edit
 
(7 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
__NOTOC__
 
__NOTOC__
 
 
{{AGIWiki}}
 
{{AGIWiki}}
 +
{{AGIWiki/Test commands}}
 +
''This article refers controller-command. For information about Controllers as part of an AGI game, see [[AGIWiki/Controller|Controller]].''
  
 
The '''controller''' command returns TRUE if a menu item or key assigned to the controller has been selected or pressed during the current cycle.
 
The '''controller''' command returns TRUE if a menu item or key assigned to the controller has been selected or pressed during the current cycle.
Line 20: Line 21:
  
 
== Example ==
 
== Example ==
<syntax type="C++">
+
<syntaxhighlight lang="cpp">
//build a simple menu structure
+
//build a simple menu structure
set.menu("File");
+
set.menu("Info");
set.menu.item("Save Game      &lt;F5&gt;", c2);
+
set.menu.item("About  ", c0);
set.menu.item("Restore Game  &lt;F7&gt;", c3);
+
set.menu.item("Help    ", c1);
 +
set.menu("File");
 +
set.menu.item("Save Game      <F5>", c2);
 +
set.menu.item("Restore Game  <F7>", c3);
 +
set.menu.item("-------------------", c20);
 +
set.menu.item("Restart Game  <F9>", c4);
 +
set.menu.item("-------------------", c20);
 +
set.menu.item("Quit        <Alt Z>", c5);
 +
//disable the separators
 +
disable.item(c20);
 +
 
 +
//submit menu to agi
 +
submit.menu()
  
//submit menu to agi
+
//create keyboard shortcuts
submit.menu()
+
set.key(0, 63, c2); // 'F5'
 +
set.key(0, 65, c3); // 'F7'
 +
set.key(0, 67, c4); // 'F9'
 +
set.key(26, 0, c5); // 'Alt-Z'
  
//create keyboard shortcuts
+
//test for menu or keyboard selections
set.key(0, 63, c2); // 'F5'
+
if (controller(c2) {
set.key(0, 65, c3); // 'F7'
+
  //save game
 +
  save.game();
 +
}
 +
if (controller(c3) {
 +
  //restore game
 +
  restore.game()
 +
}
 +
</syntaxhighlight>
  
//test for menu or keyboard selections
 
if (controller(c2) {
 
  //save game
 
  save.game();
 
}
 
if (controller(c3) {
 
  //restore game
 
  restore.game()
 
}
 
...
 
</syntax>
 
 
== Technical Information ==
 
== Technical Information ==
  
Line 51: Line 63:
 
|-
 
|-
 
| style="background-color: #efefef" | '''Bytecode value'''
 
| style="background-color: #efefef" | '''Bytecode value'''
| 149 (0x95 hex)
+
| 12 (0x0C hex)
 
|}
 
|}
  

Latest revision as of 15:10, 25 October 2018

AGIWiki


Test commands

This article refers controller-command. For information about Controllers as part of an AGI game, see Controller.

The controller command returns TRUE if a menu item or key assigned to the controller has been selected or pressed during the current cycle.

Syntax

controller(ctl cA)

Remarks

Test commands are only valid in an if statement.
This statement can be combined with the NOT operator (!) to test for a controller NOT being selected.
The interpreter clears all controllers at the beginning of each cycle.
If more than one menu or keyboard entry is assigned to the controller, it does not matter which one is selected/pressed. All of them will cause the controller command to return TRUE.

Example

//build a simple menu structure
set.menu("Info");
set.menu.item("About   ", c0);
set.menu.item("Help    ", c1);
set.menu("File");
set.menu.item("Save Game      <F5>", c2);
set.menu.item("Restore Game   <F7>", c3);
set.menu.item("-------------------", c20);
set.menu.item("Restart Game   <F9>", c4);
set.menu.item("-------------------", c20);
set.menu.item("Quit        <Alt Z>", c5);
//disable the separators
disable.item(c20);

//submit menu to agi
submit.menu()

//create keyboard shortcuts
set.key(0, 63, c2); // 'F5'
set.key(0, 65, c3); // 'F7'
set.key(0, 67, c4); // 'F9'
set.key(26, 0, c5); // 'Alt-Z'

//test for menu or keyboard selections
if (controller(c2) {
  //save game
  save.game();
}
if (controller(c3) {
  //restore game
  restore.game()
}

Technical Information

Required interpreter version Available in all AGI versions
Bytecode value 12 (0x0C hex)

See Also

Sources