Legacy:Functions/Map

From Spherical
< Legacy:Functions
Revision as of 23:29, 1 June 2013 by Apollolux (talk | contribs) (created, needs reformatting)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  • MapEngine(map_filename, fps): Start the map engine at map_filename at speed fps.
  • IsMapEngineRunning(): Check if the map engine is running or not.
  • ExitMapEngine(): Flag the map engine to exit on the next update.

Map object

  • Sphere Map object: Holds map data.

Engine control

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.
  • Map event constants:
    • SCRIPT_ON_ENTER_MAP
    • SCRIPT_ON_LEAVE_MAP
    • SCRIPT_ON_LEAVE_MAP_NORTH
    • SCRIPT_ON_LEAVE_MAP_EAST
    • SCRIPT_ON_LEAVE_MAP_SOUTH
    • SCRIPT_ON_LEAVE_MAP_WEST

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
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.

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

For each layer
  • SetTile(tile_x, tile_y, layer, tile): Plot a tile at the given map location.

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
Tile animations
  • GetTileDelay(tile): Get frame delay of animated tile.
  • SetTileDelay(tile, delay): Set a frame delay for this tile animation frame.

Input

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

Camera

Following persons

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

  • 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

  • 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

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.
  • 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.
  • IsPersonVisible(name): Check if the person with name is visible or not. true: visible, false: not visible.
  • SetPersonVisible(name, visible): Make person name visible or invisible. true: visible, false: not visible.

Obstruction

 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)
  • QueuePersonCommand(name, command, immediate): add a command to the person's command queue.
  • Person commands:
    • COMMAND_WAIT
    • COMMAND_ANIMATE
    • COMMAND_FACE_NORTH
    • COMMAND_FACE_NORTHEAST
    • COMMAND_FACE_EAST
    • COMMAND_FACE_SOUTHEAST
    • COMMAND_FACE_SOUTH
    • COMMAND_FACE_SOUTHWEST
    • COMMAND_FACE_WEST
    • COMMAND_FACE_NORTHWEST
    • COMMAND_MOVE_NORTH
    • COMMAND_MOVE_EAST
    • COMMAND_MOVE_SOUTH
    • COMMAND_MOVE_WEST
  • 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.