|
|
| Line 94: |
Line 94: |
| = Map Engine = | | = Map Engine = |
|
| |
|
| * [[MapEngine]](''map_filename'', ''fps''): Start the map engine at ''map_filename'' at speed ''fps''.
| | {{API:Functions/Map}} |
| * [[IsMapEngineRunning]](): Check if the map engine is running or not.
| |
| * [[ExitMapEngine]](): Flag the map engine to exit on the next update.
| |
| | |
| == Map object ==
| |
| | |
| * Sphere [[Object-Map|Map]] object: Holds map data.
| |
| | |
| * [[GetMapEngine]](): Obtain the current [[Object-Map|Map]] object.
| |
| * [[Map.save]](''filename''): Save a [[Object-Map|Map]] object to ''filename''.
| |
| * [[Map.layerAppend]](''layer_width'', ''layer_height'', ''tile_index''): Adds a new layer to the [[Object-Map|Map]] object.
| |
| | |
| == Engine control ==
| |
| | |
| * [[GetMapEngineFrameRate]](): Get the frames per second the map engine is running at.
| |
| * [[SetMapEngineFrameRate]](''fps''): Change map engine frame rate.
| |
| * [[RenderMap]](): Draw all map layers and persons.
| |
| * [[UpdateMapEngine]](): Update state of map entities, animations and events in map engine.
| |
| | |
| == Map control ==
| |
| | |
| * [[GetCurrentMap]](): Get the filename of the loaded map.
| |
| * [[ChangeMap]](''map_filename''): Change the current map of the map engine.
| |
| | |
| == Map scripts ==
| |
| | |
| * [[SetRenderScript]](''script''): Set ''script'' to run after each time the map is drawn.
| |
| * [[SetUpdateScript]](''script''): Set ''script'' to run after each map engine update.
| |
| | |
| * [[CallMapScript]](''map_event''): Call map script associated with the current map.
| |
| | |
| * [[CallDefaultMapScript]](''map_event''): Call map script set by [[SetDefaultMapScript]]().
| |
| * [[SetDefaultMapScript]](''map_event'', ''script''): Set map engine to run ''script'' when ''map_event'' occurs for any map.
| |
| | |
| * Map event constants:
| |
| ** <var>SCRIPT_ON_ENTER_MAP</var>
| |
| ** <var>SCRIPT_ON_LEAVE_MAP</var>
| |
| ** <var>SCRIPT_ON_LEAVE_MAP_NORTH</var>
| |
| ** <var>SCRIPT_ON_LEAVE_MAP_EAST</var>
| |
| ** <var>SCRIPT_ON_LEAVE_MAP_SOUTH</var>
| |
| ** <var>SCRIPT_ON_LEAVE_MAP_WEST</var>
| |
| | |
| * [[SetDelayScript]](''frames'', ''script''): Run ''script'' after ''frames'' delay.
| |
| | |
| == Within the map engine ==
| |
| | |
| * [[SetColorMask]](''color'', ''frames''): Draws ''color'' over the map engine for ''frames'' duration.
| |
| | |
| === Maps ===
| |
| | |
| ==== Zones ====
| |
| | |
| * [[AreZonesAt]](''x'', ''y'', ''layer''): Check if there are any zones at (''x'', ''y'') on ''layer''.
| |
| * [[ExecuteZones]](''x'', ''y'', ''layer''): Run all scripts for zones that (''x'', ''y'') on ''layer'' is in.
| |
| * [[GetNumZones]](): Get the number of zones on the current map.
| |
| | |
| ===== For each zone =====
| |
| | |
| * [[GetCurrentZone]](): Get the current zone index in a zone script.
| |
| * [[ExecuteZoneScript]](''zone''): Execute the script of ''zone''.
| |
| | |
| ===== Zone position =====
| |
| | |
| * [[GetZoneX]](''zone''): Get the X coordinate of ''zone'' on the map.
| |
| * [[GetZoneY]](''zone''): Get the Y coordinate of ''zone'' on the map.
| |
| * [[GetZoneWidth]](''zone''): Get the pixel width of ''zone''.
| |
| * [[GetZoneHeight]](''zone''): Get the pixel height of ''zone''.
| |
| | |
| * [[GetZoneLayer]](''zone''): Get the map layer index of ''zone''.
| |
| * [[SetZoneLayer]](''zone'', ''layer''): Sets the map layer of ''zone'' to ''layer''.
| |
| | |
| ==== Triggers ====
| |
| | |
| * [[IsTriggerAt]](''x'', ''y'', ''layer''): Check if there is a trigger at pixel coords (''x'', ''y'') on ''layer''.
| |
| | |
| ===== For each trigger =====
| |
| | |
| * [[ExecuteTrigger]](''x'', ''y'', ''layer''): Activate the trigger at (''x'', ''y'') on ''layer'' if one exists.
| |
| | |
| ==== Layers ====
| |
| | |
| * [[GetNumLayers]](): Get number of layers in the current map.
| |
| | |
| ===== For each layer =====
| |
| | |
| * [[GetLayerName]](''layer''): Get the name of ''layer''.
| |
| * [[GetLayerWidth]](''layer''): Get width of ''layer'' in tiles.
| |
| * [[GetLayerHeight]](''layer''): Get height of ''layer'' in tiles.
| |
| * [[SetLayerWidth]](''layer'', ''width''): Set width of ''layer'' in tiles.
| |
| * [[SetLayerHeight]](''layer'', ''height''): Set height of ''layer'' in tiles.
| |
| | |
| * [[SetTile]](''tile_x'', ''tile_y'', ''layer'', ''tile''): Plot a tile at the given map location.
| |
| | |
| * [[GetLayerAngle]](''layer''): Get ''layer'' angle in radians.
| |
| * [[SetLayerAngle]](''layer'', ''angle''): Set ''layer'' rotation to ''angle'' radians.
| |
| | |
| * [[GetLayerMask]](''layer''): Get [[Object-Color|Color]] mask of ''layer''.
| |
| * [[SetLayerMask]](''layer'', ''color_mask''): Mask the layer with ''color_mask''.
| |
| | |
| * [[IsLayerReflective]](''layer''): Find if ''layer'' shows person entity reflections.
| |
| * [[SetLayerReflective]](''layer'', ''reflect''): Set reflectivity of ''layer''.
| |
| | |
| * [[IsLayerVisible]](''layer''): Find if ''layer'' is visible.
| |
| * [[SetLayerVisible]](''layer'', ''visible''): Set visibility of ''layer''.
| |
| | |
| * [[SetLayerScaleFactorX]](''layer'', ''factor''): Set width scaling of ''layer'' to ''factor''.
| |
| * [[SetLayerScaleFactorY]](''layer'', ''factor''): Set height scaling of ''layer'' to ''factor''.
| |
| | |
| * [[SetLayerRenderer]](''layer'', ''script''): Run ''script'' after ''layer'' has been rendered.
| |
| | |
| ==== Tiles ====
| |
| | |
| * [[GetNumTiles]](): Get the number of tiles in the current map tileset.
| |
| * [[GetTile]](''tile_x'', ''tile_y'', ''layer''): Get the tileset index of the tile at the given map position.
| |
| * [[GetTileWidth]](): Get the image width of tiles in the current map tileset.
| |
| * [[GetTileHeight]](): Get the image height of tiles in the current map tileset.
| |
| * [[ReplaceTilesOnLayer]](''layer'', ''old_tile'', ''new_tile''): Substitute all ''old_tile'' with ''new_tile'' on ''layer''.
| |
| | |
| ===== For each tile =====
| |
| | |
| * [[GetTileName]](''tile''): Get the name of ''tile''.
| |
| | |
| * [[GetTileImage]](''tile''): Get the [[Object-Image|Image]] of ''tile'' in the current map tileset.
| |
| * [[SetTileImage]](''tile'', ''image''): Change the [[Object-Image|Image]] of ''tile''.
| |
| | |
| * [[SetTileSurface]](''tile'', ''surface''): Change the [[Object-Surface|Surface]] of ''tile''.
| |
| | |
| ===== Tile animations =====
| |
| | |
| * [[GetNextAnimatedTile]](''tile''): Get next tile index of animation from ''tile''.
| |
| * [[SetNextAnimatedTile]](''tile'', ''next''): Set next tile in a tile animation sequence.
| |
| | |
| * [[GetTileDelay]](''tile''): Get frame delay of animated tile.
| |
| * [[SetTileDelay]](''tile'', ''delay''): Set a frame delay for this ''tile'' animation frame.
| |
| | |
| === Input ===
| |
| | |
| ==== Player input ====
| |
| | |
| * [[AttachInput]](''person''): Give input control of ''person'' to the player.
| |
| * [[DetachInput]](): Remove input control given by [[AttachInput]]() or [[AttachPlayerInput]]().
| |
| | |
| * [[AttachPlayerInput]](''person'', ''player''): Give input control of ''person'' to ''player''.
| |
| * [[DetachPlayerInput]](''person''): Remove input control from ''person'' given to a player.
| |
| | |
| * [[IsInputAttached]](): Check if input is attached to a person or not.
| |
| * [[GetInputPerson]](): Get the name of the person who holds player input.
| |
| | |
| ==== Binding scripts to keys ====
| |
| | |
| * [[BindKey]](''key'', ''on_key_down'', ''on_key_up''): Bind scripts to key events.
| |
| * [[UnbindKey]](''key''): Remove script binding from the given ''key''.
| |
| | |
| ==== Binding scripts to joystick buttons ====
| |
| | |
| * [[BindJoystickButton]](''joystick'', ''button'', ''on_button_down'', ''on_button_up''): Bind scripts to joystick button events.
| |
| * [[UnbindJoystickButton]](joystick, button): Unbind joystick buttons from scripts.
| |
| | |
| === Camera ===
| |
| | |
| ==== Following persons ====
| |
| | |
| * [[AttachCamera]](''person''): Make the camera follow ''person''.
| |
| * [[DetachCamera]](): Stop the camera from following any person.
| |
| | |
| * [[IsCameraAttached]](): Check if the camera is attached to a person.
| |
| * [[GetCameraPerson]](): Get the name of the person the camera is attached to.
| |
| | |
| ==== Camera position ====
| |
| | |
| * [[GetCameraX]](): Get the map X coordinate the camera is focusing on.
| |
| * [[SetCameraX]](''x_pos''): Set the X coordinate of the camera.
| |
| | |
| * [[GetCameraY]](): Get the map Y coordinate the camera is focusing on.
| |
| * [[SetCameraY]](''y_pos''): Set the Y coordinate of the camera.
| |
| | |
| ==== Coordinate conversion ====
| |
| | |
| * [[MapToScreenX]](''layer'', ''x''): Convert a map X coordinate to screen X.
| |
| * [[MapToScreenY]](''layer'', ''y''): Convert a map Y coordinate to screen Y.
| |
| * [[ScreenToMapX]](''layer'', ''x''): Convert a screen X coordinate to map ''layer'' X.
| |
| * [[ScreenToMapY]](''layer'', ''y''): Convert a screen Y coordinate to map ''layer'' Y.
| |
| | |
| === Persons ===
| |
| | |
| * [[GetPersonList]](): Get an array of all named persons on the current map.
| |
| | |
| * [[CreatePerson]](''name'', ''spriteset'', ''destroy_with_map''): Create a new person called ''name'' with ''spriteset'' (filename).
| |
| * [[DestroyPerson]](''name''): Destroy the person called ''name''.
| |
| | |
| ==== Person position ====
| |
| | |
| * [[GetPersonX]](''name''): Get the map X coordinate of ''name''.
| |
| * [[GetPersonY]](''name''): Get the map Y coordinate of ''name''.
| |
| * [[GetPersonLayer]](''name''): Get the map layer index of ''name''.
| |
| | |
| * [[SetPersonX]](''name'', ''x''): Set the map X of ''name'' to ''x''.
| |
| * [[SetPersonY]](''name'', ''y''): Set the map Y of ''name'' to ''y''.
| |
| * [[SetPersonLayer]](''name'', ''layer''): Set the map layer of ''name'' to ''layer''.
| |
| | |
| * [[GetPersonXFloat]](''name''): Get the map X of ''name'' to floating point accuracy.
| |
| * [[GetPersonYFloat]](''name''): Get the map Y of ''name'' to floating point accuracy.
| |
| * [[SetPersonXYFloat]](''name'', ''x'', ''y''): Set the position of ''name'' with floating point accuracy.
| |
| | |
| ==== Directions and animations ====
| |
| | |
| * [[GetPersonDirection]](''name''): Get the animation direction of person ''name''.
| |
| * [[SetPersonDirection]](''name'', ''direction''): Set animation direction of person ''name'' to ''direction''.
| |
| | |
| * [[GetPersonFrame]](''name''): gets the frame and direction that are currently being displayed.
| |
| * [[SetPersonFrame]](''name'', ''frame''): sets which frame from which direction to display.
| |
| | |
| * [[SetPersonFrameRevert]](''name'', ''delay''): sets the delay between when the person last moved and returning to first frame.
| |
| * [[GetPersonFrameRevert]](''name''): gets the delay between when the person last moved and returning to first frame.
| |
| | |
| ==== Movement speed ====
| |
| | |
| * [[SetPersonSpeed]](''name'', ''speed''): sets the person's speed.
| |
| * [[SetPersonSpeedXY]](''name'', ''speed_x'', ''speed_y''): sets the person's x and y speed individually.
| |
| | |
| * [[GetPersonSpeedX]](''name''): gets a person's x speed.
| |
| * [[GetPersonSpeedY]](''name''): gets a person's y speed.
| |
| | |
| ==== Appearance ====
| |
| | |
| [[GetPersonOffsetX]](name)
| |
| - gets the horizontal offset used for blitting frames
| |
| | |
| [[SetPersonOffsetX]](name, x)
| |
| - sets the horizontal offset to use for blitting frames
| |
| e.g. setting it to 10 would result in the person frame blitted always 10 pixels
| |
| to the right, while the person's x-position would remain unchanged.
| |
| | |
| [[GetPersonOffsetY]](name)
| |
| - gets the vertical offset used for blitting frames
| |
| | |
| [[SetPersonOffsetY]](name, y)
| |
| - sets the vertical offset to use for blitting frames
| |
| e.g. setting it to 10 would result in the person frame blitted always 10 pixels
| |
| to the bottom, while the person's y-position would remain unchanged.
| |
| | |
| * [[GetPersonAngle]](''name''): Get the rotation angle of the person ''name''.
| |
| * [[SetPersonAngle]](''name'', ''angle''): Set the rotation angle of person ''name'' to ''angle'' radians.
| |
| | |
| * [[GetPersonMask]](''name''): Get the masking [[Object-Color|color]] of the person ''name''.
| |
| * [[SetPersonMask]](''name'', ''color''): Set the color-channel multiplying mask ''[[Object-Color|color]]'' of the person ''name''.
| |
| | |
| * [[SetPersonScaleFactor]](''name'', ''scale_w'', ''scale_h''): Rescales the sprite of person ''name'' by relative factors ''scale_w'' and ''scale_h''.
| |
| * [[SetPersonScaleAbsolute]](''name'', ''width'', ''height''): Rescales the sprite of person ''name'' to ''width'' * ''height'' pixels.
| |
| | |
| * [[GetPersonSpriteset]](''name''): Get the spriteset of person ''name''.
| |
| * [[SetPersonSpriteset]](''name'', ''spriteset''): Set the spriteset of person ''name'' to ''spriteset'' (Sphere [[Object-Spriteset|Spriteset]] object).
| |
| | |
| * [[IsPersonVisible]](''name''): Check if the person with ''name'' is visible or not. <code>true</code>: visible, <code>false</code>: not visible.
| |
| * [[SetPersonVisible]](''name'', ''visible''): Make person ''name'' visible or invisible. <code>true</code>: visible, <code>false</code>: not visible.
| |
| | |
| ==== Obstruction ====
| |
| | |
| * [[GetPersonBase]](''name''): Get a person's spriteset obstruction base.
| |
| | |
| * [[IsPersonObstructed]](''name'', ''x'', ''y''): Check if person "''name''" would be obstructed at (''x'', ''y'').
| |
| | |
| * [[IgnoreTileObstructions]](''person'', ''ignore''): Sets whether person "''person''" ignores tile obstructions.
| |
| | |
| * [[IsIgnoringTileObstructions]](''person''): Checks whether "''person''" is ignoring tile obstructions.
| |
| | |
| [[GetObstructingTile]](name, x, y)
| |
| - returns -1 if name isn't obstructed by a tile at x, y,
| |
| - returns the tile index of the tile if name is obstructed at x, y
| |
| | |
| [[GetObstructingPerson]](name, x, y)
| |
| - returns "" if name isn't obstructed by person at x, y,
| |
| - returns the name of the person if name is obstructed at x, y
| |
| | |
| [[IgnorePersonObstructions]](person, ignore)
| |
| - Sets whether 'person' should ignore other spriteset bases
| |
|
| |
| [[IsIgnoringPersonObstructions]](person)
| |
| - Returns true if 'person' is ignoring person obstructions, else false
| |
| | |
| [[GetPersonIgnoreList]](person)
| |
| - Returns a list of people that 'name' is ignoring
| |
|
| |
| [[SetPersonIgnoreList]](person, ignore_list)
| |
| - Tells 'person' to ignore everyone in ignore_list
| |
| e.g. SetPersonIgnoreList("White-Bomberman", ["bomb", "powerup"]);
| |
| Tells White-Bomberman to not be obstructed by bombs or powerups
| |
| | |
| ==== Talk interaction ====
| |
| | |
| [[SetTalkActivationKey]](key)
| |
| [[GetTalkActivationKey]]()
| |
| - set key used to activate talk scripts
| |
| | |
| [[SetTalkDistance]](pixels)
| |
| [[GetTalkDistance]]()
| |
| - set distance to check for talk script activation
| |
| | |
| ==== Following other persons ====
| |
| | |
| * [[FollowPerson]](''name'', ''leader'', ''pixels''): Makes a sprite follow behind another sprite.
| |
| | |
| ==== Person data ====
| |
| | |
| [[GetPersonData]](name)
| |
| - gets a data object assiocated with the person 'name'
| |
| There are certain default properties/values filled in by the engine, they are:
| |
| num_frames - the number of frames for the person's current direction
| |
| num_directions - the number of directions for the person
| |
| width - the width of the spriteset's current frame
| |
| height - the height of the spriteset's current frame
| |
| leader - the person that this person is following, or "" if no-one...
| |
| Any other properties are free for you to fill with values,
| |
| e.g.
| |
| var data = GetPersonData("Jimmy");
| |
| var num_frames = data["num_frames"];
| |
|
| |
| [[SetPersonData]](name, data)
| |
| - sets the 'data' object assiocated with the person 'name'
| |
| e.g.
| |
| var data = GetPersonData("Jimmy");
| |
| data["talked_to_jimmy"] = true;
| |
| SetPersonData("Jimmy", data);
| |
| | |
| [[SetPersonValue]](name, key, value)
| |
| - SetPersonValue("Jimmy", "talked_to_jimmy", true); // same as code above
| |
|
| |
| [[GetPersonValue]](name, key)
| |
| - GetPersonValue("Jimmy", "num_frames"); // same as previous code above
| |
| | |
| ==== Person control ====
| |
| | |
| * [[SetPersonScript]](name, which, script)
| |
| * Person scripts:
| |
| ** SCRIPT_ON_CREATE
| |
| ** SCRIPT_ON_DESTROY
| |
| ** SCRIPT_ON_ACTIVATE_TOUCH
| |
| ** SCRIPT_ON_ACTIVATE_TALK
| |
| ** SCRIPT_COMMAND_GENERATOR
| |
| * [[CallPersonScript]](name, which)
| |
| | |
| * [[GetCurrentPerson]]()
| |
| | |
| * [[QueuePersonCommand]](''name'', ''command'', ''immediate''): add a command to the person's command queue.
| |
| * Person commands:
| |
| ** <var>COMMAND_WAIT</var>
| |
| ** <var>COMMAND_ANIMATE</var>
| |
| ** <var>COMMAND_FACE_NORTH</var>
| |
| ** <var>COMMAND_FACE_NORTHEAST</var>
| |
| ** <var>COMMAND_FACE_EAST</var>
| |
| ** <var>COMMAND_FACE_SOUTHEAST</var>
| |
| ** <var>COMMAND_FACE_SOUTH</var>
| |
| ** <var>COMMAND_FACE_SOUTHWEST</var>
| |
| ** <var>COMMAND_FACE_WEST</var>
| |
| ** <var>COMMAND_FACE_NORTHWEST</var>
| |
| ** <var>COMMAND_MOVE_NORTH</var>
| |
| ** <var>COMMAND_MOVE_EAST</var>
| |
| ** <var>COMMAND_MOVE_SOUTH</var>
| |
| ** <var>COMMAND_MOVE_WEST</var>
| |
| * [[QueuePersonScript]](''name'', ''script'', ''immediate''): Queue a script command on the command queue of ''name''.
| |
| * [[IsCommandQueueEmpty]](''name''): Check if the command queue of the person is empty.
| |
| * [[ClearPersonCommands]](name): Clears the command queue of the named person.
| |
|
| |
|
| = Sphere objects = | | = Sphere objects = |