// ============================================================================== // Copyright (C) 2019 - Philip Paquette, Steven Bocco // // This program is free software: you can redistribute it and/or modify it under // the terms of the GNU Affero General Public License as published by the Free // Software Foundation, either version 3 of the License, or (at your option) any // later version. // // This program is distributed in the hope that it will be useful, but WITHOUT // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS // FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more // details. // // You should have received a copy of the GNU Affero General Public License along // with this program. If not, see . // ============================================================================== import React from "react"; import {JoinForm} from "../forms/join_form"; import {STRINGS} from "../../diplomacy/utils/strings"; import {ContentGame} from "../pages/content_game"; import {Button} from "../components/button"; import {DeleteButton} from "../components/delete_button"; export class InlineGameView { constructor(page, gameData, maps) { this.page = page; this.game = gameData; this.maps = maps; this.get = this.get.bind(this); this.joinGame = this.joinGame.bind(this); this.showGame = this.showGame.bind(this); } joinGame(formData) { const form = { power_name: formData[`power_name_${this.game.game_id}`], registration_password: formData[`registration_password_${this.game.game_id}`] }; if (!form.power_name) form.power_name = null; if (!form.registration_password) form.registration_password = null; form.game_id = this.game.game_id; this.page.channel.joinGame(form) .then((networkGame) => { this.game = networkGame.local; this.page.addToMyGames(this.game); return networkGame.getAllPossibleOrders(); }) .then(allPossibleOrders => { this.game.setPossibleOrders(allPossibleOrders); this.page.load( `game: ${this.game.game_id}`, , {success: 'Game joined.'} ); }) .catch((error) => { this.page.error('Error when joining game ' + this.game.game_id + ': ' + error); }); } showGame() { this.page.load(`game: ${this.game.game_id}`, ); } getJoinUI() { if (this.game.role) { // Game already joined. return (
); } else { // Game not yet joined. return ; } } getActionButtons() { const buttons = []; // Button to add/remove game from "My games" list. if (this.page.hasMyGame(this.game.game_id)) { if (!this.game.client) { // Game in My Games and not joined. We can remove it. buttons.push(