* Moved my docs to the wiki
authorOndřej Hošek <ondra.hosek@gmail.com>
Sat, 22 Oct 2005 18:21:01 +0000 (18:21 +0000)
committerOndřej Hošek <ondra.hosek@gmail.com>
Sat, 22 Oct 2005 18:21:01 +0000 (18:21 +0000)
* Fixed a spelling mistake in an ifdef

SVN-Revision: 2901

docs/fileformats/fileformats.xml [deleted file]
docs/scripting/scripting.xml [deleted file]
src/worldmap.cpp

diff --git a/docs/fileformats/fileformats.xml b/docs/fileformats/fileformats.xml
deleted file mode 100644 (file)
index 2cbcb8b..0000000
+++ /dev/null
@@ -1,335 +0,0 @@
-<?xml version='1.0' ?>
-<!--
-$Id$
-
-SuperTux Documentation
-Copyright (C) 2005 Ondra Hosek <ondra.hosek@gmail.com>
-
-This document is free; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as
-published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This document is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program (see the file named 'COPYING'); if not,
-write to the Free Software Foundation, Inc., 59 Temple Place -
-Suite 330, Boston, MA 02111-1307, USA.
-
--->
-<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-
-<article xml:lang="en">
-
-<articleinfo>
-<title>SuperTux File Format Documentation</title>
-<author><firstname>Ondra</firstname><surname>Hosek</surname></author>
-</articleinfo>
-<para>This document serves the simple purpose of a reference for the files specific to SuperTux (levels, worldmaps, ...). Some of these files can be modified using an editor such as Flexlay.</para>
-<sect1><title>Brackets, brackets, brackets (About the Language)</title>
-<para>As you might have already noticed, the SuperTux definition files (just about for everything) are full of brackets ('(' and ')'). I know that <acronym>BASIC</acronym> programmers already freak out when seeing the vast amount of brackets used in C. The truth is that you can never have too many brackets. (Okay, that's a lie, but I don't know how lenient your compiler is.)</para>
-<para>"That Crazy File Format" used by SuperTux is Lisp. In most of its implementations, it is used as a programming language, but the devs simply thought why not to implement it as a data storage language. And so, the SuperTux data language, nearly fully based on Lisp, was born.</para>
-
-<sect2><title>Basic Syntax</title>
-<para>So now you expect me to teach you Lisp. "You'd like that, wouldn't ya?" Okay, okay, let me teach you a bit.</para>
-<para>Language syntax is (nearly) always best consumable when demonstrated on an example, like so:
-<programlisting>(supertux-lisp-example
-    ; This is a comment. It is initiated by a semi-colon. (Yes, you un-believer.)
-    (some-integer 120)      ; Integer values are simple to input and to understand.
-    (floaty-float 58.5)     ; Floating-point numbers should be self-explanatory too.
-    (string-thong "omg")    ; Strings are simple and C-like.
-    (intl-string _("wtf"))  ; Internationalised strings are implemented not unlike in C.
-    (boo-bool #t)           ; That's a "true"...
-    (second-bool #f)        ; ... and that's a "false". (Well duh.)
-    (integer-list 10 20 30) ; A list of integers, much like an array.
-)  ; Don't forget the closing bracket!!!
-</programlisting>
-</para>
-</sect2>
-
-</sect1>
-
-<sect1><title>Level Files</title>
-<para>The level format is a bit complex, which is why <ulink url="http://flexlay.berlios.de/">Flexlay</ulink> can prove itself very useful as an editor. If you are interested in how the levels look like or want to edit them manually (and find some of the parameters not self-explanatory enough), then you may read or skim through this section.
-<programlisting>;; Generated by Flexlay Editor (or Emacs or Vi or whatever)
-(supertux-level                      ;; This initiates a level.
-
-  (version 2)                        ;; This document only describes version 2. Version 1 is deprecated
-                                     ;; and I'm not going to teach it since it lacks a lot of features.
-
-  (name _("Some demo level"))        ;; Name of the level. Call it a nice name. Note that this should be
-                                     ;; internationalised (that's why the extra underscore and brackets).
-
-  (author "Ondra Hosek")             ;; Put your name here unless you are me (very improbable)
-
-  (sector                            ;; A level is divided into independent sectors that can be connected
-                                     ;; by doors.
-
-    (name "main")                    ;; Tux begins in the sector named "main".
-
-    (music "Ondras_chipdisko.mod")   ;; Name of the music file. See the data/music/ directory.
-    
-    (gravity 10.0)                   ;; Gravity of Tux. 10.0 is the default and sanest value (unless you
-                                     ;; apply the level design correctly).
-    
-    (tilemap                         ;; Here come the tiles.
-      (layer  "background"           ;; Currently, there are three layer types: "background",
-                                     ;; "interactive" and "foreground".
-
-      (solid  #f)                    ;; Will Tux collide with tiles in this tilemap?
-      
-      (speed  1.0)                   ;; If the tilemap is solid, this has to be 1. Basically sets how
-                                     ;; fast the tilemap scrolls.
-      
-      (width  5)                     ;; Number of tiles you plan to put in a row...
-      (height 5)                     ;; ... and in a column. (5x5 is pretty tiny; small Tux
-                                     ;; takes up 1x1 tiles, big Tux 1x2 tiles).
-      
-      (tiles                         ;; Integer lists of which tiles you want to use.
-        0 0 0 0 0                    ;; The tiles and their numbers are defined in
-        0 0 0 0 0                    ;; data/images/tiles.strf.
-        0 0 0 0 0
-        0 0 0 0 0
-        0 0 0 0 0
-      )
-    )
-    (tilemap
-      (layer  "interactive")
-      ;; See the bacgkround layer definition.
-    )
-    (tilemap
-      (layer  "foreground")
-      ;; ...
-    )
-    
-    (camera                          ;; Definitions of the camera paths
-
-      (mode "autoscroll")            ;; This can be set to "normal" to deactivate
-                                     ;; forced scrolling. Then you can omit the
-                                     ;; "path" directive.
-      
-      (path                          ;; Forced scrolling path
-        
-        (point (x 2) (y 3) (speed 2) ;; Point to where camera will scroll.
-          )
-        
-        (point
-          ;; ...
-        )
-      )
-      
-      (backscrolling #f)             ;; You can prevent the camera from scrolling
-                                     ;; backwards with this setting.
-    )
-    
-    (background
-      (image "ocean.jpg")            ;; Background from data/images/background
-      (speed 0.5)                    ;; Scrolling speed
-    )
-    
-    (spawnpoint (name "main") (x 0)  ;; A spawning point for Tux. By default, he is
-      (y 0)                          ;; spawned at spawnpoint named "main".
-    )
-    
-    ;; THE FOLLOWING OBJECTS ARE OPTIONAL.
-    (init-script "
-// A Squirrel script
-// See the scripting reference for more information.
-")
-
-    ;; Here you can add badguys of your choice.
-    ;; A reference on badguy types and their parameters is a TODO.
-    
-    ;; Particle systems
-    ;; It is advisable only to use one particle system at a time.
-    
-    (particles-&lt;type&gt;          ;; Valid values for &lt;type&gt; are rain, snow and clouds
-    
-      (layer 201)                    ;; -100 are background, 0 are interactive, 200 are foreground tiles.
-                                     ;; Choose a number to put the rain between two layers. In this case,
-                                     ;; the rain is in front of the foreground tiles. (see also
-                                     ;; src/video/drawing_context.hpp)
-    )
-    
-    (leveltime
-    
-      (time 300)                     ;; The player must complete this level
-                                     ;; within 300 seconds.
-    )
-  ) ;; End of sector
-  
-  ;; You can add other sectors here.
-)
-;; End of level</programlisting>
-</para>
-
-<sect2><title>Badguys</title>
-<para>This section describes the various badguys and their parameters.</para>
-
-<sect3><title>Common parameters</title>
-<para><programlisting>(&lt;badguy-name&gt;
-  (x 270)                 ;; The badguy's X coordinate.
-  (y 126)                 ;; The badguy's Y coordinate. (Note that the origin is in the top-left corner!)
-  (stay-on-platform #f)   ;; Optional. Should the badguy do its best not to fall from the platform it's on? (NYI)
-)
-</programlisting></para>
-<para>Bouncing Snowballs, Flying Snowballs, Jumpies, Mr Bombs, Mr Iceblocks, Mr Rockets, Mr Trees, World 1 Noloks, Poison Ivies, Snowballs, Spikies, Stalactites, Yeti Stalactites and Zeeklings only require this list of parameters. Simply substitute <code>&lt;badguy-name&gt;</code> with one of the following:
-<itemizedlist>
-<listitem><code>bouncingsnowball</code></listitem>
-<listitem><code>flyingsnowball</code></listitem>
-<listitem><code>jumpy</code></listitem>
-<listitem><code>mrbomb</code></listitem>
-<listitem><code>mriceblock</code></listitem>
-<listitem><code>mrrocket</code></listitem>
-<listitem><code>mrtree</code></listitem>
-<listitem><code>nolok_01</code></listitem>
-<listitem><code>poisonivy</code></listitem>
-<listitem><code>snowball</code></listitem>
-<listitem><code>spiky</code></listitem>
-<listitem><code>stalactite</code></listitem>
-<listitem><code>yeti_stalactite</code></listitem>
-<listitem><code>zeekling</code></listitem>
-</itemizedlist></para>
-</sect3>
-
-<para>The next few sections describe the extra parameters for the other badguys.</para>
-
-<sect3><title>Dispenser</title>
-<para><programlisting>(dispenser
-  (cycle 3)               ;; How often should a badguy be dispensed?
-  
-  (badguy random)         ;; Valid values are "snowball", "bouncingsnowball", "mrbomb",
-                          ;; "mriceblock", "mrrocket", "poisonivy" or "random".
-)</programlisting></para>
-</sect3>
-
-<sect3><title>Flame</title>
-<para><programlisting>(flame
-  (radius 3)              ;; How big should the radius of the circle be that the flame
-                          ;; follows?
-  
-  (speed 10)              ;; How fast should the flame be?
-)</programlisting></para>
-</sect3>
-
-<sect3><title>Lightning orb</title>
-<para>The lighting orb ("kugelblitz") ignores the <code>y</code> coordinate, spawning above the visible screen.</para>
-</sect3>
-
-<sect3><title>Spike</title>
-<para>Don't mistake this badguy for Spiky! Spiky is the snowball-like creature with spikes, whilst a spike is an object serving the same purpose like the stalactite.</para>
-<para><programlisting>(spike
-  (direction 2)           ;; 0: north, 1: south, 2: west, 3: east
-)</programlisting></para>
-</sect3>
-
-<sect3><title>Yeti</title>
-<para><programlisting>(yeti
-  (dead-script "
-// A squirrel script that is executed once the Yeti dies.
-")
-)</programlisting></para>
-</sect3>
-
-</sect2>
-
-</sect1>
-
-<sect1><title>Scrolling texts</title>
-<para>Scrolling texts are used for the credits and were used for the intro and extro in Milestone 1. The format is simple:
-<programlisting>(supertux-text
-  (background "extro.jpg") ; Background image (see data/images/background)
-  
-  (speed 1.5)             ;; Default speed of text
-  
-  ;; Here we demonstrate the formatting characters
-  (text _("
-
--This is a heading
-&lt;tab&gt;This is a normal line.
- This is a line in a small font.
-#This is a left-aligned line.
-*This should be printed in a blue font.
-!Filename of the picture to be embedded into the scrolling text (relative to scrolltext file path)
-
-")
-  )
-)</programlisting>
-</para>
-
-</sect1>
-
-<sect1><title>Worldmaps</title>
-<para>Worldmaps are basically level files with a few nuances. To explain the syntax, let's just picture somebody with the idea to write a level set that takes place in London (represented by a lonely island):
-<programlisting>(supertux-worldmap
-  (properties                               ;; Global worldmap properties.
-    (name (_ "London"))                     ;; Name of the worldmap
-    (music "bigben.ogg")                    ;; Music to be played while on worldmap
-  )
-  (spawnpoint                               ;; At the moment, defining multiple spawnpoints on a worldmap is useless.
-    (name "main")                           ;; Call your spawn point "main".
-    (x 3)                                   ;; Note that the coordinates are, unlike in a level, bound to the tilemap.
-    (y 3)
-  )
-  (tilemap
-    (width 5)                               ;; Number of tiles in a row. Four is just for demonstrational purposes.
-    (height 5)
-    (layer "interactive")                   ;; This has to be "interactive".
-    (solid #t)                              ;; This has to be true.
-    (speed 1.000000)                        ;; This has to be 1.0.
-    (tiles
-      0  0  0  0  0                         ;; The tiles as defined in data/images/worldmap.strf.
-      0  11 16 12 0
-      0  15 60 17 0
-      0  14 18 13 0
-      0  0  0  0  0
-    )
-  )
-  (level                                  ;; Repeat this block for each level. Continuing from a level tile is only possible when the level is completed.
-    (x 3)                                 ;; Coordinates of the level entry point.
-    (y 3)
-    (name "heathrow.stl")                 ;; Filename of the level, relative to the location of the worldmap file.
-    (extro-script "
-// A Squirrel script to execute once this level is completed.
-    ")
-  )
-  (special-tile                           ;; This is a sample message tile.
-    (x 4)
-    (y 3)
-    (map-message (_ "Hello."))            ;; Display the following text when Tux steps on this tile.
-    (passive-message #t)                  ;; Set to #f to stop Tux when he steps on this tile.
-    (apply-to-direction "north-west")     ;; The message is displayed only when Tux comes from one of the specified directions (north, south, west, east, concatenate with a hyphen).
-  )
-  (special-tile                           ;; This is a sample portal tile.
-    (x 2)
-    (y 3)
-    (map-message (_ "Warp to the Tower"))
-    (teleport-to-x 1)                     ;; Worldmap coordinates to which Tux is teleported.
-    (teleport-to-y 1)
-  )
-)</programlisting></para>
-
-</sect1>
-
-<sect1><title>Level subsets</title>
-<para>Whilst creating a worldmap is optional, you'll need to write a level subset file to make your level package to appear in the contribs menu (or, ironically, inhibiting this behaviour). A file containing a level subset is called <code>info</code> and lies in <code>data/levels/&lt;subset_name&gt;.</code>
-<programlisting>(supertux-level-subset
-  (title "Domain of the Hosek siblings")                        ;; Give your levelset a nice name...
-  (description "Levels by Ondra and Klara, the Hosek siblings") ;; ... and a short description.
-  (hide-from-contribs #f)                                       ;; Set to true if you don't want your levelset to appear in the "Contrib Levels" menu.
-)</programlisting></para>
-</sect1>
-
-<!--
-
-TODO:
-* Sprite definitions
-* Tile definitions
-
--->
-
-</article>
diff --git a/docs/scripting/scripting.xml b/docs/scripting/scripting.xml
deleted file mode 100644 (file)
index b2b6c98..0000000
+++ /dev/null
@@ -1,386 +0,0 @@
-<?xml version='1.0' ?>
-<!--
-$Id$
-
-SuperTux Documentation
-Copyright (C) 2005 Ondra Hosek <ondra.hosek@gmail.com>
-
-This document is free; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as
-published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This document is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program (see the file named 'COPYING'); if not,
-write to the Free Software Foundation, Inc., 59 Temple Place -
-Suite 330, Boston, MA 02111-1307, USA.
-
--->
-<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.3//EN"
-"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-
-<article xml:lang="en">
-
-<articleinfo>
-<title>SuperTux Scripting Documentation</title>
-<author><firstname>Ondra</firstname><surname>Hosek</surname></author>
-</articleinfo>
-<para>Since May 2005, SuperTux sports a Squirrel scripting interface useful for level designers who want to add some interactive pep to their levels. This document poses as a reference article for those who want to explore the various objects of the SuperTux scripting model.</para>
-<sect1><title>What is Squirrel?</title>
-<para>One of your first questions might be, &quot;What does a rodent have to do with a penguin?&quot; <ulink url="http://squirrel.sourceforge.net/">Squirrel</ulink> is a language with a syntax not much unlike other C-like languages (C, C++, Java, ...). In the current implementation, it is integrated as elements in the SuperTux level files.</para>
-</sect1>
-<sect1><title>Squirrel, Scheme and SuperTux</title>
-<para>I have no clue if the developers simply chose Squirrel just because the name so nicely integrates into the series of words &quot;SuperTux&quot; and &quot;Scheme&quot;. Currently, the Squirrel code is integrated in string arguments of Scheme elements in SuperTux level files. (Whew.) This is an example code block inside a level:
-<programlisting>(supertux-level
-  (version 2)
-  (name _("Go Blind"))
-  (author "Team")
-  (sector
-    (name "main")
-    (music "Annoying_penguin_gawking_sounds.mod")
-
-    ;; (Tilemaps, objects, whatever.)
-
-    (init-script "
-DisplayEffect.fade_out(2.5);
-")
-  )
-)</programlisting>
-When this level loads, the screen fades out completely during two and a half seconds right after the level is loaded. (Mind you, this would be a frustrating experience for the player if you add a horde of badguys near the spawn point.)</para>
-</sect1>
-
-<sect1><title>Object reference</title>
-<para>If you are interested in an object and what cans of worms you can open with it, this section is for you.</para>
-<para>&quot;(NYI)&quot; after the function name symbolises functions that haven't been implemented yet. Calling them will result in a line being printed to standard output informing anybody who reads it that the script is using a function that actually doesn't exist. (Win32 users will happily ignore this, because they simply start the application by opening it with Explorer. Unix users are going to be more interested in what SuperTux can actually tell them, so it's better if you don't use non-existent functions in your scripts.)</para>
-
-<sect2><title>Global Constants</title>
-<para>These constants can be accessed from anywhere in the game code.</para>
-
-<sect3><title>KEY_BRASS</title>
-<para>Type: integer</para>
-<para>Value: <code>1</code></para>
-<para>Represents the brass key.</para>
-<para>Used in: <code>add_key</code> as argument 1</para>
-</sect3>
-
-<sect3><title>KEY_IRON</title>
-<para>Type: integer</para>
-<para>Value: <code>2</code></para>
-<para>Represents the iron key.</para>
-<para>Used in: <code>add_key</code> as argument 1</para>
-</sect3>
-
-<sect3><title>KEY_BRONZE</title>
-<para>Type: integer</para>
-<para>Value: <code>4</code></para>
-<para>Represents the bronze key.</para>
-<para>Used in: <code>add_key</code> as argument 1</para>
-</sect3>
-
-<sect3><title>KEY_SILVER</title>
-<para>Type: integer</para>
-<para>Value: <code>8</code></para>
-<para>Represents the silver key.</para>
-<para>Used in: <code>add_key</code> as argument 1</para>
-</sect3>
-
-<sect3><title>KEY_GOLD</title>
-<para>Type: integer</para>
-<para>Value: <code>16</code></para>
-<para>Represents the gold key.</para>
-<para>Used in: <code>add_key</code> as argument 1</para>
-</sect3>
-
-</sect2>
-
-<sect2><title>Global Functions</title>
-<para>These global functions access basic or generic methods of SuperTux. They are called without an object name.</para>
-
-<sect3><title>display_text_file</title>
-<para>Usage: <code>display_text_file(string filename)</code></para>
-<para>Displays the SuperTux text file named <code>filename</code>. (The path is relative to the level file.)</para>
-<para>See also: SuperTux file format reference, SuperTux texts</para>
-</sect3>
-
-<sect3><title>wait</title>
-<para>Usage: <code>wait(float time)</code></para>
-<para>Pauses execution of the squirrel code for <code>time</code> seconds.</para>
-</sect3>
-
-<sect3><title>translate</title>
-<para>Usage: <code>translate(string text)</code></para>
-<para>Returns: Translated string</para>
-<para>Translates <code>text</code> into the user's locale.</para>
-<para>Note: This construct is unfortunately not yet recognised by XGetText, so translation files have to be written manually.</para>
-</sect3>
-
-<sect3><title>import</title>
-<para>Usage: <code>import(string filename)</code></para>
-<para>Imports and runs the Squirrel script <code>filename</code>. (The path is relative to the level file.)</para>
-</sect3>
-
-<sect3><title>add_key</title>
-<para>Usage: <code>add_key(int key)</code></para>
-<para>Adds or removes a key from the player's posession. <code>key</code> should be replaced with one of the <code>KEY_</code> constants.</para>
-<para>See also: src/player_status.hpp</para>
-</sect3>
-
-</sect2>
-
-<sect2><title>DisplayEffect</title>
-<para><code>DisplayEffect</code> is an interface for toying with the display.</para>
-
-<sect3><title>fade_out</title>
-<para>Usage: <code>DisplayEffect.fade_out(float fadetime)</code></para>
-<para>Gradually fades out the screen to black for the next <code>fadetime</code> seconds.</para>
-</sect3>
-
-<sect3><title>fade_in</title>
-<para>Usage: <code>DisplayEffect.fade_in(float fadetime)</code></para>
-<para>Gradually fades in the screen from black for the next <code>fadetime</code> seconds.</para>
-</sect3>
-
-<sect3><title>set_black</title>
-<para>Usage: <code>DisplayEffect.set_black(bool black)</code></para>
-<para>Blackens or un-blackens the screen (depending on the value of <code>black</code>).</para>
-</sect3>
-
-<sect3><title>is_black</title>
-<para>Usage: <code>DisplayEffect.is_black()</code></para>
-<para>Returns: <code>bool</code></para>
-<para>Returns true if the screen has been blackened by <code>set_black</code>. Calling <code>fade_in</code> or <code>fade_out</code> resets the return value to <code>false</code>.</para>
-</sect3>
-
-<sect3><title>sixteen_to_nine</title>
-<para>Usage: <code>DisplayEffect.sixteen_to_nine()</code></para>
-<para>Sets the display ratio to 16:9, effectively adding black bars at the top and bottom of the screen. Should be used before cutscenes.</para>
-</sect3>
-
-<sect3><title>four_to_three</title>
-<para>Usage: <code>DisplayEffect.four_to_three()</code></para>
-<para>Sets the display ratio to 4:3, removing the black bars added by <code>sixteen_to_nine()</code>. Should be used after cutscenes.</para>
-</sect3>
-
-</sect2>
-
-<sect2><title>Camera</title>
-<para><code>Camera</code> is an interface to manipulate the camera.</para>
-
-<sect3><title>shake (NYI)</title>
-<para>Usage: <code>Camera.shake(float time, float x, float y)</code></para>
-<para>Warning: This function has not yet been implemented.</para>
-</sect3>
-
-<sect3><title>set_pos (NYI)</title>
-<para>Usage: <code>Camera.set_pos(float x, float y)</code></para>
-<para>Warning: This function has not yet been implemented.</para>
-</sect3>
-
-<sect3><title>set_mode (NYI)</title>
-<para>Usage: <code>Camera.set_mode(string modestring)</code></para>
-<para>Warning: This function has not yet been implemented.</para>
-</sect3>
-
-</sect2>
-
-<sect2><title>Level</title>
-<para>The <code>Level</code> class provides basic controlling functions for the current level.</para>
-
-<sect3><title>finish</title>
-<para>Usage: <code>Level.finish()</code></para>
-<para>Ends the current level and marks it as completed if launched from a worldmap.</para>
-<para>Tip: Very useful if you have created a frustrating level and want to, at some point, save the player from agony.</para>
-</sect3>
-
-<sect3><title>spawn</title>
-<para>Usage: <code>Level.spawn(string sectorname, string spawnpointname)</code></para>
-<para>Respawns Tux in the sector <code>sectorname</code> at the <code>spawnpointname</code> spawnpoint.</para>
-<para>Exceptions: If <code>sectorname</code> or <code>spawnpointname</code> are empty or the specified sector does not exist, the function will bail out first chance it gets. If the specified spawnpoint doesn't exist, Tux will be spawned at the spawnpoint named <code>main</code>. If this spawnpoint doesn't exist either, Tux will simply end up at the origin (top-left 0, 0).</para>
-</sect3>
-
-<sect3><title>flip_vertically</title>
-<para>Usage: <code>Level.flip_vertically()</code></para>
-<para>Flips the level vertically (i.e. top is now bottom and vice versa). Call again to revert the effect.</para>
-<para>Tip: Make sure the player can land on something after the level is flipped!</para>
-</sect3>
-
-</sect2>
-
-<sect2><title>ScriptedObject</title>
-<para>A <code>ScriptedObject</code> is basically a SuperTux object that can be scripted to move around and animate. This object will be used in the SuperTux cutscenes a whole lot.</para>
-
-<sect3><title>Usage notes</title>
-<para>Since a <code>ScriptedObject</code> is a reference object and not a statically declared object, you will have to build it into your level file, where a <code>scriptedobject</code> is a child of <code>sector</code>. This is an example definition:
-<programlisting>
-(scripted-object
-  (name "WOOT")
-  (x 420)
-  (y 94)
-  (sprite "snowball")
-  (solid #t)
-  (physic-enabled #f)
-  (visible #t)
-)
-</programlisting>
-</para>
-<para>Now, the object can be accessed in code using the <code>WOOT</code> identifier like so:
-<programlisting>
-WOOT.set_animation("left");
-</programlisting>
-</para>
-</sect3>
-
-<sect3><title>set_animation</title>
-<para>Usage: <code>&lt;scriptedobject&gt;.set_animation(string animation_name)</code></para>
-<para>Activates the sprite's animation specified in <code>animation_name</code>.</para>
-</sect3>
-
-<sect3><title>get_animation</title>
-<para>Usage: <code>&lt;scriptedobject&gt;.get_animation()</code></para>
-<para>Returns: <code>string</code></para>
-<para>Returns the name of the sprite's current animation.</para>
-</sect3>
-
-<sect3><title>move</title>
-<para>Usage: <code>&lt;scriptedobject&gt;.move(float x, float y)</code></para>
-<para>Moves the object by <code>x</code> units to the right and <code>y</code> down <emphasis>relative to its current position</emphasis>.</para>
-</sect3>
-
-<sect3><title>set_pos</title>
-<para>Usage: <code>&lt;scriptedobject&gt;.set_pos(float x, float y)</code></para>
-<para>Basically identical to <code>move</code>, except its <emphasis>relativity to the sector origin</emphasis>.</para>
-</sect3>
-
-<sect3><title>get_pos_x</title>
-<para>Usage: <code>&lt;scriptedobject&gt;.get_pos_x()</code></para>
-<para>Returns: <code>float</code></para>
-<para>Returns the X coordinate of the object's position.</para>
-</sect3>
-
-<sect3><title>get_pos_y</title>
-<para>Usage: <code>&lt;scriptedobject&gt;.get_pos_y()</code></para>
-<para>Returns: <code>float</code></para>
-<para>Totally identical to <code>get_pos_x</code> except for its obvious choice of the other (Y) axis.</para>
-</sect3>
-
-<sect3><title>set_velocity</title>
-<para>Usage: <code>&lt;scriptedobject&gt;.set_velocity(float x, float y)</code></para>
-<para>Makes the object move in a certain direction (with a certain speed) given by the <code>x</code> and <code>y</code> coordinates.</para>
-</sect3>
-
-<sect3><title>get_velocity_x</title>
-<para>Usage: <code>&lt;scriptedobject&gt;.get_velocity_x()</code></para>
-<para>Returns: <code>float</code></para>
-<para>Returns the object's velocity in the direction of the X coordinate.</para>
-</sect3>
-
-<sect3><title>get_velocity_y</title>
-<para>Usage: <code>&lt;scriptedobject&gt;.get_velocity_y()</code></para>
-<para>Returns: <code>float</code></para>
-<para>The difference between this function and <code>get_velocity_x</code> is just the same like between <code>get_pos_y</code> and <code>get_pos_x</code>: same thing, different coordinates.</para>
-</sect3>
-
-<sect3><title>set_visible</title>
-<para>Usage: <code>&lt;scriptedobject&gt;.set_visible(bool visible)</code></para>
-<para>Shows or hides the object according to the value of <code>visible</code>.</para>
-</sect3>
-
-<sect3><title>is_visible</title>
-<para>Usage: <code>&lt;scriptedobject&gt;.is_visible()</code></para>
-<para>Returns: <code>bool</code></para>
-<para>Returns <code>true</code> if the object is visible. (You've seen this coming, haven't you?)</para>
-</sect3>
-
-<sect3><title>get_name</title>
-<para>Usage: <code>&lt;scriptedobject&gt;.get_name()</code></para>
-<para>Returns: <code>string</code></para>
-<para>Simply gives you the name of the scripted object (as if you didn't have it already...)</para>
-</sect3>
-
-</sect2>
-
-<sect2><title>Sound</title>
-<para>This class provides a very simple interface to the audio subsystem.</para>
-
-<sect3><title>play_music</title>
-<para>Usage: <code>Sound.play_music(string track_name)</code></para>
-<para>Plays the selected music track (automatically prepending the path to the music folder and appending the <code>.ogg</code> extension).</para>
-</sect3>
-
-<sect3><title>play_sound</title>
-<para>Usage: <code>Sound.play_sound(string sound_name)</code></para>
-<para>Plays the sound specified in <code>sound_name</code> (that is identical to the filename of the sound without the <code>.wav</code> extension).</para>
-</sect3>
-
-</sect2>
-
-<sect2><title>Text</title>
-<para>This module provides access to methods reponsible for displaying text on-screen.</para>
-
-<sect3><title>set_text</title>
-<para>Usage: <code>Text.set_text(string text)</code></para>
-<para>Sets the text string to be displayed to <code>text</code>.</para>
-</sect3>
-
-<sect3><title>set_font</title>
-<para>Usage: <code>Text.set_font(string font)</code></para>
-<para>Sets the font of the text to be displayed to <code>text</code>. Currently valid values are <code>gold</code>, <code>white</code>, <code>blue</code>, <code>gray</code>, <code>big</code> and <code>small</code>.</para>
-</sect3>
-
-<sect3><title>fade_in</title>
-<para>Usage: <code>Text.fade_in(float time)</code></para>
-<para>Fades in the specified text for the next <code>time</code> seconds.</para>
-</sect3>
-
-<sect3><title>fade_out</title>
-<para>Usage: <code>Text.fade_out(float time)</code></para>
-<para>Just the opposite of <code>fade_out</code>.</para>
-</sect3>
-
-<sect3><title>set_visible</title>
-<para>Usage: <code>Text.set_visible(bool visible)</code></para>
-<para>Shows or hides the text abruptly (drastic counterpart to <code>fade_in</code> and <code>fade_out</code>).</para>
-</sect3>
-
-<sect3><title>set_centered</title>
-<para>Usage: <code>Text.set_centered(bool centered)</code></para>
-<para>If <code>centered</code> is <code>true</code>, the text will be centered on the screen. Otherwise, it will be left-aligned.</para>
-</sect3>
-
-</sect2>
-
-<sect2><title>Player</title>
-<para>This module contains methods controlling the player. (No, SuperTux doesn't use mind control. Player refers to the player object.)</para>
-
-<sect3><title>make_invincible</title>
-<para>Usage: <code>Player.make_invincible()</code></para>
-<para>Makes the player invincible for a predefined amount of time.</para>
-<para>See also: <code>TUX_INVINCIBLE_TIME</code> in src/object/player.hpp for the amount of seconds that the player becomes invincible.</para>
-</sect3>
-
-<sect3><title>deactivate</title>
-<para>Usage: <code>Player.deactivate()</code></para>
-<para>Stops the player and blocks the movement controls.</para>
-<para>Tip: Don't call this in front of a horde of badguys.</para>
-</sect3>
-
-<sect3><title>activate</title>
-<para>Usage: <code>Player.activate()</code></para>
-<para>Reactivates the player's movement controls.</para>
-</sect3>
-
-<sect3><title>walk</title>
-<para>Usage: <code>Player.walk(float velocity)</code></para>
-<para>Makes the player move in a certain horizontal velocity (specified by <code>velocity</code>). A negative velocity moves the player to the left.</para>
-</sect3>
-
-</sect2>
-
-</sect1>
-
-</article>
index d731b4e..8649852 100644 (file)
@@ -143,7 +143,7 @@ Tux::draw(DrawingContext& context)
       tux_sprite->set_action("small");
       break;
     default:
-#ifdef DBEUG
+#ifdef DEBUG
       std::cerr << "Bonus type not handled in worldmap.\n";
 #endif
       tux_sprite->set_action("large");