phaser/wip/container/Container.js
2018-01-26 05:25:30 +00:00

222 lines
3.9 KiB
JavaScript

var Class = require('../../utils/Class');
var Components = require('../components');
var DataProxy = require('../components/DataProxy');
var TransformMatrix = require('../components/TransformMatrix');
var Container = new Class({
// Mixins: [
// Components.Visible,
// SpriteRender
// ],
initialize:
function Container (scene, x, y)
{
this.scene = scene;
this.type = 'Container';
this.name = '';
// Likely swap for a ProcessQueue to make it iteration safe
this.list = [];
this.active = true;
this.data = new DataProxy(scene, this);
this._depth = 0;
this._transform = new TransformMatrix();
this._x = x;
this._y = y;
this._scaleX = 1;
this._scaleY = 1;
this._rotation = 0;
this._visible = true;
},
x: {
get: function ()
{
return this._x;
},
set: function (value)
{
this._x = value;
for (var i = 0; i < this.list.length; i++)
{
// this.list[i].depth = value;
}
}
},
y: {
get: function ()
{
return this._y;
},
set: function (value)
{
this._y = value;
for (var i = 0; i < this.list.length; i++)
{
// this.list[i].depth = value;
}
}
},
depth: {
get: function ()
{
return this._depth;
},
set: function (value)
{
this._depth = value;
for (var i = 0; i < this.list.length; i++)
{
this.list[i].depth = value;
}
}
},
setDepth: function (value)
{
if (value === undefined) { value = 0; }
this.depth = value;
return this;
},
visible: {
get: function ()
{
return this._visible;
},
set: function (value)
{
if (value)
{
this._visible = true;
}
else
{
this._visible = false;
}
for (var i = 0; i < this.list.length; i++)
{
this.list[i].visible = value;
}
}
},
setVisible: function (value)
{
this.visible = value;
return this;
},
add: function (child)
{
// Don't allow containers to be added
// Is child already in this container?
if (this.getIndex(child) === -1 && child.parent !== this)
{
// No, good ...
this.scene.sys.updateList.remove(child);
if (child.parent)
{
child.parent.remove(child);
}
child.parent = this;
this.list.push(child);
// this.scene.sys.sortChildrenFlag = true;
}
return child;
},
remove: function (child)
{
var index = this.list.indexOf(child);
if (index !== -1)
{
// Not iteration safe - use ProcessQueue instead?
this.list.splice(index, 1);
child.parent = null;
// this.scene.sys.sortChildrenFlag = true;
}
return child;
},
preUpdate: function (time, delta)
{
// iterate children and call preUpdate on them, as they won't be part of the Scenes updateList
},
setActive: function (value)
{
this.active = value;
return this;
},
setName: function (value)
{
this.name = value;
return this;
},
setData: function (key, value)
{
this.data.set(key, value);
return this;
},
getData: function (key)
{
return this.data.get(key);
},
destroy: function ()
{
}
});
module.exports = Container;