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)); }