Wide variety of changes for release

This commit is contained in:
2023-12-27 01:16:58 +01:00
parent c63e4badf4
commit 7ea619c596
46 changed files with 484 additions and 63 deletions

View File

@@ -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);

View File

@@ -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());
}
}

View File

@@ -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));
}