diff --git a/Phaser/Cache.ts b/Phaser/Cache.ts
index 2a725c8c..796f14b6 100644
--- a/Phaser/Cache.ts
+++ b/Phaser/Cache.ts
@@ -11,6 +11,9 @@ module Phaser {
export class Cache {
+ /**
+ * Cache constructor
+ */
constructor(game: Game) {
this._game = game;
@@ -22,19 +25,53 @@ module Phaser {
}
+ /**
+ * Local private reference to game.
+ */
private _game: Game;
+ /**
+ * Canvas key-value container.
+ * @type {object}
+ */
private _canvases;
+ /**
+ * Image key-value container.
+ * @type {object}
+ */
private _images;
+ /**
+ * Sound key-value container.
+ * @type {object}
+ */
private _sounds;
+ /**
+ * Text key-value container.
+ * @type {object}
+ */
private _text;
+ /**
+ * Add a new canvas.
+ * @param key Asset key for this canvas.
+ * @param canvas Canvas DOM element.
+ * @param context Render context of this canvas.
+ */
public addCanvas(key: string, canvas: HTMLCanvasElement, context: CanvasRenderingContext2D) {
this._canvases[key] = { canvas: canvas, context: context };
}
+ /**
+ * Add a new sprite sheet.
+ * @param key Asset key for the sprite sheet.
+ * @param url URL of this sprite sheet file.
+ * @param data Extra sprite sheet data.
+ * @param frameWidth Width of the sprite sheet.
+ * @param frameHeight Height of the sprite sheet.
+ * @param frameMax How many frames stored in the sprite sheet.
+ */
public addSpriteSheet(key: string, url: string, data, frameWidth: number, frameHeight: number, frameMax: number) {
this._images[key] = { url: url, data: data, spriteSheet: true, frameWidth: frameWidth, frameHeight: frameHeight };
@@ -42,6 +79,13 @@ module Phaser {
}
+ /**
+ * Add a new texture atlas.
+ * @param key Asset key for the texture atlas.
+ * @param url URL of this texture atlas file.
+ * @param data Extra texture atlas data.
+ * @param data Texture atlas frames data.
+ */
public addTextureAtlas(key: string, url: string, data, jsonData) {
this._images[key] = { url: url, data: data, spriteSheet: true };
@@ -49,18 +93,36 @@ module Phaser {
}
+ /**
+ * Add a new image.
+ * @param key Asset key for the image.
+ * @param url URL of this image file.
+ * @param data Extra image data.
+ */
public addImage(key: string, url: string, data) {
this._images[key] = { url: url, data: data, spriteSheet: false };
}
+ /**
+ * Add a new sound.
+ * @param key Asset key for the sound.
+ * @param url URL of this sound file.
+ * @param data Extra sound data.
+ */
public addSound(key: string, url: string, data) {
this._sounds[key] = { url: url, data: data, decoded: false };
}
+ /**
+ * Add a new decoded sound.
+ * @param key Asset key for the sound.
+ * @param url URL of this sound file.
+ * @param data Extra sound data.
+ */
public decodedSound(key: string, data) {
this._sounds[key].data = data;
@@ -68,12 +130,23 @@ module Phaser {
}
+ /**
+ * Add a new text data.
+ * @param key Asset key for the text data.
+ * @param url URL of this text data file.
+ * @param data Extra text data.
+ */
public addText(key: string, url: string, data) {
this._text[key] = { url: url, data: data };
}
+ /**
+ * Get canvas by key.
+ * @param key Asset key of the canvas you want.
+ * @return {object} The canvas you want.
+ */
public getCanvas(key: string) {
if (this._canvases[key])
@@ -85,6 +158,11 @@ module Phaser {
}
+ /**
+ * Get image data by key.
+ * @param key Asset key of the image you want.
+ * @return {object} The image data you want.
+ */
public getImage(key: string) {
if (this._images[key])
@@ -96,6 +174,11 @@ module Phaser {
}
+ /**
+ * Get frame data by key.
+ * @param key Asset key of the frame data you want.
+ * @return {object} The frame data you want.
+ */
public getFrameData(key: string): FrameData {
if (this._images[key] && this._images[key].spriteSheet == true)
@@ -107,6 +190,11 @@ module Phaser {
}
+ /**
+ * Get sound data by key.
+ * @param key Asset key of the sound you want.
+ * @return {object} The sound data you want.
+ */
public getSound(key: string) {
if (this._sounds[key])
@@ -118,6 +206,11 @@ module Phaser {
}
+ /**
+ * Check whether an asset is decoded sound.
+ * @param key Asset key of the sound you want.
+ * @return {object} The sound data you want.
+ */
public isSoundDecoded(key: string): bool {
if (this._sounds[key])
@@ -127,6 +220,11 @@ module Phaser {
}
+ /**
+ * Check whether an asset is sprite sheet.
+ * @param key Asset key of the sprite sheet you want.
+ * @return {object} The sprite sheet data you want.
+ */
public isSpriteSheet(key: string): bool {
if (this._images[key])
@@ -136,6 +234,11 @@ module Phaser {
}
+ /**
+ * Get text data by key.
+ * @param key Asset key of the text data you want.
+ * @return {object} The text data you want.
+ */
public getText(key: string) {
if (this._text[key])
@@ -147,6 +250,9 @@ module Phaser {
}
+ /**
+ * Clean up cache memory.
+ */
public destroy() {
for (var item in this._canvases)
diff --git a/Phaser/Game.ts b/Phaser/Game.ts
index f8fa2690..3ff9a2b7 100644
--- a/Phaser/Game.ts
+++ b/Phaser/Game.ts
@@ -34,7 +34,7 @@
/**
* Phaser - Game
*
-* This is where the magic happens. The Game object is the heart of your game,
+* This is where the magic happens. The Game object is the heart of your game,
* providing quick access to common functions and handling the boot process.
*
* "Hell, there are no rules here - we're trying to accomplish something."
@@ -45,6 +45,20 @@ module Phaser {
export class Game {
+ /**
+ * Game constructor
+ *
+ * Instantiate a new Game object.
+ *
+ * @param callbackContext Which context will the callbacks be called with.
+ * @param parent ID of its parent DOM element.
+ * @param width The width of your game in game pixels.
+ * @param height The height of your game in game pixels.
+ * @param initCallback Init callback invoked when init default screen.
+ * @param createCallback Create callback invoked when create default screen.
+ * @param updateCallback Update callback invoked when update default screen.
+ * @param renderCallback Render callback invoked when render default screen.
+ */
constructor(callbackContext, parent?: string = '', width?: number = 800, height?: number = 600, initCallback = null, createCallback = null, updateCallback = null, renderCallback = null) {
this.callbackContext = callbackContext;
@@ -65,39 +79,155 @@ module Phaser {
}
+ /**
+ * Game loop trigger wrapper.
+ */
private _raf: RequestAnimationFrame;
+ /**
+ * Max allowable accumulation.
+ * @type {number}
+ */
private _maxAccumulation: number = 32;
+ /**
+ * Total number of milliseconds elapsed since last update loop.
+ * @type {number}
+ */
private _accumulator: number = 0;
+ /**
+ * Milliseconds of time per step of the game loop.
+ * @type {number}
+ */
private _step: number = 0;
+ /**
+ * Whether loader complete loading or not.
+ * @type {boolean}
+ */
private _loadComplete: bool = false;
+ /**
+ * Game is paused?
+ * @type {boolean}
+ */
private _paused: bool = false;
+ /**
+ * The state to be switched to in the next frame.
+ * @type {State}
+ */
private _pendingState = null;
// Event callbacks
+ /**
+ * Context for calling the callbacks.
+ */
public callbackContext;
+ /**
+ * This will be called when init states. (loading assets...)
+ * @type {function}
+ */
public onInitCallback = null;
+ /**
+ * This will be called when create states. (setup states...)
+ * @type {function}
+ */
public onCreateCallback = null;
+ /**
+ * This will be called when update states.
+ * @type {function}
+ */
public onUpdateCallback = null;
+ /**
+ * This will be called when render states.
+ * @type {function}
+ */
public onRenderCallback = null;
+ /**
+ * This will be called when states paused.
+ * @type {function}
+ */
public onPausedCallback = null;
+ /**
+ * Reference to the assets cache.
+ * @type {Cache}
+ */
public cache: Cache;
+ /**
+ * Reference to the collision helper.
+ * @type {Collision}
+ */
public collision: Collision;
+ /**
+ * Reference to the input manager
+ * @type {Input}
+ */
public input: Input;
+ /**
+ * Reference to the assets loader.
+ * @type {Loader}
+ */
public loader: Loader;
+ /**
+ * Reference to the math helper.
+ * @type {GameMath}
+ */
public math: GameMath;
+ /**
+ * Reference to the motion helper.
+ * @type {Motion}
+ */
public motion: Motion;
+ /**
+ * Reference to the sound manager.
+ * @type {SoundManager}
+ */
public sound: SoundManager;
+ /**
+ * Reference to the stage.
+ * @type {Stage}
+ */
public stage: Stage;
+ /**
+ * Reference to game clock.
+ * @type {Time}
+ */
public time: Time;
+ /**
+ * Reference to the tween manager.
+ * @type {TweenManager}
+ */
public tweens: TweenManager;
+ /**
+ * Reference to the world.
+ * @type {World}
+ */
public world: World;
+ /**
+ * Instance of repeatable random data generator helper.
+ * @type {RandomDataGenerator}
+ */
public rnd: RandomDataGenerator;
+ /**
+ * Device detector.
+ * @type {Device}
+ */
public device: Device;
+ /**
+ * Whether the game engine is booted, aka available.
+ * @type {boolean}
+ */
public isBooted: bool = false;
+ /**
+ * Is game running or paused?
+ * @type {boolean}
+ */
public isRunning: bool = false;
+ /**
+ * Initialize engine sub modules and start the game.
+ * @param parent ID of parent Dom element.
+ * @param width Width of the game screen.
+ * @param height Height of the game screen.
+ */
private boot(parent: string, width: number, height: number) {
if (this.isBooted == true)
@@ -155,13 +285,18 @@ module Phaser {
}
+ /**
+ * Called when the loader has finished after init was run.
+ */
private loadComplete() {
- // Called when the loader has finished after init was run
this._loadComplete = true;
}
+ /**
+ * Game loop method will be called when it's booting.
+ */
private bootLoop() {
this.time.update();
@@ -171,6 +306,9 @@ module Phaser {
}
+ /**
+ * Game loop method will be called when it's paused.
+ */
private pausedLoop() {
this.time.update();
@@ -185,6 +323,9 @@ module Phaser {
}
+ /**
+ * Game loop method will be called when it's running.
+ */
private loop() {
this.time.update();
@@ -220,6 +361,9 @@ module Phaser {
}
+ /**
+ * Start current state.
+ */
private startState() {
if (this.onInitCallback !== null)
@@ -252,6 +396,13 @@ module Phaser {
}
+ /**
+ * Set all state callbacks (init, create, update, render).
+ * @param initCallback Init callback invoked when init state.
+ * @param createCallback Create callback invoked when create state.
+ * @param updateCallback Update callback invoked when update state.
+ * @param renderCallback Render callback invoked when render state.
+ */
public setCallbacks(initCallback = null, createCallback = null, updateCallback = null, renderCallback = null) {
this.onInitCallback = initCallback;
@@ -261,6 +412,12 @@ module Phaser {
}
+ /**
+ * Switch to a new State.
+ * @param state The state you want to switch to.
+ * @param clearWorld Optional, clear everything in the world? (Default to true)
+ * @param clearCache Optional, clear asset cache? (Default to false and ONLY available when clearWorld=true)
+ */
public switchState(state, clearWorld: bool = true, clearCache: bool = false) {
if (this.isBooted == false)
@@ -333,7 +490,9 @@ module Phaser {
}
- // Nuke the whole game from orbit
+ /**
+ * Nuke the whole game from orbit
+ */
public destroy() {
this.callbackContext = null;
@@ -398,46 +557,127 @@ module Phaser {
// Handy Proxy methods
+ /**
+ * Create a new camera with specific position and size.
+ *
+ * @param x X position of the new camera.
+ * @param y Y position of the new camera.
+ * @param width Width of the new camera.
+ * @param height Height of the new camera.
+ * @returns {Camera=} The newly created camera object.
+ */
public createCamera(x: number, y: number, width: number, height: number): Camera {
return this.world.createCamera(x, y, width, height);
}
+ /**
+ * Create a new GeomSprite with specific position.
+ *
+ * @param x X position of the new geom sprite.
+ * @param y Y position of the new geom sprite.
+ * @returns {GeomSprite=} The newly created geom sprite object.
+ */
public createGeomSprite(x: number, y: number): GeomSprite {
return this.world.createGeomSprite(x, y);
}
+ /**
+ * Create a new Sprite with specific position and sprite sheet key.
+ *
+ * @param x X position of the new sprite.
+ * @param y Y position of the new sprite.
+ * @param key Optinal, key for the sprite sheet you want it to use.
+ * @returns {Sprite=} The newly created sprite object.
+ */
public createSprite(x: number, y: number, key?: string = ''): Sprite {
return this.world.createSprite(x, y, key);
}
+ /**
+ * Create a new DynamicTexture with specific size.
+ *
+ * @param width Width of the texture.
+ * @param height Height of the texture.
+ * @returns {DynamicTexture=} The newly created dynamic texture object.
+ */
public createDynamicTexture(width: number, height: number): DynamicTexture {
return this.world.createDynamicTexture(width, height);
}
+ /**
+ * Create a new object container.
+ *
+ * @param MaxSize Optinal, capacity of this group.
+ * @returns {Group=} The newly created group.
+ */
public createGroup(MaxSize?: number = 0): Group {
return this.world.createGroup(MaxSize);
}
+ /**
+ * Create a new Particle.
+ *
+ * @return {Particle=} The newly created particle object.
+ */
public createParticle(): Particle {
return this.world.createParticle();
}
+ /**
+ * Create a new Emitter.
+ *
+ * @param x Optinal, x position of the emitter.
+ * @param y Optinal, y position of the emitter.
+ * @param size Optinal, size of this emitter.
+ * @return {Emitter=} The newly created emitter object.
+ */
public createEmitter(x?: number = 0, y?: number = 0, size?: number = 0): Emitter {
return this.world.createEmitter(x, y, size);
}
+ /**
+ * Create a new ScrollZone object with image key, position and size.
+ *
+ * @param key Key to a image you wish this object to use.
+ * @param x X position of this object.
+ * @param y Y position of this object.
+ * @param width Width of this object.
+ * @param height Heigth of this object.
+ * @returns {ScrollZone=} The newly created scroll zone object.
+ */
public createScrollZone(key: string, x?: number = 0, y?: number = 0, width?: number = 0, height?: number = 0): ScrollZone {
return this.world.createScrollZone(key, x, y, width, height);
}
+ /**
+ * Create a new Tilemap.
+ *
+ * @param key Key for tileset image.
+ * @param mapData Data of this tilemap.
+ * @param format Format of map data. (Tilemap.FORMAT_CSV or Tilemap.FORMAT_TILED_JSON)
+ * @param resizeWorld Optinal, resize the world to make same as tilemap?
+ * @param tileWidth Optinal, width of each tile.
+ * @param tileHeight Optinal, height of each tile.
+ * @return {Tilemap=} The newly created tilemap object.
+ */
public createTilemap(key: string, mapData: string, format: number, resizeWorld: bool = true, tileWidth?: number = 0, tileHeight?: number = 0): Tilemap {
return this.world.createTilemap(key, mapData, format, resizeWorld, tileWidth, tileHeight);
}
+ /**
+ * Create a tween object for a specific object.
+ *
+ * @param obj Object you wish the tween will affect.
+ * @return {Phaser.Tween=} The newly created tween object.
+ */
public createTween(obj): Tween {
return this.tweens.create(obj);
}
+ /**
+ * Call this method to see if one object collids another.
+ * @return {boolean} Whether the given objects or groups collids.
+ */
public collide(objectOrGroup1: Basic = null, objectOrGroup2: Basic = null, notifyCallback = null): bool {
return this.collision.overlap(objectOrGroup1, objectOrGroup2, notifyCallback, Collision.separate);
}
diff --git a/Phaser/Stage.ts b/Phaser/Stage.ts
index 12deb17e..4311b7ec 100644
--- a/Phaser/Stage.ts
+++ b/Phaser/Stage.ts
@@ -15,6 +15,15 @@ module Phaser {
export class Stage {
+ /**
+ * Stage constructor
+ *
+ * Create a new Stage with specific width and height.
+ *
+ * @param parent ID of parent DOM element.
+ * @param width Width of the stage.
+ * @param height Height of the stage.
+ */
constructor(game: Game, parent: string, width: number, height: number) {
this._game = game;
@@ -55,30 +64,116 @@ module Phaser {
}
+ /**
+ * Local private reference to game.
+ */
private _game: Game;
+ /**
+ * Background color of the stage.
+ * @type {string}
+ */
private _bgColor: string;
+ /**
+ * This will be displayed when Phaser is started without any default functions or State
+ * @type {BootScreen}
+ */
private _bootScreen;
+ /**
+ * This will be displayed whenever the game loses focus or the player switches to another browser tab.
+ * @type {PauseScreen}
+ */
private _pauseScreen;
+ /**
+ * Screen orientation enum: Landscape.
+ * @type {number}
+ */
public static ORIENTATION_LANDSCAPE: number = 0;
+ /**
+ * Screen orientation enum: Portrait.
+ * @type {number}
+ */
public static ORIENTATION_PORTRAIT: number = 1;
+ /**
+ * Bound of this stage.
+ * @type {Rectangle}
+ */
public bounds: Rectangle;
+ /**
+ * Asperct ratio, thus: width / height.
+ * @type {number}
+ */
public aspectRatio: number;
+ /**
+ * Clear the whole stage every frame? (Default to true)
+ * @type {boolean}
+ */
public clear: bool = true;
+ /**
+ * Canvas element used by engine.
+ * @type {HTMLCanvasElement}
+ */
public canvas: HTMLCanvasElement;
+ /**
+ * Render context of stage's canvas.
+ * @type {CanvasRenderingContext2D}
+ */
public context: CanvasRenderingContext2D;
+ /**
+ * Do not use pause screen when game is paused?
+ * (Default to false, aka always use PauseScreen)
+ * @type {boolean}
+ */
public disablePauseScreen: bool = false;
+ /**
+ * Do not use boot screen when engine starts?
+ * (Default to false, aka always use BootScreen)
+ * @type {boolean}
+ */
public disableBootScreen: bool = false;
+ /**
+ * Offset from this stage to the canvas element.
+ * @type {Point}
+ */
public offset: Point;
+ /**
+ * This object manages scaling of the game, see(StageScaleMode).
+ * @type {StageScaleMode}
+ */
public scale: StageScaleMode;
+ /**
+ * Which mode will the game be scaled.
+ * Available: StageScaleMode.EXACT_FIT, StageScaleMode.NO_SCALE, StageScaleMode.SHOW_ALL.
+ * @type {number}
+ */
public scaleMode: number;
+ /**
+ * Minimal scale factor of x-axis.
+ * @type {number}
+ */
public minScaleX: number = null;
+ /**
+ * Maximal scale factor of x-axis.
+ * @type {number}
+ */
public maxScaleX: number = null;
+ /**
+ * Minimal scale factor of y-axis.
+ * @type {number}
+ */
public minScaleY: number = null;
+ /**
+ * Maximal scale factor of y-axis.
+ * @type {number}
+ */
public maxScaleY: number = null;
+ /**
+ * Update stage for rendering. This will handle scaling, clearing
+ * and PauseScreen/BootScreen updating and rendering.
+ */
public update() {
this.scale.update();
@@ -103,6 +198,9 @@ module Phaser {
}
+ /**
+ * This method will be called when canvas element's visibility changed.
+ */
private visibilityChange(event) {
if (this.disablePauseScreen)
@@ -144,10 +242,25 @@ module Phaser {
}
+ /**
+ * Canvas strokeStyle.
+ * @type {string}
+ */
public strokeStyle: string;
+ /**
+ * Canvas lineWidth.
+ * @type {number}
+ */
public lineWidth: number;
+ /**
+ * Canvas fillStyle.
+ * @type {string}
+ */
public fillStyle: string;
+ /**
+ * Save current canvas properties (strokeStyle, lineWidth and fillStyle) for later using.
+ */
public saveCanvasValues() {
this.strokeStyle = this.context.strokeStyle;
@@ -156,6 +269,9 @@ module Phaser {
}
+ /**
+ * Restore current canvas values (strokeStyle, lineWidth and fillStyle) with saved values.
+ */
public restoreCanvasValues() {
this.context.strokeStyle = this.strokeStyle;
diff --git a/Phaser/State.ts b/Phaser/State.ts
index df5cb6da..c9c39956 100644
--- a/Phaser/State.ts
+++ b/Phaser/State.ts
@@ -10,6 +10,11 @@ module Phaser {
export class State {
+ /**
+ * State constructor
+ *
+ * Create a new State.
+ */
constructor(game: Game) {
this.game = game;
@@ -29,71 +34,220 @@ module Phaser {
}
+ /**
+ * Reference to Game.
+ */
public game: Game;
+ /**
+ * Currently used camera.
+ * @type {Camera}
+ */
public camera: Camera;
+ /**
+ * Reference to the assets cache.
+ * @type {Cache}
+ */
public cache: Cache;
+ /**
+ * Reference to the collision helper.
+ * @type {Collision}
+ */
public collision: Collision;
+ /**
+ * Reference to the input manager
+ * @type {Input}
+ */
public input: Input;
+ /**
+ * Reference to the assets loader.
+ * @type {Loader}
+ */
public loader: Loader;
+ /**
+ * Reference to the math helper.
+ * @type {GameMath}
+ */
public math: GameMath;
+ /**
+ * Reference to the motion helper.
+ * @type {Motion}
+ */
public motion: Motion;
+ /**
+ * Reference to the sound manager.
+ * @type {SoundManager}
+ */
public sound: SoundManager;
+ /**
+ * Reference to the stage.
+ * @type {Stage}
+ */
public stage: Stage;
+ /**
+ * Reference to game clock.
+ * @type {Time}
+ */
public time: Time;
+ /**
+ * Reference to the tween manager.
+ * @type {TweenManager}
+ */
public tweens: TweenManager;
+ /**
+ * Reference to the world.
+ * @type {World}
+ */
public world: World;
// Overload these in your own States
+ /**
+ * Override this method to add some load operations.
+ * If you need to use the loader, you may need to use them here.
+ */
public init() { }
+ /**
+ * This method is called after the game engine successfully switches states.
+ * Feel free to add any setup code here.(Do not load anything here, override init() instead)
+ */
public create() { }
+ /**
+ * Put update logic here.
+ */
public update() { }
+ /**
+ * Put render operations here.
+ */
public render() { }
+ /**
+ * This method will be called when game paused.
+ */
public paused() { }
// Handy Proxy methods
+ /**
+ * Create a new camera with specific position and size.
+ *
+ * @param x X position of the new camera.
+ * @param y Y position of the new camera.
+ * @param width Width of the new camera.
+ * @param height Height of the new camera.
+ * @returns {Camera=} The newly created camera object.
+ */
public createCamera(x: number, y: number, width: number, height: number): Camera {
return this.game.world.createCamera(x, y, width, height);
}
+ /**
+ * Create a new GeomSprite with specific position.
+ *
+ * @param x X position of the new geom sprite.
+ * @param y Y position of the new geom sprite.
+ * @returns {GeomSprite=} The newly created geom sprite object.
+ */
public createGeomSprite(x: number, y: number): GeomSprite {
return this.world.createGeomSprite(x, y);
}
+ /**
+ * Create a new Sprite with specific position and sprite sheet key.
+ *
+ * @param x X position of the new sprite.
+ * @param y Y position of the new sprite.
+ * @param key Optinal, key for the sprite sheet you want it to use.
+ * @returns {Sprite=} The newly created sprite object.
+ */
public createSprite(x: number, y: number, key?: string = ''): Sprite {
return this.game.world.createSprite(x, y, key);
}
+ /**
+ * Create a new DynamicTexture with specific size.
+ *
+ * @param width Width of the texture.
+ * @param height Height of the texture.
+ * @returns {DynamicTexture=} The newly created dynamic texture object.
+ */
public createDynamicTexture(width: number, height: number): DynamicTexture {
return this.game.world.createDynamicTexture(width, height);
}
+ /**
+ * Create a new object container.
+ *
+ * @param MaxSize Optinal, capacity of this group.
+ * @returns {Group=} The newly created group.
+ */
public createGroup(MaxSize?: number = 0): Group {
return this.game.world.createGroup(MaxSize);
}
+ /**
+ * Create a new Particle.
+ *
+ * @return {Particle=} The newly created particle object.
+ */
public createParticle(): Particle {
return this.game.world.createParticle();
}
+ /**
+ * Create a new Emitter.
+ *
+ * @param x Optinal, x position of the emitter.
+ * @param y Optinal, y position of the emitter.
+ * @param size Optinal, size of this emitter.
+ * @return {Emitter=} The newly created emitter object.
+ */
public createEmitter(x?: number = 0, y?: number = 0, size?: number = 0): Emitter {
return this.game.world.createEmitter(x, y, size);
}
+ /**
+ * Create a new ScrollZone object with image key, position and size.
+ *
+ * @param key Key to a image you wish this object to use.
+ * @param x X position of this object.
+ * @param y Y position of this object.
+ * @param width Width of this object.
+ * @param height Heigth of this object.
+ * @returns {ScrollZone=} The newly created scroll zone object.
+ */
public createScrollZone(key: string, x?: number = 0, y?: number = 0, width?: number = 0, height?: number = 0): ScrollZone {
return this.game.world.createScrollZone(key, x, y, width, height);
}
+ /**
+ * Create a new Tilemap.
+ *
+ * @param key Key for tileset image.
+ * @param mapData Data of this tilemap.
+ * @param format Format of map data. (Tilemap.FORMAT_CSV or Tilemap.FORMAT_TILED_JSON)
+ * @param resizeWorld Optinal, resize the world to make same as tilemap?
+ * @param tileWidth Optinal, width of each tile.
+ * @param tileHeight Optinal, height of each tile.
+ * @return {Tilemap=} The newly created tilemap object.
+ */
public createTilemap(key: string, mapData: string, format: number, resizeWorld: bool = true, tileWidth?: number = 0, tileHeight?: number = 0): Tilemap {
return this.game.world.createTilemap(key, mapData, format, resizeWorld, tileWidth, tileHeight);
}
+ /**
+ * Create a tween object for a specific object.
+ *
+ * @param obj Object you wish the tween will affect.
+ * @return {Phaser.Tween=} The newly created tween object.
+ */
public createTween(obj): Tween {
return this.game.tweens.create(obj);
}
+ /**
+ * Call this method to see if one object collids another.
+ * @return {boolean} Whether the given objects or groups collids.
+ */
public collide(ObjectOrGroup1: Basic = null, ObjectOrGroup2: Basic = null, NotifyCallback = null): bool {
return this.collision.overlap(ObjectOrGroup1, ObjectOrGroup2, NotifyCallback, Collision.separate);
}
diff --git a/Phaser/World.ts b/Phaser/World.ts
index 1cefc5ff..babfe392 100644
--- a/Phaser/World.ts
+++ b/Phaser/World.ts
@@ -12,6 +12,13 @@ module Phaser {
export class World {
+ /**
+ * World constructor
+ * Create a new World with specific width and height.
+ *
+ * @param width Width of the world bound.
+ * @param height Height of the world bound.
+ */
constructor(game: Game, width: number, height: number) {
this._game = game;
@@ -28,13 +35,34 @@ module Phaser {
}
+ /**
+ * Local private reference to game.
+ */
private _game: Game;
+ /**
+ * Camera manager of this world.
+ * @type {CameraManager}
+ */
public cameras: CameraManager;
+ /**
+ * Object container stores every object created with `create*` methods.
+ * @type {Group}
+ */
public group: Group;
+ /**
+ * Bound of this world that objects can not escape from.
+ * @type {Rectangle}
+ */
public bounds: Rectangle;
+ /**
+ * @type {number}
+ */
public worldDivisions: number;
+ /**
+ * This is called automatically every frame, and is where main logic performs.
+ */
public update() {
this.group.preUpdate();
@@ -45,6 +73,9 @@ module Phaser {
}
+ /**
+ * Render every thing to the screen, automatically called after update().
+ */
public render() {
// Unlike in flixel our render process is camera driven, not group driven
@@ -52,6 +83,9 @@ module Phaser {
}
+ /**
+ * Clean up memory.
+ */
public destroy() {
this.group.destroy();
@@ -62,6 +96,14 @@ module Phaser {
// World methods
+ /**
+ * Update size of this world with specific width and height.
+ * You can choose update camera bounds automatically or not.
+ *
+ * @param width New width of the world.
+ * @param height New height of the world.
+ * @param updateCameraBounds Optinal, update camera bounds automatically or not. Default to true.
+ */
public setSize(width: number, height: number, updateCameraBounds: bool = true) {
this.bounds.width = width;
@@ -108,48 +150,130 @@ module Phaser {
// Cameras
+ /**
+ * Create a new camera with specific position and size.
+ *
+ * @param x X position of the new camera.
+ * @param y Y position of the new camera.
+ * @param width Width of the new camera.
+ * @param height Height of the new camera.
+ * @returns {Camera=} The newly created camera object.
+ */
public createCamera(x: number, y: number, width: number, height: number): Camera {
return this.cameras.addCamera(x, y, width, height);
}
+ /**
+ * Remove a new camera with its id.
+ *
+ * @param id ID of the camera you want to remove.
+ * @returns {boolean} True if successfully removed the camera, otherwise return false.
+ */
public removeCamera(id: number): bool {
return this.cameras.removeCamera(id);
}
+ /**
+ * Get all the cameras.
+ *
+ * @returns {array} An array contains all the cameras.
+ */
public getAllCameras(): Camera[] {
return this.cameras.getAll();
}
// Game Objects
+ /**
+ * Create a new Sprite with specific position and sprite sheet key.
+ *
+ * @param x X position of the new sprite.
+ * @param y Y position of the new sprite.
+ * @param key Optinal, key for the sprite sheet you want it to use.
+ * @returns {Sprite=} The newly created sprite object.
+ */
public createSprite(x: number, y: number, key?: string = ''): Sprite {
return this.group.add(new Sprite(this._game, x, y, key));
}
+ /**
+ * Create a new GeomSprite with specific position.
+ *
+ * @param x X position of the new geom sprite.
+ * @param y Y position of the new geom sprite.
+ * @returns {GeomSprite=} The newly created geom sprite object.
+ */
public createGeomSprite(x: number, y: number): GeomSprite {
return this.group.add(new GeomSprite(this._game, x, y));
}
+ /**
+ * Create a new DynamicTexture with specific size.
+ *
+ * @param width Width of the texture.
+ * @param height Height of the texture.
+ * @returns {DynamicTexture=} The newly created dynamic texture object.
+ */
public createDynamicTexture(width: number, height: number): DynamicTexture {
return new DynamicTexture(this._game, width, height);
}
+ /**
+ * Create a new object container.
+ *
+ * @param MaxSize Optinal, capacity of this group.
+ * @returns {Group=} The newly created group.
+ */
public createGroup(MaxSize?: number = 0): Group {
return this.group.add(new Group(this._game, MaxSize));
}
+ /**
+ * Create a new ScrollZone object with image key, position and size.
+ *
+ * @param key Key to a image you wish this object to use.
+ * @param x X position of this object.
+ * @param y Y position of this object.
+ * @param width Width of this object.
+ * @param height Heigth of this object.
+ * @returns {ScrollZone=} The newly created scroll zone object.
+ */
public createScrollZone(key: string, x?: number = 0, y?: number = 0, width?: number = 0, height?: number = 0): ScrollZone {
return this.group.add(new ScrollZone(this._game, key, x, y, width, height));
}
+ /**
+ * Create a new Tilemap.
+ *
+ * @param key Key for tileset image.
+ * @param mapData Data of this tilemap.
+ * @param format Format of map data. (Tilemap.FORMAT_CSV or Tilemap.FORMAT_TILED_JSON)
+ * @param resizeWorld Optinal, resize the world to make same as tilemap?
+ * @param tileWidth Optinal, width of each tile.
+ * @param tileHeight Optinal, height of each tile.
+ * @return {Tilemap=} The newly created tilemap object.
+ */
public createTilemap(key: string, mapData: string, format: number, resizeWorld: bool = true, tileWidth?: number = 0, tileHeight?: number = 0): Tilemap {
return this.group.add(new Tilemap(this._game, key, mapData, format, resizeWorld, tileWidth, tileHeight));
}
+ /**
+ * Create a new Particle.
+ *
+ * @return {Particle=} The newly created particle object.
+ */
public createParticle(): Particle {
return new Particle(this._game);
}
+ /**
+ * Create a new Emitter.
+ *
+ * @param x Optinal, x position of the emitter.
+ * @param y Optinal, y position of the emitter.
+ * @param size Optinal, size of this emitter.
+ * @return {Emitter=} The newly created emitter object.
+ */
public createEmitter(x?: number = 0, y?: number = 0, size?: number = 0): Emitter {
return this.group.add(new Emitter(this._game, x, y, size));
}