Icarus.Logic This guy provides us with controllers. Singleton Implementation. The default controller. The dictionary of registered controllers. This is so that we don't have to look up the type through reflection every time. Initializes the controller factory. Registers the controller type with the dictionary. Returns the type corresponding to the name passed in, or null if the type is undefined. Returns a controller for the specified type. Returns a controller for the type whose fully qualified name is supplied. Of course, note that if the specified type is not actually a controller, then bad things will happen (exceptions). Singleton Implementation. Returns the default controller for objects. This is the default controller that doesn't really do anything. The implementors of this interface are controllers that can control a world object. Updates the world object passed in. I am the heart of the Icarus Game Engine I basically cause everything to start moving, sort of like a Spark Plug. I am a Singleton and I get started when the user turns the key by executing the executable created by the Runner project. This is the stack of game states we have running. This tells us if we are running, paused or stopped. Private Constructor for the Game Engine It is a Singleton so noone should ever touch the Constructor Pushes a game state onto the game state stack. The state on top of the stack is always the active one. The new active state. Pops the current state off the state stack. The previous active state will become active once again. Renders the current state. Render parameters Start the game engine. Pause the game engine. Stop the game engine. Note that this will pop all the states, so we stop cleanly. The function that needs to be run in its own thread. This controls the game engine. The Singleton GameEngine instance The current state of the game engine. I am a combination of Relations that define who my enemies and friends are. A Relation is composed of a friend and an enemy and is loaded as a script. Initialize the GameFaction object to default values The faction Name Just a string I contain the Vital information necessary for a great game. I, personally, love value types. Print the properties of the object Convert the GameProperties into a string Representation GameProperties string representation This should hold the health of the current Game Object. This should contain the damage inflicted by the object upon unfriendly objects during a collision I am a singleton which can be used to retrieve Game Engine settings. Members are straightforward to access. Defines the game difficulty, changes the AI, and is used by Game Calculations. The timescale is used to define the number of times per second that the GameEngine executes to update the world. Defines whether cheats are on or off. Defines how many particles are pre-allocated when a level loads. Defines the number of particles to dynamically load at a time when the max number of particles is infinite. Defines how many items are pre-allocated when a level loads. Defines the number of items to dynamically load at a time when the max number of items is infinite. Defines how many actors are pre-allocated when a level loads. Defines the number of actors to dynamically load at a time when the max number of actors is infinite. Defines how many terrain world objects are pre-allocated when a level loads. Defines the number of terrain ojects to dynamically load at a time when the max number of terrain objects is infinite. Defines how detailed the Physics calculations are. Defines the maximum number of collision boxes in a level The maximum internal collision rectangles a collision box can hold The maximum internal collision triangles a collision box can hold This defines the time between updates in milliseconds, default is 22 (45fps) The maximum number of stages per level Uses Icarus preset Game settings as defined in the variable comments. Load GameSettings from a File. Sets the settings to the Icarus Defaults then loads the settings from fileName and replaces the settings specified. The fileName of settings to replace defaults. Returns the instance of the GameSettings object Defines the maximum number of collision boxes in a level Defines the maximum number of internal collision rectangles a collision box can hold Defines the maximum number of internal collision triangles a collision box can hold A Negative difficulty should cause all enemies to freeze in place (allowing debugging to take place). A Positive difficulty becomes more difficult with increasing values. Lowest difficulty is 0. This sets the game's TimeScale. The timescale values can range from FLOAT_MIN to FLOAT_MAX. Whether the full range is supported, doesn't matter. Negatives don't matter, only the magnitude is used. A higher number than 1.0f will result in more updates occuring per second. Numbers between 0 and 1.0, exclusive, result in fewer updates and, thus, the game moves "slower". Activating cheats can turn on things like God Mode, which negate damage effects to the player, as well as various other nifty debugging tools. A value of 0 means that infinite particles are allowed. In the case of infinite particles, particles will be loaded dynamically sv_particleLoadRate at a time. Dynamic loading is much slower, but requires much less memory. This defines the number of particles to dynamically load at a time when the max number of particles is infinite. A value of 0 means that infinite items are allowed. In the case of infinite items, items will be loaded dynamically sv_itemLoadRate at a time. Dynamic loading is much slower, but requires much less memory. This defines the number of items to dynamically load at a time when the max number of items is infinite. A value of 0 means that infinite actors are allowed. In the case of infinite actors, actors will be loaded dynamically sv_actorLoadRate at a time. Dynamic loading is much slower, but requires much less memory. This defines the number of actors to dynamically load at a time when the max number of actors is infinite. A value of 0 means that infinite terrain objects are allowed. In the case of infinite terrain objects, terrain objects will be loaded dynamically sv_terrainObjectLoadRate at a time. Dynamic loading is much slower, but requires much less memory. This defines the number of terrain objects to dynamically load at a time when the max number of terrain objects is infinite. This may cause faster algorithms to be used in place of slower, more precise algorithms. This varies on Physics Engine implementation/mode. Default value is 0 (Full Detail), negative values lower detail and positive values (may) increase detail. This stores the time between updates in milliseconds. Note that the variable sv_timescale speeds up or slows down the game itself, this variable will affect the magnitude of vectors in the Physics Engine and alter the Physics themselves The maximum number of stages per level This is an adapter of the IGameState stuff, so that we don't have to implement all the functions. The interface that all game states must implement. Called when we enter the state. Called at every iteration of the game engine loop. The numbher of milliseconds since the function was last called. Gets called when the state needs to be rendered. This function will be called when the state needs to be paused to be revived later on. This function will be called when the state is revived after a previous pause. Called when we exit the state. Form for creating and editng levels. Provides for saving and loading levels. Executes the Level Builder Initialize the LevelBuilder object Clean up any resources being used. Required method for Designer support - do not modify the contents of this method with the code editor. This class provides the functionality of being able to save and load levels. The levels are saved as xml files on the harddrive. The instance of this loader Loads a level from an XML file. The filename of the level XML file. The loaded level or null if no level could be loaded. Saves a level to an XML file. The filename used to save the level XML file. True for success, False for failure. Returns the list of ids of available levels. The Singleton LevelLoader instance This is the root state for the game engine. Basically, it makes sure that everything dies when we quit. Summary description for CollisionBox. The amount of damage this collisionbox does. Rectangular bounding box of this collision box Array of rectangles for more precise collisions within this collision box Array of triangles for more precise collisions within this collision box Original width of bounding box that does not change Orgiginal height of bounding box that does not change Text Description of this object for level editing -Performs actions on a PO/WO specific to this collision box. -Basic functionality only stops the PO/WO where the collision took place. -This function should be overridden for specific collision boxes such as teleporters, jump pads, ice... The collision rect that was hit The PO/WO that hit the rect An action represented in PhysicsSettings.enumActions This can be called to set properties specifically when making a prefab collision box. i.e: CollisionBoxFloor, CollisionBoxWall, etc Gets or sets the damage this collision box does to merc Rectangular bounding box of this collision box Array of rectangles for more precise collisions within this collision box Array of triangles for more precise collisions within this collision box Original width of bounding box that does not change with vel Original height of bounding box that does not change with vel A text Description of this object for level editing Summary description for CollisionBoxCD. The spark that happens after a CD hits something Handles collisions for CDs the cd bounding box the po that the cd hit Summary description for CollisionBoxEnemyDefault. The direction to throw merc on collision Defined in PhysicsSetting.enumDirection Left Right Center - throws left or right, which ever is closer Contructor Handles collisions with all types of objects and enemy default. colliding rectangle po to be affected Gets or sets the direction this collision box throws merc Summary description for CollisionBoxFloor. Sets the internal FloorRectangle's location This moving box needs access to the world object that is holding it This particular box needs to know things about the world obj holding it Constructionering Allowing the world obj to set a ref to itself This is specially made for the tux robot hand. It should only be put in a MovingPlatform worldobject. This particular box needs to know things about the world obj holding it Construction Allowing the world obj to set a ref to itself Summary description for CollisionBoxSlopeBL. Sets the internal TriangleBL location Summary description for CollisionBoxSlopeBR. Sets the internal TriangleBR location Summary description for CollisionBoxSlopeTL. Sets the internal TriangleTL location Summary description for CollisionBoxSlopeTR. Sets the internal TriangleTR location Summary description for CollisionBoxTransition. The health that this transition will set to the player The index of the next stage to be displayed The x coordinate to place merc in the next stage The y coordinate to place merc in the next stage The x coord of the new place to center the stage The y coord of the new place to center the stage Construction gets or sets the amount of health this transition gives the player The index of the next level X location of merc after transition Y location of merc after transition X location to set screen center to after transition Y location to set screen center to after transition Summary description for CollisionBoxWall. Sets the internal WallRectangle's location Summary description for CollisionBoxWhip. whether or not to show spark on whip This particular box needs to know things about the world obj holding it Handles collisions with a whip Rect that is being collided with PO to be affected Allowing the world obj to set a ref to itself Gets or sets whether a spark should be shown or not Summary description for CollisionBoxZoom. Whether or not to zoom Turns on zooming when merc collides with this box gets or sets whether or not to zoom Summary description for MovingPlatform. The World is composed of me. All gameplay entities are derived from me and contain this set of standard features. I contain the necessary properties needed by any Physical universe as proposed by Sir Isaac Newton so long ago. I also contain useful information such as my Inertia, which is a measure of my stubbornness to change motion, as well as my CollisionMask, which defines my girth. The implementors of this interface can be viewed on screen. Gets the location of the viewable in world coordinates. Gets the id of the animation to use for the viewable. The coeffecient multiplied to velocities on a collision. This can be used to create object with different levels of "bouncing recoil" The number of collisions this object will make before it is removed from the world. 0 = infinite. The amount of time(ms) this object will live before it is removed from the world. 0 = infinite. This is the time of creation of an object. It is used in conjunction with iTimeToLive to remove the object after it has been alive too long. State that represents the current action of the object Holds the last action state of this player. Used for determining when states have changed. The collision box for this PO. This box is so this object has a reference to the smaller internal bounding rectangles located in this bounding box. X distance from the location to the collision box anchor Y distance from the location to the collision box anchor Me controller. Generate a generic Physics Object All members are set to empty/default values Vectors are set to 0 Sets the animation with the specified parameters. Output the Physics Object information to Console Convert the contents of the PhysicsObject to string for debugging purposes A string containing the information Returns the current direction up,down,left,right,upleft,upright,downleft,downright An enumDirection from PhysicsSettings. This method determines if a physics object has lived longer than its timetolive value or if it still has more time to live. true = still has not reached time limit false = has reached time limit. This will be called every time the physics object is updated. The id of the animation to use for the viewable. Allows access to the current frame for position logic X distance from the location to the collision box anchor Y distance from the location to the collision box anchor The collision box for this PO The current action being performed The last action state of this player Provides usable access to the birthdate of a physics object. Allows access and modification of the number of collisions an object will make before it is removed from the world. 0 = infinite. Allows acces and modification of the time that an object will remain in the world before it is removed. 0 = infinite. This sets the Terminal Velocity of an Object A value of 0 or smaller means there is no Terminal Velocity Default is null (use global gravity) Note that Team RETRO's classic game physics can easily be implemented by setting the terminal velocity to something less than initial velocity (i.e. move up and down at same rate) This sets the current gravity to be used Can be negative (accelerate upwards), zero means no gravity This is a constant acceleration in the j direction Default is null (use global gravity) Note that Classic gameplay issues such as underwater and space Physics can be implemented by varying the gravity (hint, hint underwater Mario level (: ) This defines the current Location of the Physics Object. This is unscaled to world Coordinates. This defines the velocity of the Physics Object. This is unscaled to World Coordinates This defines the angular velocity of the Physics Object. Angular Velocity = rotational velocity. This is unscaled to World Coordinates. This defines the current angle of the object. This should be used by the Renderer to properly rotate the object. This needs to be scaled and then sent to the renderer for it to do an appropriate rotation. This is the acceleration of the Object This is in Physics Coordinates. This is the angular acceleration of the object. This is in Physics Coordinates. The Interia of the body. This isn't what causes an object to slow down as some who didn't pay attention to Newton's First Law of motion might think. This is the reluctance of the object to move. This is modeled by delayed movements or by dividing the acceleration by this. It would make sense to just use the acceleration uniquely, but then recoils would become complicated. Gives usable access to the fBounceCoefficient Returns the controller for this object. Gets the name of the controller type or sets the controller when controller type is set. This is mainly done for XML purposes. Initializes all WorldObject structures to default values This function destroys me (actually, I'm not even sure what this does to me yet) This prints the World Object Converts the World Object data into a string Adds the child object to the list of children of this world object. The child to be added Remoes the child object from the list of children of this world object. The child to be removed Returns the number of children of this world object. Returns the index-th child object. The WorldObject's Game properties The WorldObject's Faction Gets or sets the array of children. This is for serialization purposes only. Use the appropriate methods for other stuff. The distance this platform moves before reversing direction The speed at which the platform moves The direction this platform is moving currently The initial position of this moving platform Collision box for this gets or sets the distance the platform moves before reversing direction gets or sets the speed at which this platform moves gets for sets the initial point of this moving platform gets or sets the current direction Summary description for MovingPlatformHorizontal. controls the movement of this moving platform Summary description for MovingPlatformVertical. controls the movement of this moving platform I am the Physics Engine Singleton I handle all aspects of Physical calculation Primarily, I change the positions of objects in the world based upon their velocities and accelerations. I also prevent objects from leaving the bounds of the world as well as handle the process of deciding when they collide with another object. My buddy, the Logic module, takes care of deciding what to do with the collision itself, I just figure out there is one. This is a reference to the current level's collision mask bitmap Updates the list of WorldObjects for the next iteration A list of WorldObjects, note that no type checking is made on these objects and, as such, it is assumed that they are WorldObjects. Check for collisions with all the children of a worldobject The world object with children the physics object that is being tested for collisions Check for collisions between two children The world object with children the physics object that has children to test Updates the current vectors of the Physics Object Currently, AngularVelocity is not taken into account when updating Velocity Object whose vectors will be updated Update the Position of the Physics Object using the Vectors already defined Currently, AngularVelocity is ignored as are bounds checks Object whose position needs to be updated This function will cause a recoil between two objects based on Intertia and both types of velocity. TODO: Implement the above, currently Intertia is not taken into account and a purely elastic, pure recoil calculation is made. That sorta sucks for anything but Zero G, equal Intertia settings. po1 po2 Physics Engine Instance Gives usable access to the collision mask bitmap Current Level reference Summary description for PhysicsGeek. This class handles the collision methods needed for a physics player. A physics player is a physics object that is used as a character. The player controlled by the user or the enemies fighting the user are two examples oh physics players. Used to determine if player should stop walking when he hits the ground Causes the player to be hurt or not when attacked The number of engine iterations that the player is invulnerble The number of invulneralbe iterations so far The number of iterations this player should flicker when they are about to die The number of iterations this player has flickered Instantiate a Player Object -- called a Physics Player by the Physics Engine Starts the player walking left and puts him in the correct action state Starts the player walking right and puts him in the correct action states Stops the player from walking if he is currently walking Stops the player from doing whatever it might be doing and causes it to just stand there Make this player jump Gets or sets whether this player is vulnerable Gets or sets the limit of invulnerable iterations Gets or sets the current number of invulnerable interations gets or sets the number of iterations this player will flicker while dieing gets or sets the number of iterations this player has flickered Gets or sets a boolean used to determine if player should stop walking when he hits the floor. The collision box used when standing The collision box used when attacking This guy makes specific special updates. For example, it changes animations depending on current states. Summary description for PhysicsGNURobot. Starts the player walking right and puts him in the correct action states Causes this GNU bot to do a flame attack Performs specific updates on teh GNU bot. Including changing of animations and changing attack parameters Summary description for PhysicsMerc. The number of engine interations the whip remains visable the number of engine interations the whip has been displayed The spark that shows up when the whip hits something Collision box for whip that hits enemies collision box for whip that does not hit enemies The number of consecutive jumps that merc can make The number of consecutive jumps merc has made Whether or not merc is throwing a CD Perform a whip attack Causes merc to throw a CD Make this player jump This guy makes specific special updates. For example, it changes animations depending on current states. Gets or set the number of consecutive jumps merc is allowed to make This class handles the collision methods needed for a physics particle. A physics particle only collides with the level collision mask and does not interact with any other physics objects. They should be used for explosions and similar effects. Build the Physics Particle Object Applies the time to live and collisions to live settings specific to particles Summary description for PhysicsRectangle. X value of upper-left corner of rectangle Y value of upper-left corner of rectangle Height of this rectangle Width of this rectangle Text Description of this object for level editing Determines if this rectangle and the passed rect intersect. The rectangle to check for intersection with True - intersection; False - no intersection Changes this rectangle making the method call to the intersection of the rectangle making the call and the rect passed. The rectan Performs the necessary operations on a PO that has collided with this rectangle Physics Object that collided with rectangle Action to be taken after collision occurs(ie: remove, doNothing) X value of upper-left corner of rectangle Y value of upper-left corner of rectangle Width of this rectangle Height of this rectangle A text Description of this object for level editing I am a singleton which can be used to retrieve Physics Engine settings. Members are straightforward to access. Determines whether god mode s on or not The number of consecutive collisions allowed before it is determined that the physics object is stuck and action should be taken. The time a particle can live The amount of bounces a particle can make The upward velocity added when a player jumps. The forward velocity added when a player jumps forward. The velocity at which a player normally walks Initializes the Physics Settings to the default values Load the Physics Settings from fileName Loads defaults then overwrites them with values in File name of File to load The isntance of the Physics Settings Singletone gets or sets whether god mode is on he forward velocity added when a player jumps forward. The velocity at which a player normally walks The upward velocity a player jumps with. Particle bounce limit. Particle life limit in ms. Provides access to the number of consecutive collisions an object is allowed to make before a special action has to be taken. This is just for particles... a player could collide with something many times and not be stuck Provides access to white color for collision comparisons. Provides access to red color for collision comparisons. Provides access to green color for collision comparisons. Provides access to blue color for collision comparisons. Provides access to yellow color for collision comparisons. Provides access to gray color for collision comparisons. Provides access to black color for collision comparisons. This sets the GLOBAL Terminal Velocity of an Object This is used if a Physics Object's Terminal Velocity is null A value of 0 or smaller means there is no Terminal Velocity Default is: v = 0*i + (10.0*default(sv_gravity))*j + 0*k Note that Team RETRO's classic game physics can easily be implemented by setting the terminal velocity equal to the gravity (i.e. move up and down at same rate) This sets the current GLOBAL gravity to be used This gravity is used if the player gravity is set to null Can be negative (accelerate upwards), zero means no gravity This is a constant acceleration in the j direction Default is: v = 0*i + 9.81*j + 0*k Note that Classic gameplay issues such as underwater and space Physics can be implemented by varying the gravity (hint, hint underwater Mario level (: ) The gravity that should be used for Merc Constants used while detecting collisions Defines the Up direction constant in Collisions Defines the Down direction constant in Collisions Defines the Left direction constant in Collisions Defines the Right direction constant in Collisions Defines the Up and Left (North-West) Direction Defines the Up and Right (North-East) Direction Defines the Down and Left (South-West) Direction Defines the Down and Right (South-East) Direction Defines the center (No) direction Constants used while detecting collisions Used when a Collision should have no changes on the existence of the object Defines that the collision should result in removal of the object in question Indicates that this obj should be checked for collisions again before it is moved. Actions states a player can be in Summary description for PhysicsShortLife. The number of game engine iterations this object should live The number of iterations this obj flickers once it's life has ran out The number of game egine iterations that this object has lived The animation ID to use while flickering. The visible portion of the flicker. Keeps track of age, then makes flicker, then removes. action to be taken by physicsengine gets or sets the number of game engine iterations that this worldobject lives gets or sets the number of game engine iterations this object has lived gets or set the number of iterations this obj flickers once it's life is over Gets or sets the animation that is used during the "on" portion of flickering Summary description for PhysicsTuxHand. This is a child object. Basically, it means it's a subcomponent of another object. For instance, suppose we have the Merc world object. He could have a "whip" child object. The anchor point for the child. The parent world object. Anchor Point. The anchor point is the coordinate of the parent object where the top-left corner of the child goes. The parent of the child object. The location of the child component. Velocity of the child component. Collision box for this This class is just for differentiating whip collisions with other objects and Edo's(Tux) head Summary description for PhysicsTuxRobot. Summary description for PhysicsWhip. Collision box for this I contain the points used in Physics Calculations Don't mess with me. Output information about the Point Returns a new point that is the sum of this point and the one passed in. Returns a string version of the point containing all values of the Point (x,y,z) in text form A string containing the representation X value Y value Z value Summary description for RectangleFloor. Performs the necessary operations on a PO that has collided with this rectangle Physics Object that collided with rectangle Action to be taken after collision occurs(ie: remove, doNothing) Summary description for RectangleWall. Performs the necessary operations on a PO that has collided with this rectangle Physics Object that collided with rectangle Action to be taken after collision occurs(ie: remove, doNothing) Triangles will be used as level collision shapes that can be collided with. All Triangles must be right triangles for simplicity. The right angle should be inforced in the level builder. Bounding rectangle of Point 1 of triangle Point 2 of triangle Point 3 of triangle The slope of a this triangle's Hyp. Text Description of this object for level editing Determines if this triangle intersects with the passed rectangle Rectangle to check for intersection with triangle True - intersection; false - no intersection Performs the necessary operations on a PO that has collided with this triangle Physics Object that collided with triangle Action to be taken after collision occurs(ie: remove, doNothing) Calculates the bounding box of this triangle Calculate this triangle's hypotenuse slope Slope of Hypotenuse Provides access to the rectangle bounding box of this triangle. Provides access to this triangles point 1 Provides access to this triangles point 2 Provides access to this triangles point 3 The slope of this triangle's hypotenuse A text Description of this object for level editing Summary description for TriangleBL. Performs the necessary operations on a PO that has collided with this triangle Physics Object that collided with triangle Action to be taken after collision occurs(ie: remove, doNothing) Summary description for TriangleBR. Performs the necessary operations on a PO that has collided with this triangle Physics Object that collided with triangle Action to be taken after collision occurs(ie: remove, doNothing) Summary description for TriangleTL. Performs the necessary operations on a PO that has collided with this triangle Physics Object that collided with triangle Action to be taken after collision occurs(ie: remove, doNothing) Summary description for TriangleTR. Performs the necessary operations on a PO that has collided with this triangle Physics Object that collided with triangle Action to be taken after collision occurs(ie: remove, doNothing) I contain the vectors used in Physics Calculations Don't mess with me. Print Vector Information Returns a string containing the vector information A string with the vector information Calculate the magnitude of this vector Negates the vector (i.e. -1 * v) the vector to be negated Negated Vector of v Returns true if magnitude(v1) >= magnitude(v2) v1 v2 magnitude(v1) >= magnitude(v2) Returns true if magnitude(v1) <= magnitude(v2) v1 v2 magnitude(v1) <= magnitude(v2) Returns true if magnitude(v1) < magnitude(v2) v1 v2 magnitude(v1) < magnitude(v2) Returns true if magnitude(v1) > magnitude(v2) v1 v2 magnitude(v1) > magnitude(v2) Performs cross multiplication from vec1 to vec2 First Vector Second Vector Normal vector of first two vectors Scalar Multiply a Vector dest = (src.i * scalar)i + (src.j * scalar)j + ... The Vector in which the result will be stored The Vector that will be multiplied The scalar value to multiply the Vector with Vector Addition src1 src2 src1+src2 = (src1.i + src2.i) * i + ... Vector Subtraction src1 src2 src1+src2 = (src1.i + src2.i) * i + ... Vector Addition, fastest method to use if dest = src1 or src2 dest = (src1.i + src2.i) * i + ... src1 src2 Vector Subtraction, fastest method to use if dest = src1 or src2 dest = (src1.i - src2.i) * i + ... src1 src2 Normalize the vector src (src / magnitude(src)) Vector to normalize, this is unaffected Normalized Vector i direction value j direction value k direction value Magnitude of Vector Summary description for ZoomTrigger. The zoom factor to zoom to The direction of zooming up, down gets or sets the zoom factor to zoom to Contains the necessary items used to describe a Game level. Holds the information about the current list of WorldObjects, the view background, the view terrain collision mask, and other necessary information used to play the game level. An array of all the stages this level contains. The index of the current stage Makes a new level. The array of stages that belong to this level The current stage of this level The index of the current stage in the stages array This is the representation of a single layer of background for the level. It's all fancy and parallax, and stuff. The actual background animation. Teh Parallax factor!!1! Read the documentation for the corresponding property. The actual renderable used to display the background. See BackgroundRenderable property documentation for more information. Sets the animation with the specified parameters. Allows is to sort level backgrounds by parallax factor. Gets the background animation. Gets or sets how many times we need to tile the background vertically. Gets or sets how many times we need to tile the background horizontally. Gets or sets the parallax factor. The value of 0 means the background will be stationary. The value of 1 means it will be moving the same as the character. Stuff in between is stuff in between. Stuff outside the range... Hell, I don't know what will happen, but probably nothing good. Gets the center of the background. Gets the renderable thing that we acutally need to make the background. This needs to be used instead of the Animation property, because the background will sometimes need to be tiled. Contains the necessary items used to describe a Game stage. Holds the information about the current list of WorldObjects, the view background, the view terrain collision mask, and other necessary information used to play the game level. This defines the scale from which the Physics Engine converts its calculations into GameWorld. Game settings for the level. List of all items in the level. List of all particles in the level. List of all actors in the level. List of all terrain objects. This is the guy controlled by the user. The list of backgrounds. The collision boxes that cause collisions with this level The zoom for the stage. See Field description for more info. The center of the view for the stage. The name of this stage Makes a new level. Returns the number of backgrounds we have. Adds a background to the background arraylist LevelBackground to be added to stage Removed a background from the stage The LevelBackground to be removed Returns the index-th background. This is VERY important. This defines the scale from which the Physics Engine converts its calculations into GameWorld. The result is then truncated into an unsigned integer and then used to place the object in the world Gives usable access to the list of items. Gives usable access to the list of particles. Gives usable access to the list of actors. Gives usable access to the list of terrain. The collision boxes that cause collisions with this level Gets or sets the list of backgrounds. This is purely for XML serialization purposes. The world object that is controlled by the player. The index into the array of actors of the one that is controlled by the player. Gets or sets the zoom level for the display. The zoom level of 1 means the images appear precisely their size, the zoom level of 0.5 means everything is half size, etc. It might not be a good idea to set this to zero, as stuff would kinda disappear then. Gets or sets the view center. That is basically the world coordinates of the point that will be in the center of the screen. Gets or sets stage width. Gets or sets stage height. Gets the center of the level. gets or sets this stages name