Skip to content

Commit 87d52bd

Browse files
committed
Linked List node swap
1 parent 912d6e4 commit 87d52bd

2 files changed

Lines changed: 49 additions & 41 deletions

File tree

examples/bringToTop.php

Lines changed: 48 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ function create() {
5656
}
5757

5858
function runChange () {
59-
changeOrder(e, f);
59+
changeOrder(a, c);
6060
}
6161

6262
function changeOrder (node1, node2) {
@@ -71,28 +71,56 @@ function changeOrder (node1, node2) {
7171
// Cache the node values
7272
var node1Prev = node1._iPrev;
7373
var node1Next = node1._iNext;
74+
var node1First = node1.first;
75+
var node1Last = node1.last;
7476
var node2Prev = node2._iPrev;
7577
var node2Next = node2._iNext;
78+
var node2First = node2.first;
79+
var node2Last = node2.last;
7680

7781
// Now deep scan search and replace
78-
var displayObject = this.game.world._stage;
82+
var currentNode = game.world._stage;
7983

80-
var testObject = displayObject.last._iNext;
81-
displayObject = displayObject.first;
84+
var endNode = currentNode.last._iNext;
85+
currentNode = currentNode.first;
8286

8387
do
8488
{
89+
console.log('Checking', currentNode.name, currentNode.first.name, currentNode.last.name);
8590

86-
displayObject = displayObject._iNext;
91+
if (currentNode !== node1 && currentNode !== node2)
92+
{
93+
if (currentNode.first === node1)
94+
{
95+
console.log('F1');
96+
currentNode.first = node2;
97+
}
98+
else if (currentNode.first === node2)
99+
{
100+
console.log('F2');
101+
currentNode.first = node1;
102+
}
87103

88-
}
89-
while(displayObject != testObject)
104+
if (currentNode.last === node1)
105+
{
106+
console.log('L1');
107+
currentNode.last = node2;
108+
}
109+
else if (currentNode.last === node2)
110+
{
111+
console.log('L2');
112+
currentNode.last = node1;
113+
}
114+
}
90115

116+
currentNode = currentNode._iNext;
117+
}
118+
while (currentNode != endNode)
91119

92120
// Check for neighbours (cater for any order parameters)
93121
if (node1._iNext == node2)
94122
{
95-
console.log('A-B neighbour swap. Parent is', node1.parent.name, 'tail is', tail.name);
123+
console.log('A-B neighbour swap');
96124

97125
// Starting
98126
// Node 1 (A) Node 2 (B) X C
@@ -104,42 +132,21 @@ function changeOrder (node1, node2) {
104132
// Next: C Next: A Next: B Next: D
105133
// Prev: B Prev: X Prev: - Prev: A
106134

107-
// Was node2 a tail node?
108-
/*
109-
if (node2 === tail)
110-
{
111-
node2._iNext = node1;
112-
node2._iPrev = node1Prev;
113-
node1._iNext = null;
114-
node1._iPrev = node2;
115-
116-
// Notify the head and tail
117-
if (node1Prev)
118-
{
119-
node1Prev._iNext = node2;
120-
}
135+
node1._iNext = node2Next;
136+
node1._iPrev = node2;
137+
node2._iNext = node1;
138+
node2._iPrev = node1Prev;
121139

122-
node1.parent.last = node1;
123-
}
124-
else
140+
// Notify the head and tail
141+
if (node1Prev)
125142
{
126-
*/
127-
node1._iNext = node2Next;
128-
node1._iPrev = node2;
129-
node2._iNext = node1;
130-
node2._iPrev = node1Prev;
131-
132-
// Notify the head and tail
133-
if (node1Prev)
134-
{
135-
node1Prev._iNext = node2;
136-
}
143+
node1Prev._iNext = node2;
144+
}
137145

138-
if (node2Next)
139-
{
140-
node2Next._iPrev = node1;
141-
}
142-
// }
146+
if (node2Next)
147+
{
148+
node2Next._iPrev = node1;
149+
}
143150
}
144151
else if (node2._iNext == node1)
145152
{

src/core/World.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Phaser.World = function (game) {
55
this._stage = new PIXI.Stage(0x000000);
66

77
this._container = new PIXI.DisplayObjectContainer();
8+
this._container.name = 'R';
89

910
this._stage.addChild(this._container);
1011

0 commit comments

Comments
 (0)