2013-05-28 20:38:37 +00:00
|
|
|
/// <reference path="../Game.ts" />
|
|
|
|
/// <reference path="../tweens/Tween.ts" />
|
2013-08-06 02:14:48 +00:00
|
|
|
/// <reference path="../particles/ArcadeEmitter.ts" />
|
|
|
|
/// <reference path="../particles/ArcadeParticle.ts" />
|
2013-05-31 17:21:32 +00:00
|
|
|
/// <reference path="../gameobjects/Sprite.ts" />
|
2013-08-06 02:14:48 +00:00
|
|
|
/// <reference path="../ui/Button.ts" />
|
2013-05-31 17:21:32 +00:00
|
|
|
/// <reference path="../gameobjects/ScrollZone.ts" />
|
2013-08-06 02:14:48 +00:00
|
|
|
/// <reference path="../display/DynamicTexture.ts" />
|
|
|
|
/// <reference path="../tilemap/Tilemap.ts" />
|
2013-05-22 23:01:58 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Phaser - GameObjectFactory
|
|
|
|
*
|
|
|
|
* A quick way to create new world objects and add existing objects to the current world.
|
|
|
|
*/
|
|
|
|
|
|
|
|
module Phaser {
|
|
|
|
|
|
|
|
export class GameObjectFactory {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* GameObjectFactory constructor
|
|
|
|
* @param game {Game} A reference to the current Game.
|
|
|
|
*/
|
|
|
|
constructor(game: Phaser.Game) {
|
|
|
|
|
2013-08-08 03:35:13 +00:00
|
|
|
this.game = game;
|
|
|
|
this._world = this.game.world;
|
2013-05-22 23:01:58 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2013-08-08 03:35:13 +00:00
|
|
|
* Local reference to Game
|
2013-05-22 23:01:58 +00:00
|
|
|
*/
|
2013-08-08 03:35:13 +00:00
|
|
|
public game: Phaser.Game;
|
2013-05-22 23:01:58 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Local private reference to World
|
|
|
|
*/
|
|
|
|
private _world: Phaser.World;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Create a new camera with specific position and size.
|
|
|
|
*
|
|
|
|
* @param x {number} X position of the new camera.
|
|
|
|
* @param y {number} Y position of the new camera.
|
|
|
|
* @param width {number} Width of the new camera.
|
|
|
|
* @param height {number} Height of the new camera.
|
|
|
|
* @returns {Camera} The newly created camera object.
|
|
|
|
*/
|
|
|
|
public camera(x: number, y: number, width: number, height: number): Camera {
|
2013-05-28 20:38:37 +00:00
|
|
|
return this._world.cameras.addCamera(x, y, width, height);
|
2013-05-22 23:01:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Create a new GeomSprite with specific position.
|
|
|
|
*
|
|
|
|
* @param x {number} X position of the new geom sprite.
|
|
|
|
* @param y {number} Y position of the new geom sprite.
|
|
|
|
* @returns {GeomSprite} The newly created geom sprite object.
|
|
|
|
*/
|
2013-05-28 20:38:37 +00:00
|
|
|
//public geomSprite(x: number, y: number): GeomSprite {
|
2013-08-08 03:35:13 +00:00
|
|
|
// return <GeomSprite> this._world.group.add(new GeomSprite(this.game, x, y));
|
2013-05-28 20:38:37 +00:00
|
|
|
//}
|
2013-05-22 23:01:58 +00:00
|
|
|
|
2013-07-12 02:28:46 +00:00
|
|
|
/**
|
|
|
|
* Create a new Button game object.
|
|
|
|
*
|
|
|
|
* @param [x] {number} X position of the button.
|
|
|
|
* @param [y] {number} Y position of the button.
|
|
|
|
* @param [key] {string} The image key as defined in the Game.Cache to use as the texture for this button.
|
|
|
|
* @param [callback] {function} The function to call when this button is pressed
|
|
|
|
* @param [callbackContext] {object} The context in which the callback will be called (usually 'this')
|
|
|
|
* @param [overFrame] {string|number} This is the frame or frameName that will be set when this button is in an over state. Give either a number to use a frame ID or a string for a frame name.
|
|
|
|
* @param [outFrame] {string|number} This is the frame or frameName that will be set when this button is in an out state. Give either a number to use a frame ID or a string for a frame name.
|
|
|
|
* @param [downFrame] {string|number} This is the frame or frameName that will be set when this button is in a down state. Give either a number to use a frame ID or a string for a frame name.
|
|
|
|
* @returns {Button} The newly created button object.
|
|
|
|
*/
|
2013-08-08 10:34:33 +00:00
|
|
|
public button(x: number = 0, y: number = 0, key: string = null, callback = null, callbackContext = null, overFrame = null, outFrame = null, downFrame = null): UI.Button {
|
2013-08-08 03:35:13 +00:00
|
|
|
return <UI.Button> this._world.group.add(new UI.Button(this.game, x, y, key, callback, callbackContext, overFrame, outFrame, downFrame));
|
2013-07-12 02:28:46 +00:00
|
|
|
}
|
|
|
|
|
2013-05-22 23:01:58 +00:00
|
|
|
/**
|
|
|
|
* Create a new Sprite with specific position and sprite sheet key.
|
|
|
|
*
|
|
|
|
* @param x {number} X position of the new sprite.
|
|
|
|
* @param y {number} Y position of the new sprite.
|
2013-05-31 14:13:03 +00:00
|
|
|
* @param [key] {string} The image key as defined in the Game.Cache to use as the texture for this sprite
|
2013-06-06 01:47:08 +00:00
|
|
|
* @param [frame] {string|number} If the sprite uses an image from a texture atlas or sprite sheet you can pass the frame here. Either a number for a frame ID or a string for a frame name.
|
2013-05-22 23:01:58 +00:00
|
|
|
* @returns {Sprite} The newly created sprite object.
|
|
|
|
*/
|
2013-08-08 10:34:33 +00:00
|
|
|
public sprite(x: number, y: number, key: string = '', frame = null): Sprite {
|
2013-08-08 03:35:13 +00:00
|
|
|
return <Sprite> this._world.group.add(new Sprite(this.game, x, y, key, frame));
|
2013-05-22 23:01:58 +00:00
|
|
|
}
|
|
|
|
|
2013-08-08 10:34:33 +00:00
|
|
|
public audio(key: string, volume: number = 1, loop: boolean = false) {
|
2013-08-08 03:35:13 +00:00
|
|
|
return <Sound> this.game.sound.add(key, volume, loop);
|
2013-07-16 13:45:08 +00:00
|
|
|
}
|
|
|
|
|
2013-06-26 04:44:56 +00:00
|
|
|
/**
|
|
|
|
* Create a new Sprite with the physics automatically created and set to DYNAMIC. The Sprite position offset is set to its center.
|
|
|
|
*
|
|
|
|
* @param x {number} X position of the new sprite.
|
|
|
|
* @param y {number} Y position of the new sprite.
|
|
|
|
* @param [key] {string} The image key as defined in the Game.Cache to use as the texture for this sprite
|
|
|
|
* @param [frame] {string|number} If the sprite uses an image from a texture atlas or sprite sheet you can pass the frame here. Either a number for a frame ID or a string for a frame name.
|
2013-06-26 13:18:48 +00:00
|
|
|
* @param [bodyType] {number} The physics body type of the object (defaults to BODY_DYNAMIC)
|
2013-06-26 04:44:56 +00:00
|
|
|
* @param [shapeType] The default body shape is either 0 for a Box or 1 for a Circle. See Sprite.body.addShape for custom shapes (polygons, etc)
|
|
|
|
* @returns {Sprite} The newly created sprite object.
|
|
|
|
*/
|
2013-08-08 10:34:33 +00:00
|
|
|
//public physicsSprite(x: number, y: number, key: string = '', frame? = null, bodyType: number = Phaser.Types.BODY_DYNAMIC, shapeType:number = 0): Sprite {
|
2013-08-08 03:35:13 +00:00
|
|
|
// return <Sprite> this._world.group.add(new Sprite(this.game, x, y, key, frame, bodyType, shapeType));
|
2013-08-06 03:34:52 +00:00
|
|
|
//}
|
2013-06-26 04:44:56 +00:00
|
|
|
|
2013-05-22 23:01:58 +00:00
|
|
|
/**
|
|
|
|
* Create a new DynamicTexture with specific size.
|
|
|
|
*
|
|
|
|
* @param width {number} Width of the texture.
|
|
|
|
* @param height {number} Height of the texture.
|
|
|
|
* @returns {DynamicTexture} The newly created dynamic texture object.
|
|
|
|
*/
|
|
|
|
public dynamicTexture(width: number, height: number): DynamicTexture {
|
2013-08-08 03:35:13 +00:00
|
|
|
return new DynamicTexture(this.game, width, height);
|
2013-05-22 23:01:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Create a new object container.
|
|
|
|
*
|
|
|
|
* @param maxSize {number} Optional, capacity of this group.
|
|
|
|
* @returns {Group} The newly created group.
|
|
|
|
*/
|
2013-08-08 10:34:33 +00:00
|
|
|
public group(maxSize: number = 0): Group {
|
2013-08-08 03:35:13 +00:00
|
|
|
return <Group> this._world.group.add(new Group(this.game, maxSize));
|
2013-05-22 23:01:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Create a new Particle.
|
|
|
|
*
|
|
|
|
* @return {Particle} The newly created particle object.
|
|
|
|
*/
|
2013-08-06 02:14:48 +00:00
|
|
|
public particle(): ArcadeParticle {
|
2013-08-08 03:35:13 +00:00
|
|
|
return new ArcadeParticle(this.game);
|
2013-05-31 17:21:32 +00:00
|
|
|
}
|
2013-05-22 23:01:58 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Create a new Emitter.
|
|
|
|
*
|
|
|
|
* @param x {number} Optional, x position of the emitter.
|
|
|
|
* @param y {number} Optional, y position of the emitter.
|
|
|
|
* @param size {number} Optional, size of this emitter.
|
|
|
|
* @return {Emitter} The newly created emitter object.
|
|
|
|
*/
|
2013-08-08 10:34:33 +00:00
|
|
|
public emitter(x: number = 0, y: number = 0, size: number = 0): ArcadeEmitter {
|
2013-08-08 03:35:13 +00:00
|
|
|
return <ArcadeEmitter> this._world.group.add(new ArcadeEmitter(this.game, x, y, size));
|
2013-05-31 17:21:32 +00:00
|
|
|
}
|
2013-05-22 23:01:58 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Create a new ScrollZone object with image key, position and size.
|
|
|
|
*
|
|
|
|
* @param key {string} Key to a image you wish this object to use.
|
|
|
|
* @param x {number} X position of this object.
|
|
|
|
* @param y {number} Y position of this object.
|
|
|
|
* @param width number} Width of this object.
|
|
|
|
* @param height {number} Height of this object.
|
|
|
|
* @returns {ScrollZone} The newly created scroll zone object.
|
|
|
|
*/
|
2013-08-08 10:34:33 +00:00
|
|
|
public scrollZone(key: string, x: number = 0, y: number = 0, width: number = 0, height: number = 0): ScrollZone {
|
2013-08-08 03:35:13 +00:00
|
|
|
return <ScrollZone> this._world.group.add(new ScrollZone(this.game, key, x, y, width, height));
|
2013-05-30 04:34:35 +00:00
|
|
|
}
|
2013-05-22 23:01:58 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Create a new Tilemap.
|
|
|
|
*
|
|
|
|
* @param key {string} Key for tileset image.
|
|
|
|
* @param mapData {string} Data of this tilemap.
|
|
|
|
* @param format {number} Format of map data. (Tilemap.FORMAT_CSV or Tilemap.FORMAT_TILED_JSON)
|
|
|
|
* @param [resizeWorld] {boolean} resize the world to make same as tilemap?
|
|
|
|
* @param [tileWidth] {number} width of each tile.
|
|
|
|
* @param [tileHeight] {number} height of each tile.
|
|
|
|
* @return {Tilemap} The newly created tilemap object.
|
|
|
|
*/
|
2013-08-08 10:34:33 +00:00
|
|
|
public tilemap(key: string, mapData: string, format: number, resizeWorld: boolean = true, tileWidth: number = 0, tileHeight: number = 0): Tilemap {
|
2013-08-08 03:35:13 +00:00
|
|
|
return <Tilemap> this._world.group.add(new Tilemap(this.game, key, mapData, format, resizeWorld, tileWidth, tileHeight));
|
2013-05-31 17:21:32 +00:00
|
|
|
}
|
2013-05-22 23:01:58 +00:00
|
|
|
|
|
|
|
/**
|
2013-07-13 11:38:59 +00:00
|
|
|
* Create a tween object for a specific object. The object can be any JavaScript object or Phaser object such as Sprite.
|
2013-05-22 23:01:58 +00:00
|
|
|
*
|
2013-07-13 11:38:59 +00:00
|
|
|
* @param obj {object} Object the tween will be run on.
|
|
|
|
* @param [localReference] {bool} If true the tween will be stored in the object.tween property so long as it exists. If already set it'll be over-written.
|
2013-05-22 23:01:58 +00:00
|
|
|
* @return {Phaser.Tween} The newly created tween object.
|
|
|
|
*/
|
2013-08-08 10:34:33 +00:00
|
|
|
public tween(obj, localReference:boolean = false): Tween {
|
2013-08-08 03:35:13 +00:00
|
|
|
return this.game.tweens.create(obj, localReference);
|
2013-05-22 23:01:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Add an existing Sprite to the current world.
|
|
|
|
* Note: This doesn't check or update the objects reference to Game. If that is wrong, all kinds of things will break.
|
|
|
|
*
|
|
|
|
* @param sprite The Sprite to add to the Game World
|
|
|
|
* @return {Phaser.Sprite} The Sprite object
|
|
|
|
*/
|
|
|
|
public existingSprite(sprite: Sprite): Sprite {
|
|
|
|
return this._world.group.add(sprite);
|
|
|
|
}
|
|
|
|
|
2013-07-28 23:43:10 +00:00
|
|
|
/**
|
|
|
|
* Add an existing Group to the current world.
|
|
|
|
* Note: This doesn't check or update the objects reference to Game. If that is wrong, all kinds of things will break.
|
|
|
|
*
|
|
|
|
* @param group The Group to add to the Game World
|
|
|
|
* @return {Phaser.Group} The Group object
|
|
|
|
*/
|
|
|
|
public existingGroup(group: Group): Group {
|
|
|
|
return this._world.group.add(group);
|
|
|
|
}
|
|
|
|
|
2013-07-13 11:38:59 +00:00
|
|
|
/**
|
|
|
|
* Add an existing Button to the current world.
|
|
|
|
* Note: This doesn't check or update the objects reference to Game. If that is wrong, all kinds of things will break.
|
|
|
|
*
|
|
|
|
* @param button The Button to add to the Game World
|
|
|
|
* @return {Phaser.Button} The Button object
|
|
|
|
*/
|
2013-08-06 02:14:48 +00:00
|
|
|
public existingButton(button: UI.Button): UI.Button {
|
2013-07-13 11:38:59 +00:00
|
|
|
return this._world.group.add(button);
|
|
|
|
}
|
|
|
|
|
2013-05-22 23:01:58 +00:00
|
|
|
/**
|
|
|
|
* Add an existing GeomSprite to the current world.
|
|
|
|
* Note: This doesn't check or update the objects reference to Game. If that is wrong, all kinds of things will break.
|
|
|
|
*
|
|
|
|
* @param sprite The GeomSprite to add to the Game World
|
|
|
|
* @return {Phaser.GeomSprite} The GeomSprite object
|
|
|
|
*/
|
2013-05-28 20:38:37 +00:00
|
|
|
//public existingGeomSprite(sprite: GeomSprite): GeomSprite {
|
|
|
|
// return this._world.group.add(sprite);
|
|
|
|
//}
|
2013-05-22 23:01:58 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Add an existing Emitter to the current world.
|
|
|
|
* Note: This doesn't check or update the objects reference to Game. If that is wrong, all kinds of things will break.
|
|
|
|
*
|
|
|
|
* @param emitter The Emitter to add to the Game World
|
|
|
|
* @return {Phaser.Emitter} The Emitter object
|
|
|
|
*/
|
2013-08-06 02:14:48 +00:00
|
|
|
public existingEmitter(emitter: ArcadeEmitter): ArcadeEmitter {
|
2013-05-31 17:21:32 +00:00
|
|
|
return this._world.group.add(emitter);
|
|
|
|
}
|
2013-05-22 23:01:58 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Add an existing ScrollZone to the current world.
|
|
|
|
* Note: This doesn't check or update the objects reference to Game. If that is wrong, all kinds of things will break.
|
|
|
|
*
|
|
|
|
* @param scrollZone The ScrollZone to add to the Game World
|
|
|
|
* @return {Phaser.ScrollZone} The ScrollZone object
|
|
|
|
*/
|
2013-05-30 04:34:35 +00:00
|
|
|
public existingScrollZone(scrollZone: ScrollZone): ScrollZone {
|
|
|
|
return this._world.group.add(scrollZone);
|
|
|
|
}
|
2013-05-22 23:01:58 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Add an existing Tilemap to the current world.
|
|
|
|
* Note: This doesn't check or update the objects reference to Game. If that is wrong, all kinds of things will break.
|
|
|
|
*
|
|
|
|
* @param tilemap The Tilemap to add to the Game World
|
|
|
|
* @return {Phaser.Tilemap} The Tilemap object
|
|
|
|
*/
|
2013-05-31 17:21:32 +00:00
|
|
|
public existingTilemap(tilemap: Tilemap): Tilemap {
|
|
|
|
return this._world.group.add(tilemap);
|
|
|
|
}
|
2013-05-22 23:01:58 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Add an existing Tween to the current world.
|
|
|
|
* Note: This doesn't check or update the objects reference to Game. If that is wrong, all kinds of things will break.
|
|
|
|
*
|
|
|
|
* @param tween The Tween to add to the Game World
|
|
|
|
* @return {Phaser.Tween} The Tween object
|
|
|
|
*/
|
|
|
|
public existingTween(tween: Tween): Tween {
|
2013-08-08 03:35:13 +00:00
|
|
|
return this.game.tweens.add(tween);
|
2013-05-22 23:01:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|