@@ -32,10 +32,14 @@ let Queue = (function () {
3232 items . push ( item ) ;
3333 }
3434
35+ clearFromMap ( route ) {
36+ $ ( `#td${ route . from . x } -${ route . from . y } ` ) . removeClass ( `queue_${ dirName ( route ) } ` )
37+ }
38+
3539 pop ( ) {
36- let item = items . shift ( )
40+ let item = items . shift ( ) ;
3741 if ( this . lastItem ) {
38- $ ( `#td ${ this . lastItem . from . x } - ${ this . lastItem . from . y } ` ) . removeClass ( `queue_ ${ dirName ( this . lastItem ) } ` )
42+ this . clearFromMap ( this . lastItem ) ;
3943 }
4044 this . lastItem = item ;
4145 return item ;
@@ -44,7 +48,7 @@ let Queue = (function () {
4448 pop_back ( ) {
4549 let item = items . pop ( )
4650 if ( item ) {
47- $ ( `#td ${ item . from . x } - ${ item . from . y } ` ) . removeClass ( `queue_ ${ dirName ( item ) } ` )
51+ this . clearFromMap ( item ) ;
4852 return item ;
4953 }
5054 }
@@ -67,11 +71,15 @@ let Queue = (function () {
6771
6872 clear ( ) {
6973 items . forEach ( item => {
70- $ ( `#td ${ item . from . x } - ${ item . from . y } ` ) . removeClass ( `queue_ ${ dirName ( item ) } ` )
74+ this . clearFromMap ( item )
7175 } )
7276 items . length = 0
77+ this . clearLastItem ( )
78+ }
79+
80+ clearLastItem ( ) {
7381 if ( this . lastItem )
74- $ ( `#td ${ this . lastItem . from . x } - ${ this . lastItem . from . y } ` ) . removeClass ( `queue_ ${ dirName ( this . lastItem ) } ` )
82+ this . clearFromMap ( this . lastItem )
7583 }
7684
7785 print ( ) { // Print on map
@@ -584,7 +592,7 @@ function gameJoin(username) {
584592 </table>
585593 </div>
586594 </div>` )
587- window . turn = 1
595+ window . gameTurn = 1
588596 window . queue = new Queue ( )
589597 // let appContainer = document.getElementById('reqAppContainer')
590598 $ ( document ) . bind ( 'keydown' , ( event ) => {
@@ -667,8 +675,17 @@ function gameJoin(username) {
667675 } )
668676 } )
669677
670- socket . on ( 'attack_failure' , ( ) => {
671- window . queue . clear ( )
678+ socket . on ( 'attack_failure' , ( from , to ) => {
679+ window . queue . clearLastItem ( )
680+ while ( ! window . queue . isEmpty ( ) ) {
681+ let point = window . queue . front ( ) . from
682+ if ( point . x === to . x && point . y === to . y ) {
683+ window . queue . pop ( )
684+ to = point
685+ } else {
686+ break ;
687+ }
688+ }
672689 } )
673690
674691 socket . on ( 'captured' , ( player1 , player2 ) => {
@@ -693,8 +710,8 @@ function gameJoin(username) {
693710 window . queue . clear ( )
694711 }
695712 gameMap = JSON . parse ( gameMap ) ;
696- if ( turn % 2 === 0 ) ++ window . turn
697- $ ( '.reqtitle' ) . html ( `<h3> Turn ${ window . turn } - Gennia</h3>` )
713+ if ( turn % 2 === 0 ) ++ window . gameTurn
714+ $ ( '.reqtitle' ) . html ( `<h3> Turn ${ window . gameTurn } - Gennia</h3>` )
698715 for ( var i = 0 ; i < width ; ++ i ) {
699716 for ( var j = 0 ; j < height ; ++ j ) {
700717 var $cell = $ ( `#td${ i } -${ j } ` ) ;
0 commit comments