@@ -28,6 +28,7 @@ class Ship {
2828 isVertical = true ;
2929 hits = 0 ;
3030 element : HTMLElement ;
31+ cells : Cell [ ] ;
3132
3233 constructor ( public size : number ) {
3334 this . element = $ ( "<div class='ship'></div>" ) [ 0 ] ;
@@ -185,6 +186,13 @@ class Board {
185186 }
186187 }
187188
189+ markShipBombed ( ship : Ship ) {
190+ for ( var i = 0 ; i < ship . size ; i ++ ) {
191+ $ ( ship . cells [ i ] . element ) . removeClass ( "cellHit" ) ;
192+ $ ( ship . cells [ i ] . element ) . addClass ( "cellShipHit" ) ;
193+ }
194+ }
195+
188196 bombCell ( cellElem : HTMLElement ) {
189197 var cellPos = Cell . parseCellLocation ( $ ( cellElem ) . data ( "cellLocation" ) ) ;
190198 var cell = this . cells [ cellPos . row ] [ cellPos . column ] ;
@@ -199,6 +207,7 @@ class Board {
199207 var ship = this . ships [ cell . shipIndex ] ;
200208 ship . hits ++ ;
201209 if ( ship . isSunk ( ) ) {
210+ this . markShipBombed ( ship ) ;
202211 if ( this . allShipsSunk ( ) ) {
203212 this . onEvent . call ( this , 'allSunk' ) ;
204213 } else {
@@ -266,14 +275,16 @@ class Board {
266275 var ship = this . ships [ index ]
267276 ship . hits = 0 ;
268277 var cells = ship . getCellsCovered ( ) ;
278+ ship . cells = [ ]
269279 for ( var cell = 0 ; cell < cells . length ; cell ++ ) {
270280 var cellPos = Cell . parseCellLocation ( cells [ cell ] ) ;
271281 var targetCell = this . cells [ cellPos . row ] [ cellPos . column ] ;
272282 targetCell . shipIndex = index ;
283+ ship . cells . push ( targetCell ) ;
273284 }
274285 }
275286
276- $ ( this . element ) . children ( ".cell" ) . removeClass ( "cellHit cellMiss" ) . addClass ( "notBombed" ) ;
287+ $ ( this . element ) . children ( ".cell" ) . removeClass ( "cellHit cellMiss cellShipHit " ) . addClass ( "notBombed" ) ;
277288 }
278289
279290 private allShipsSunk ( ) {
0 commit comments