@@ -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 {
0 commit comments