Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package server.model.minigames.trawler;
- import java.util.ArrayList;
- import server.event.CycleEvent;
- import server.event.CycleEventContainer;
- import server.event.CycleEventHandler;
- import server.model.players.Location;
- import server.model.players.Player;
- public abstract class WaitingRoom {
- public int minimumPlayers;
- public ArrayList<Player> waiting = new ArrayList<Player>();
- private int wait_time;
- private int minutes_remaining;
- private boolean active;
- public abstract Location getLocation();
- public abstract boolean startGame();
- public abstract void onStart();
- public abstract void onLeave(Player p);
- public abstract void onJoin(Player p);
- public abstract void onTimeChange();
- public abstract boolean canStart();
- public WaitingRoom(int minutes, int minimum) {
- this.wait_time = minutes;
- this.minimumPlayers = minimum;
- this.minutes_remaining = wait_time;
- startWaiting();
- }
- public void join(Player p) {
- if(!waiting.contains(p)) {
- onJoin(p);
- waiting.add(p);
- }
- }
- public void leave(Player p) {
- if(waiting.contains(p)) {
- onLeave(p);
- waiting.remove(p);
- }
- }
- public void reset() {
- minutes_remaining = wait_time;
- }
- public void startWaiting() {
- if(isActive()) {
- return;
- }
- setActive(true);
- CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() {
- @Override
- public void execute(CycleEventContainer container) {
- System.out.println(waiting.size() + "/ "+minimumPlayers);
- if(minutes_remaining != 0) {
- minutes_remaining--;
- onTimeChange();
- } else {
- if(startGame()) {
- onStart();
- reset();
- setActive(false);
- container.stop();
- } else {
- messageWaiting("A minimum of "+minimumPlayers+" players are needed to start this minigame!");
- reset();
- }
- }
- }
- @Override
- public void stop() {
- }
- }, 100);
- }
- public void messageWaiting(String message) {
- for(Player p : waiting) {
- if(p != null) {
- p.asClient().sendMessage(message);
- }
- }
- }
- public boolean isActive() {
- return active;
- }
- public void setActive(boolean active) {
- this.active = active;
- }
- public int getTimeRemaining() {
- return minutes_remaining;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement