mirror of
https://github.com/photonstorm/phaser
synced 2024-11-24 13:43:26 +00:00
Port of ImageCollection from v2
This commit is contained in:
parent
ce28eaaad8
commit
fa8178f47b
3 changed files with 128 additions and 0 deletions
126
v3/src/gameobjects/tilemap/ImageCollection.js
Normal file
126
v3/src/gameobjects/tilemap/ImageCollection.js
Normal file
|
@ -0,0 +1,126 @@
|
|||
/**
|
||||
* An Image Collection is a special tileset containing mulitple images, with no slicing into each image.
|
||||
*
|
||||
* Image Collections are normally created automatically when Tiled data is loaded.
|
||||
*
|
||||
* @class Phaser.ImageCollection
|
||||
* @constructor
|
||||
* @param {string} name - The name of the image collection in the map data.
|
||||
* @param {integer} firstgid - The first image index this image collection contains.
|
||||
* @param {integer} [width=32] - Width of widest image (in pixels).
|
||||
* @param {integer} [height=32] - Height of tallest image (in pixels).
|
||||
* @param {integer} [margin=0] - The margin around all images in the collection (in pixels).
|
||||
* @param {integer} [spacing=0] - The spacing between each image in the collection (in pixels).
|
||||
* @param {object} [properties={}] - Custom Image Collection properties.
|
||||
*/
|
||||
|
||||
var Class = require('../../utils/Class');
|
||||
|
||||
var ImageCollection = new Class({
|
||||
|
||||
initialize:
|
||||
|
||||
function ImageCollection (name, firstgid, width, height, margin, spacing, properties)
|
||||
{
|
||||
if (width === undefined || width <= 0) { width = 32; }
|
||||
if (height === undefined || height <= 0) { height = 32; }
|
||||
if (margin === undefined) { margin = 0; }
|
||||
if (spacing === undefined) { spacing = 0; }
|
||||
|
||||
/**
|
||||
* The name of the Image Collection.
|
||||
* @property {string} name
|
||||
*/
|
||||
this.name = name;
|
||||
|
||||
/**
|
||||
* The Tiled firstgid value.
|
||||
* This is the starting index of the first image index this Image Collection contains.
|
||||
* @property {integer} firstgid
|
||||
*/
|
||||
this.firstgid = firstgid | 0;
|
||||
|
||||
/**
|
||||
* The width of the widest image (in pixels).
|
||||
* @property {integer} imageWidth
|
||||
* @readonly
|
||||
*/
|
||||
this.imageWidth = width | 0;
|
||||
|
||||
/**
|
||||
* The height of the tallest image (in pixels).
|
||||
* @property {integer} imageHeight
|
||||
* @readonly
|
||||
*/
|
||||
this.imageHeight = height | 0;
|
||||
|
||||
/**
|
||||
* The margin around the images in the collection (in pixels).
|
||||
* Use `setSpacing` to change.
|
||||
* @property {integer} imageMarge
|
||||
* @readonly
|
||||
*/
|
||||
// Modified internally
|
||||
this.imageMargin = margin | 0;
|
||||
|
||||
/**
|
||||
* The spacing between each image in the collection (in pixels).
|
||||
* Use `setSpacing` to change.
|
||||
* @property {integer} imageSpacing
|
||||
* @readonly
|
||||
*/
|
||||
this.imageSpacing = spacing | 0;
|
||||
|
||||
/**
|
||||
* Image Collection-specific properties that are typically defined in the Tiled editor.
|
||||
* @property {object} properties
|
||||
*/
|
||||
this.properties = properties || {};
|
||||
|
||||
/**
|
||||
* The cached images that are a part of this collection.
|
||||
* @property {array} images
|
||||
* @readonly
|
||||
*/
|
||||
// Modified internally
|
||||
this.images = [];
|
||||
|
||||
/**
|
||||
* The total number of images in the image collection.
|
||||
* @property {integer} total
|
||||
* @readonly
|
||||
*/
|
||||
// Modified internally
|
||||
this.total = 0;
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns true if and only if this image collection contains the given image index.
|
||||
*
|
||||
* @method Phaser.ImageCollection#containsImageIndex
|
||||
* @param {integer} imageIndex - The image index to search for.
|
||||
* @return {boolean} True if this Image Collection contains the given index.
|
||||
*/
|
||||
containsImageIndex: function (imageIndex)
|
||||
{
|
||||
return (
|
||||
imageIndex >= this.firstgid && imageIndex < (this.firstgid + this.total)
|
||||
);
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* Add an image to this Image Collection.
|
||||
*
|
||||
* @method Phaser.ImageCollection#addImage
|
||||
* @param {integer} gid - The gid of the image in the Image Collection.
|
||||
* @param {string} image - The the key of the image in the Image Collection and in the cache.
|
||||
*/
|
||||
addImage: function (gid, image)
|
||||
{
|
||||
this.images.push({ gid: gid, image: image });
|
||||
this.total++;
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = ImageCollection;
|
|
@ -28,6 +28,7 @@ var Tilemap = new Class({
|
|||
this.properties = mapData.properties;
|
||||
this.widthInPixels = mapData.widthInPixels;
|
||||
this.heightInPixels = mapData.heightInPixels;
|
||||
this.imageCollections = mapData.imageCollections;
|
||||
this.layers = mapData.layers;
|
||||
this.tilesets = mapData.tilesets;
|
||||
this.tiles = mapData.tiles;
|
||||
|
|
|
@ -25,6 +25,7 @@ var MapData = new Class({
|
|||
this.objects = GetFastValue(config, 'objects', {});
|
||||
this.collision = GetFastValue(config, 'collision', {});
|
||||
this.tilesets = GetFastValue(config, 'tilesets', []);
|
||||
this.imageCollections = GetFastValue(config, 'imageCollections', []);
|
||||
this.tiles = GetFastValue(config, 'tiles', []);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue