Wide variety of changes for release
This commit is contained in:
@@ -60,7 +60,7 @@ public abstract class Game extends MineNetInstance implements Spawnable {
|
||||
|
||||
Game game = factory.manufacture(Room.getRoom(owner).orElseThrow(), options);
|
||||
game.load();
|
||||
Room.getRoom(owner).orElseThrow().moveMembersToGame(game);
|
||||
Room.getRoom(owner).orElseThrow().moveMembersToInstance(game);
|
||||
|
||||
} catch (Exception e) {
|
||||
new ChatMessage(Icon.ERROR).appendStatic("Instance crashed: " + e.getMessage()).send(owner);
|
||||
@@ -76,7 +76,7 @@ public abstract class Game extends MineNetInstance implements Spawnable {
|
||||
scheduler().submitTask(() -> {
|
||||
CompletableFuture<Void> callback = new CompletableFuture<>();
|
||||
this.onLoad(callback);
|
||||
callback.whenComplete((unused, throwable) -> this.start());
|
||||
// callback.whenComplete((unused, throwable) -> this.start());
|
||||
return TaskSchedule.stop();
|
||||
}, ExecutionType.ASYNC);
|
||||
|
||||
|
||||
@@ -22,7 +22,6 @@ public class StatelessGame extends Game {
|
||||
|
||||
private int timeLimit = 0;
|
||||
private int timePlayed = 0;
|
||||
private final boolean preventExit = false;
|
||||
public StatelessGame(DimensionType dimensionType, String gameName, Score score) {
|
||||
super(dimensionType);
|
||||
this.score = score;
|
||||
@@ -39,6 +38,25 @@ public class StatelessGame extends Game {
|
||||
|
||||
public void setTimeLimit(int limit) {
|
||||
this.timeLimit = limit;
|
||||
if(timeLimit > 0) {
|
||||
scheduler().submitTask(() -> {
|
||||
if(!isRunning || timeLimit == 0) return TaskSchedule.stop();
|
||||
if(timeLimit <= timePlayed) {
|
||||
stop();
|
||||
return TaskSchedule.stop();
|
||||
}
|
||||
|
||||
int timeLeft = timeLimit - timePlayed;
|
||||
switch (timeLeft) {
|
||||
case 60, 30, 10, 5, 4, 3, 2, 1 ->
|
||||
new ChatMessage(Icon.SCIENCE).appendStatic("Noch " + timeLeft + " Sekunden!").send(getPlayers());
|
||||
}
|
||||
|
||||
timePlayed++;
|
||||
|
||||
return TaskSchedule.seconds(1);
|
||||
}, ExecutionType.SYNC);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -59,47 +77,29 @@ public class StatelessGame extends Game {
|
||||
}
|
||||
|
||||
|
||||
public void startAccessor() {
|
||||
this.start();
|
||||
}
|
||||
@Override
|
||||
protected void start() {
|
||||
score.setInstance(this);
|
||||
score.attachListeners();
|
||||
|
||||
countdownStart().thenRun(() -> {
|
||||
super.start();
|
||||
|
||||
if(timeLimit > 0) {
|
||||
scheduler().submitTask(() -> {
|
||||
if(!isRunning || timeLimit == 0) return TaskSchedule.stop();
|
||||
if(timeLimit <= timePlayed) {
|
||||
stop();
|
||||
return TaskSchedule.stop();
|
||||
}
|
||||
|
||||
int timeLeft = timeLimit - timePlayed;
|
||||
switch (timeLeft) {
|
||||
case 60, 30, 10, 5, 4, 3, 2, 1 ->
|
||||
new ChatMessage(Icon.SCIENCE).appendStatic("Noch " + timeLeft + " Sekunden!").send(getPlayers());
|
||||
}
|
||||
|
||||
timePlayed++;
|
||||
|
||||
return TaskSchedule.seconds(1);
|
||||
}, ExecutionType.SYNC);
|
||||
}
|
||||
});
|
||||
countdownStart().thenRun(super::start);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
isRunning = false;
|
||||
this.onStop();
|
||||
getScore().insertRemainingPlayers(getPlayers());
|
||||
this.publishScore(getScore());
|
||||
|
||||
countdownUnload();
|
||||
}
|
||||
|
||||
private void countdownUnload() {
|
||||
new TitleMessage(Duration.ofSeconds(1)).appendStatic("Finish").send(getPlayers());
|
||||
new TitleMessage(Duration.ofSeconds(1)).appendTranslated("score#done").send(getPlayers());
|
||||
scheduler().scheduleTask(this::unload, TaskSchedule.seconds(5), TaskSchedule.stop());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,8 +2,6 @@ package eu.mhsl.minenet.minigames.instance.room;
|
||||
|
||||
import eu.mhsl.minenet.minigames.Resource;
|
||||
import eu.mhsl.minenet.minigames.instance.MineNetInstance;
|
||||
import eu.mhsl.minenet.minigames.instance.game.Game;
|
||||
import eu.mhsl.minenet.minigames.message.Icon;
|
||||
import eu.mhsl.minenet.minigames.message.type.ChatMessage;
|
||||
import eu.mhsl.minenet.minigames.score.tournament.Tournament;
|
||||
import eu.mhsl.minenet.minigames.util.CommonEventHandles;
|
||||
@@ -139,8 +137,7 @@ public class Room extends MineNetInstance implements Spawnable {
|
||||
});
|
||||
}
|
||||
|
||||
public void moveMembersToGame(Game game) {
|
||||
logger.info("Move room group with " + this.getAllMembers().size() + " players to Game " + game.getUniqueId());
|
||||
public void moveMembersToInstance(Spawnable game) {
|
||||
this.getAllMembers().forEach(player -> MoveInstance.move(player, game));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user