import {Component} from '../../lib/vues6.js' import {GameState, ShipType} from '../module/util.js' import game_service from '../services/GameState.service.js' const template = `
Choose number of ships:
It is now {{ current_player_display }}'s turn!
Opposing fleet
Your fleet
` export default class TopLevelComponent extends Component { static get selector() { return 'app-top-level' } static get template() { return template } static get props() { return [] } /** * Make the game state accessible w/in the template. * @type {object} */ GameState = GameState /** * The current game state. * @type {GameState|undefined} */ current_state = undefined /** * The opponent's grid data. * @type {object[][]} */ opponent_rows = [] /** * The player's grid data. * @type {object[][]} */ player_rows = [] /** * The current instructions to be shown to the user. * @type {string} */ instructions = '' /** * True if the player should be able to place their ships. * @type {boolean} */ player_is_placing_ships = false /** * If in placement mode, the ships that are yet to be placed. * @type {ShipType[]} */ ships_to_place = [] current_player_display = '' current_opponent_display = '' async vue_on_create() { console.log('game service', game_service) this.current_state = game_service.get_game_state() // Called every time the game state is updated game_service.on_state_change((next_state, was_refresh) => { this.current_state = next_state this.opponent_rows = game_service.get_current_opponent_state() this.player_rows = game_service.get_current_player_state() this.current_player_display = game_service.get_player_display(game_service.get_current_player()) this.current_opponent_display = game_service.get_player_display(game_service.get_current_opponent()) this.player_is_placing_ships = next_state === GameState.PlayerSetup if ( !was_refresh && this.player_is_placing_ships ) { this.ships_to_place = game_service.get_possible_boats() } // TODO add code for instructions }) } /** * Set the number of boats. * @param {number} n */ ship(n) { game_service.set_n_boats(n) game_service.advance_game_state() } /** * Called when the current user has placed a ship. */ on_ship_placed() { this.ships_to_place.shift() if ( this.ships_to_place.length < 1 ) { // We've placed all the ships. Let's move on. game_service.advance_game_state() } } confirm_player_change() { game_service.advance_game_state() } }