Server/src/main/java/de/towerdefence/server/game/GameSession.java

54 lines
1.8 KiB
Java
Raw Normal View History

2025-03-12 15:10:57 +01:00
package de.towerdefence.server.game;
2025-03-12 15:10:57 +01:00
import de.towerdefence.server.game.callbacks.PlayerMoneyCallback;
import de.towerdefence.server.game.exeptions.InvalidPlacementException;
import de.towerdefence.server.game.exeptions.InvalidPlacementReason;
import de.towerdefence.server.player.Player;
import lombok.Getter;
public class GameSession {
2025-03-13 12:08:07 +01:00
final static int START_HITPOINTS = 100;
final static int START_MONEY = 50;
final static int MAP_SIZE_X = 10;
final static int MAP_SIZE_Y = 20;
private final Tower[][] towers = new Tower[MAP_SIZE_X][MAP_SIZE_Y];
private final Player player;
@Getter
private int money;
2025-03-13 12:08:07 +01:00
@Getter
private int playerHitpoints;
private final PlayerMoneyCallback moneyCallback;
2025-03-13 12:08:07 +01:00
//private final PlayerHitpointsCallback hitpointsCallback;
public GameSession(Player player, PlayerMoneyCallback moneyCallback) {
this.player = player;
this.moneyCallback = moneyCallback;
2025-03-13 12:08:07 +01:00
//this.hitpointsCallback = hitpointsCallback;
this.money = START_MONEY;
2025-03-13 12:08:07 +01:00
this.playerHitpoints = START_HITPOINTS;
}
public void placeTower(Tower tower, int x, int y) throws InvalidPlacementException {
if (x < 0 || y < 0 || x + 1 > MAP_SIZE_X || y + 1 > MAP_SIZE_Y) {
throw new InvalidPlacementException(InvalidPlacementReason.OUT_OF_BOUNDS);
}
if (towers[x][y] != null) {
throw new InvalidPlacementException(InvalidPlacementReason.LOCATION_USED);
}
if (money < Tower.COST) {
throw new InvalidPlacementException(InvalidPlacementReason.NOT_ENOUGH_MONEY);
}
money -= Tower.COST;
moneyCallback.call(player, money);
towers[x][y] = tower;
}
public void addMoney(int amount) {
money += amount;
2025-03-13 12:08:07 +01:00
moneyCallback.call(player, money);
}
}