diff --git a/src/components/ScoreBoard.component.js b/src/components/ScoreBoard.component.js
index 4532847..b584179 100644
--- a/src/components/ScoreBoard.component.js
+++ b/src/components/ScoreBoard.component.js
@@ -15,14 +15,14 @@ const template = `
progress |
- player_1 |
+ Player 1 |
{{player_one_score}} |
- {{player_one_progress}} |
+ {{player_one_progress * 100}}% |
- player_2 |
- {{player_one_score}} |
- {{player_two_progress}} |
+ Player 2 |
+ {{player_two_score}} |
+ {{player_two_progress * 100}}% |
diff --git a/src/components/TopLevel.component.js b/src/components/TopLevel.component.js
index 74be3c2..6b91368 100644
--- a/src/components/TopLevel.component.js
+++ b/src/components/TopLevel.component.js
@@ -170,12 +170,14 @@ export default class TopLevelComponent extends Component {
* @param {number} column_index
*/
on_missile_fired([row_index, column_index]) {
- game_service.attempt_missile_fire([row_index, column_index])
+ if ( this.player_is_firing_missiles ) {
+ game_service.attempt_missile_fire([row_index, column_index])
- // Give the user time to see whether they hit or not
- setTimeout(() => {
- game_service.advance_game_state()
- }, 5000)
+ // Give the user time to see whether they hit or not
+ setTimeout(() => {
+ game_service.advance_game_state()
+ }, 5000)
+ }
}
/**
diff --git a/src/services/GameState.service.js b/src/services/GameState.service.js
index 5b3bfa5..6e94f99 100644
--- a/src/services/GameState.service.js
+++ b/src/services/GameState.service.js
@@ -214,21 +214,16 @@ export class GameStateService {
* @private
*/
get_player_score(player) {
- let i = 1;
- let j = 1;
- let score = 0;
- for(i; i<=8; i++)
- {
- for(j; j<=8; j++)
- {
- let cell = this.player_x_game_board[this.get_other_player(player)][i][j];
- if(cell.render === GridCellState.Damaged || cell.render === GridCellState.Sunk )
- {
- score++;
+ let score = 0
+ this.player_x_game_board[player].some(row => {
+ row.some(cell => {
+ if ( cell.render === GridCellState.Damaged || cell.render === GridCellState.Sunk ) {
+ score += 1
}
- }
- }
- return(score);
+ })
+ })
+
+ return score
}
/**
@@ -238,21 +233,16 @@ export class GameStateService {
* @private
*/
get_boat_count(player){
- let i = 1;
- let j = 1;
- let boat_count = 0;
- for(i; i<=8; i++)
- {
- for(j; j<=8; j++)
- {
- let cell = this.player_x_game_board[this.get_other_player(player)][i][j];
- if(cell.render === GridCellState.Damaged || cell.render === GridCellState.Sunk || cell.render === GridCellState.Ship )
- {
- boat_count++;
+ let boat_count = 0
+ this.player_x_game_board[player].some(row => {
+ row.some(cell => {
+ if ( isShipCell(cell.render) ) {
+ boat_count += 1
}
- }
- }
- return(boat_count);
+ })
+ })
+
+ return boat_count
}
/**
@@ -261,7 +251,12 @@ export class GameStateService {
* @private
*/
get_progress(player){
- return(this.get_player_score(player) / this.get_boat_count(player))
+ const boat_count = this.get_boat_count(player)
+ if ( boat_count !== 0 ) {
+ return (this.get_player_score(player) / boat_count).toFixed(2)
+ } else {
+ return 0
+ }
}
/**
@@ -359,6 +354,7 @@ export class GameStateService {
if(winner) {
this.current_state = GameState.PlayerVictory;
this.current_player = winner;
+ this.current_opponent = this.get_other_player(winner);
}
this.current_turn_had_missile_attempt = false