stellar-lines/src/app/service/game.service.ts
Bastian Wagner 3dd86fa224 img
2025-04-26 22:31:08 +02:00

54 lines
1.2 KiB
TypeScript

import { EventEmitter, Injectable } from "@angular/core";
import { Planet } from "../model/planet.model";
import { Ship, ShipConfig } from "../model/ships/ship.model";
@Injectable({
providedIn: 'root',
})
export class GameService {
public showPlanetInfo: Planet | undefined;
public showShipInfo: Ship | undefined;
public showBuyShip = false;
public ships: Ship[] = [];
public planets: Planet[] = [];
showTutorial = true;
public money = 12500;
onShipCreate: EventEmitter<Ship> = new EventEmitter();
onShipDestroy: EventEmitter<Ship> = new EventEmitter();
constructor() {}
showDialog(planet: Planet) {
this.showPlanetInfo = planet;
}
showShip(ship: Ship) {
this.showShipInfo = ship;
}
get canDrag(): boolean {
return this.showShipInfo == undefined && this.showPlanetInfo == undefined;
}
createShip(config: ShipConfig) {
if (this.money < config.buyCost) {
return;
}
this.money -= config.buyCost;
const ship = new Ship(this, config);
this.ships.push(ship);
this.onShipCreate.emit(ship);
}
sellShip(ship: Ship) {
this.ships = this.ships.filter(s => s != ship);
ship.sell();
this.onShipDestroy.emit(ship);
this.money += ship.buyCost;
}
}