mirror of
https://github.com/wassname/phaser.git
synced 2026-07-14 01:10:16 +08:00
Implemented my own LinkedList class to make the new Input Handler easier to work with. And also just generally useful to have too.
This commit is contained in:
@@ -205,6 +205,9 @@ Phaser.Group.prototype = {
|
||||
* @param {string} index The <code>string</code> name of the member variable you want to sort on. Default value is "z".
|
||||
* @param {number} order A <code>Group</code> constant that defines the sort order. Possible values are <code>Group.ASCENDING</code> and <code>Group.DESCENDING</code>. Default value is <code>Group.ASCENDING</code>.
|
||||
*/
|
||||
|
||||
// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.c
|
||||
|
||||
sort: function (index, order) {
|
||||
// if (typeof index === "undefined") { index = 'z'; }
|
||||
// if (typeof order === "undefined") { order = Phaser.Types.SORT_ASCENDING; }
|
||||
|
||||
@@ -0,0 +1,179 @@
|
||||
Phaser.LinkedList = function () {
|
||||
};
|
||||
|
||||
Phaser.LinkedList.prototype = {
|
||||
|
||||
_iNext: null,
|
||||
_iPrev: null,
|
||||
first: null,
|
||||
last: null,
|
||||
sprite: { name: 'HD' },
|
||||
|
||||
add: function (child) {
|
||||
|
||||
// If the list is empty
|
||||
if (this.first == null && this.last == null)
|
||||
{
|
||||
this.first = child;
|
||||
this.last = child;
|
||||
this._iNext = child;
|
||||
child._iPrev = this;
|
||||
return;
|
||||
}
|
||||
|
||||
// Get gets appended to the end of the list, regardless of anything, and it won't have any children of its own (non-nested list)
|
||||
this.last._iNext = child;
|
||||
|
||||
child._iPrev = this.last;
|
||||
|
||||
this.last = child;
|
||||
|
||||
},
|
||||
|
||||
remove: function (child) {
|
||||
|
||||
// If the list is empty
|
||||
if (this.first == null && this.last == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// The only node?
|
||||
if (this.first == child && this.last == child)
|
||||
{
|
||||
this.first = null;
|
||||
this.last = null;
|
||||
this._iNext = null;
|
||||
child._iNext = null;
|
||||
child._iPrev = null;
|
||||
return;
|
||||
}
|
||||
|
||||
var childPrev = child._iPrev;
|
||||
|
||||
// Tail node?
|
||||
if (child._iNext)
|
||||
{
|
||||
// Has another node after it?
|
||||
child._iNext._iPrev = child._iPrev;
|
||||
}
|
||||
|
||||
childPrev._iNext = child._iNext;
|
||||
|
||||
},
|
||||
|
||||
dump: function () {
|
||||
|
||||
console.log("\nNode\t\t|\t\tNext\t\t|\t\tPrev\t\t|\t\tFirst\t\t|\t\tLast");
|
||||
console.log("\t\t\t|\t\t\t\t\t|\t\t\t\t\t|\t\t\t\t\t|");
|
||||
|
||||
var nameNext = '-';
|
||||
var namePrev = '-';
|
||||
var nameFirst = '-';
|
||||
var nameLast = '-';
|
||||
|
||||
if (this._iNext)
|
||||
{
|
||||
nameNext = this._iNext.sprite.name;
|
||||
}
|
||||
|
||||
if (this._iPrev)
|
||||
{
|
||||
namePrev = this._iPrev.sprite.name;
|
||||
}
|
||||
|
||||
if (this.first)
|
||||
{
|
||||
nameFirst = this.first.sprite.name;
|
||||
}
|
||||
|
||||
if (this.last)
|
||||
{
|
||||
nameLast = this.last.sprite.name;
|
||||
}
|
||||
|
||||
if (typeof nameNext === 'undefined')
|
||||
{
|
||||
nameNext = '-';
|
||||
}
|
||||
|
||||
if (typeof namePrev === 'undefined')
|
||||
{
|
||||
namePrev = '-';
|
||||
}
|
||||
|
||||
if (typeof nameFirst === 'undefined')
|
||||
{
|
||||
nameFirst = '-';
|
||||
}
|
||||
|
||||
if (typeof nameLast === 'undefined')
|
||||
{
|
||||
nameLast = '-';
|
||||
}
|
||||
|
||||
console.log('HD' + '\t\t\t|\t\t' + nameNext + '\t\t\t|\t\t' + namePrev + '\t\t\t|\t\t' + nameFirst + '\t\t\t|\t\t' + nameLast);
|
||||
|
||||
var entity = this;
|
||||
|
||||
var testObject = entity.last._iNext;
|
||||
entity = entity.first;
|
||||
|
||||
do
|
||||
{
|
||||
var name = entity.sprite.name || '*';
|
||||
var nameNext = '-';
|
||||
var namePrev = '-';
|
||||
var nameFirst = '-';
|
||||
var nameLast = '-';
|
||||
|
||||
if (entity._iNext)
|
||||
{
|
||||
nameNext = entity._iNext.sprite.name;
|
||||
}
|
||||
|
||||
if (entity._iPrev)
|
||||
{
|
||||
namePrev = entity._iPrev.sprite.name;
|
||||
}
|
||||
|
||||
if (entity.first)
|
||||
{
|
||||
nameFirst = entity.first.sprite.name;
|
||||
}
|
||||
|
||||
if (entity.last)
|
||||
{
|
||||
nameLast = entity.last.sprite.name;
|
||||
}
|
||||
|
||||
if (typeof nameNext === 'undefined')
|
||||
{
|
||||
nameNext = '-';
|
||||
}
|
||||
|
||||
if (typeof namePrev === 'undefined')
|
||||
{
|
||||
namePrev = '-';
|
||||
}
|
||||
|
||||
if (typeof nameFirst === 'undefined')
|
||||
{
|
||||
nameFirst = '-';
|
||||
}
|
||||
|
||||
if (typeof nameLast === 'undefined')
|
||||
{
|
||||
nameLast = '-';
|
||||
}
|
||||
|
||||
console.log(name + '\t\t\t|\t\t' + nameNext + '\t\t\t|\t\t' + namePrev + '\t\t\t|\t\t' + nameFirst + '\t\t\t|\t\t' + nameLast);
|
||||
|
||||
entity = entity._iNext;
|
||||
|
||||
}
|
||||
while(entity != testObject)
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
Reference in New Issue
Block a user