Block

From AGI Wiki
Revision as of 11:04, 24 March 2019 by Andrew Korson (talk | contribs) (Created page with "The '''block''' command sets up an invisible rectangular block that can restrict screen object movement. == Syntax == block(byt X1, byt Y1, number|by...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

The block command sets up an invisible rectangular block that can restrict screen object movement.

Syntax

block(byt X1, byt Y1, byt X2, byt Y2);

Remarks

Screen objects are not allowed to cross into or out of the bounding rectangle created by the block command, unless an ignore.blocks command has been executed for that object. If an object is inside the block when the block is created, it will not be allowed to move on or outside the block. If the object is outside the block, it will not be allowed to move inside it, but it will move onto the block. Note that this means it is possible for objects to 'jump' over a block if their step size is large enough. AGI uses the leftmost pixel of a screen object's baseline to compare to the block coordinates.

There can only be one block on the screen at a time. If the block command is executed when a block already exists, the new block will replace the old one.The unblock command will remove a block from the screen.

See the Blocks discussion in the Managing Obstacles topic for more information.

Possible Errors

AGI expects the coordinates to be in upper-left to lower-right format. X1 must be less than X2 and Y1 must be less than Y2, or the block will always be ignored by all screen objects.

(X2 - X1) and (Y2 - Y1) must both be greater than 1. If either is not, there will be no 'interior' area inside the block, and the block will always be ignored by all screen objects.

Example

Code:

<syntaxhighlight lang="agi"> block(25, 25, 100, 100); [ create a block ignore.block(o1); [ object 1 will ignore the block ... observe.block(o1); [ now object 1 will observe the block ... unblock(); [ remove the block

[ examples of blocks that will NOT work block(100, 100, 25, 25); [ coordinates are in wrong order; this block will never work ... block(25, 25, 100, 26); [ difference is Y value is too small so this block will never work

</syntaxhighlight>

Technical Information

Required Interpreter Version: Available in all AGI versions.
Byte-Code Value: 90 (0x5A hex)

See Also

Screen Object/View Commands unblock
ignore.blocks
observe.blocks
Managing Obstacles