/* * IDK Game Server by Steve Winfield * https://github.com/WinfieldSteve */ package org.stevewinfield.suja.idk.game.rooms.tasks; import org.magicwerk.brownies.collections.GapList; import org.stevewinfield.suja.idk.game.rooms.GameTeam; import org.stevewinfield.suja.idk.game.rooms.RoomInstance; import org.stevewinfield.suja.idk.game.rooms.RoomItem; import org.stevewinfield.suja.idk.game.rooms.RoomPlayer; import java.util.List; import java.util.concurrent.ConcurrentHashMap; public abstract class GameTask { protected final RoomInstance room; protected boolean running; protected boolean paused; protected boolean ended; protected int flexInteger; protected final List<RoomItem> gameItems; protected final ConcurrentHashMap<Integer, GameTeam> gameTeams; public GameTask(final RoomInstance room) { this.room = room; this.ended = true; this.gameItems = new GapList<>(); this.gameTeams = new ConcurrentHashMap<>(); } public int getFlexInteger() { return flexInteger; } public boolean isRunning() { return running; } public boolean isPaused() { return paused; } public GameTeam getTeam(final int id) { return this.gameTeams.containsKey(id) ? this.gameTeams.get(id) : null; } public void addGameItem(final RoomItem item) { this.gameItems.add(item); } public void removeGameItem(final RoomItem item) { this.gameItems.remove(item); } public void addGameTeam(final int teamId, final GameTeam team) { this.gameTeams.put(teamId, team); } public boolean hasEnded() { return ended; } public void onGameEnds(final RoomItem timer) { this.room.getWiredHandler().onGameEnds(); } public void onGameStarts(final RoomItem timer) { this.room.getWiredHandler().onGameStarts(); } public abstract void onGameRests(RoomItem timer); public abstract void onHandle(RoomPlayer player, RoomItem item); }