import { LitElement, html, css } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { EventBus } from '../../../core/EventBus'; import { PauseGameEvent } from '../../Transport'; import { GameType } from '../../../core/game/Game'; import { GameView } from '../../../core/game/GameView'; import { Layer } from './Layer'; import { ThreadMemberFlagsBitField } from 'discord.js'; import { GameUpdateType } from '../../../core/game/GameUpdates'; @customElement('options-menu') export class OptionsMenu extends LitElement implements Layer { public game: GameView; public eventBus: EventBus; @state() private showPauseButton: boolean = true; @state() private isPaused: boolean = false; @state() private timer: number = 0; private isVisible = false; private hasWinner = false private onExitButtonClick() { window.location.reload(); } private onPauseButtonClick() { this.isPaused = !this.isPaused; this.eventBus.emit(new PauseGameEvent(this.isPaused)); } init() { console.log('init called from OptionsMenu') this.showPauseButton = this.game.config().gameConfig().gameType == GameType.Singleplayer; this.isVisible = true; this.requestUpdate(); } tick() { this.hasWinner = this.hasWinner || this.game.updatesSinceLastTick()[GameUpdateType.WinUpdate].length > 0 if (this.game.inSpawnPhase()) { this.timer = 0 } else if (!this.hasWinner && this.game.ticks() % 10 == 0) { this.timer++ } this.isVisible = true; this.requestUpdate(); } render() { if (!this.isVisible) { return html``; } return html`