fixed score
This commit is contained in:
parent
3fe57d5fe9
commit
18689ac0df
@ -16,9 +16,7 @@ import net.minestom.server.item.ItemStack;
|
|||||||
import net.minestom.server.item.Material;
|
import net.minestom.server.item.Material;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.*;
|
||||||
import java.util.Random;
|
|
||||||
import java.util.WeakHashMap;
|
|
||||||
|
|
||||||
class Tetris extends StatelessGame {
|
class Tetris extends StatelessGame {
|
||||||
private final Map<Player, TetrisGame> tetrisGames = new WeakHashMap<>();
|
private final Map<Player, TetrisGame> tetrisGames = new WeakHashMap<>();
|
||||||
@ -42,6 +40,8 @@ class Tetris extends StatelessGame {
|
|||||||
|
|
||||||
Random random = new Random();
|
Random random = new Random();
|
||||||
this.randomSeed = random.nextLong();
|
this.randomSeed = random.nextLong();
|
||||||
|
|
||||||
|
System.out.println("1");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -68,21 +68,23 @@ class Tetris extends StatelessGame {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPlayerLeave(Player p) {
|
protected void onPlayerLeave(Player p) {
|
||||||
|
System.out.println("2");
|
||||||
this.tetrisGames.get(p).sidebar.removeViewer(p);
|
this.tetrisGames.get(p).sidebar.removeViewer(p);
|
||||||
this.letPlayerLoose(p);
|
this.letPlayerLoose(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPlayerMove(@NotNull PlayerMoveEvent event) {
|
protected void onPlayerMove(@NotNull PlayerMoveEvent event) {
|
||||||
event.setCancelled(true);
|
|
||||||
|
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
Pos previousPosition = event.getPlayer().getPosition();
|
Pos previousPosition = event.getPlayer().getPosition();
|
||||||
Pos currentPosition = event.getNewPosition();
|
Pos currentPosition = event.getNewPosition();
|
||||||
|
|
||||||
TetrisGame tetrisGame = this.tetrisGames.get(player);
|
TetrisGame tetrisGame = this.tetrisGames.get(player);
|
||||||
|
|
||||||
if(tetrisGame == null) return;
|
if(tetrisGame == null) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if(tetrisGame.lost) return;
|
if(tetrisGame.lost) return;
|
||||||
if(player.getGameMode() == GameMode.SPECTATOR) return;
|
if(player.getGameMode() == GameMode.SPECTATOR) return;
|
||||||
|
|
||||||
@ -132,11 +134,13 @@ class Tetris extends StatelessGame {
|
|||||||
TetrisGame tetrisGame = this.tetrisGames.get(player);
|
TetrisGame tetrisGame = this.tetrisGames.get(player);
|
||||||
if(tetrisGame == null) return;
|
if(tetrisGame == null) return;
|
||||||
if(tetrisGame.lost && player.getGameMode() != GameMode.SPECTATOR) {
|
if(tetrisGame.lost && player.getGameMode() != GameMode.SPECTATOR) {
|
||||||
|
System.out.println("3");
|
||||||
letPlayerLoose(player);
|
letPlayerLoose(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void letPlayerLoose(Player player) {
|
private void letPlayerLoose(Player player) {
|
||||||
|
System.out.println("4");
|
||||||
TetrisGame tetrisGame = this.tetrisGames.get(player);
|
TetrisGame tetrisGame = this.tetrisGames.get(player);
|
||||||
player.setGameMode(GameMode.SPECTATOR);
|
player.setGameMode(GameMode.SPECTATOR);
|
||||||
player.setInvisible(true);
|
player.setInvisible(true);
|
||||||
@ -167,8 +171,10 @@ class Tetris extends StatelessGame {
|
|||||||
this.hasCombat,
|
this.hasCombat,
|
||||||
this.randomSeed
|
this.randomSeed
|
||||||
);
|
);
|
||||||
this.tetrisGames.get(p).generate();
|
newTetrisGame.generate();
|
||||||
this.tetrisGames.values().forEach(tetrisGame -> tetrisGame.updateOtherTetrisGames(this.tetrisGames.values()));
|
List<TetrisGame> games = new ArrayList<>(this.tetrisGames.values());
|
||||||
|
games.add(newTetrisGame);
|
||||||
|
this.tetrisGames.values().forEach(tetrisGame -> tetrisGame.updateOtherTetrisGames(games));
|
||||||
return newTetrisGame;
|
return newTetrisGame;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -8,21 +8,11 @@ import java.time.Duration;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class FirstWinsScore extends Score {
|
public class FirstWinsScore extends Score {
|
||||||
@Override
|
|
||||||
public void insertResultImplementation(Set<Player> p, int points) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void insertResultImplementation(Set<Player> p) {
|
public void insertResultImplementation(Set<Player> p) {
|
||||||
getScores().add(p);
|
getScores().add(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void insertResult(Player p, int points) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected TranslatableMessage scoreMessage() {
|
protected TranslatableMessage scoreMessage() {
|
||||||
return new TitleMessage(Duration.ofMillis(1000), Duration.ofSeconds(1)).appendTranslated("score#finish");
|
return new TitleMessage(Duration.ofMillis(1000), Duration.ofSeconds(1)).appendTranslated("score#finish");
|
||||||
|
@ -8,21 +8,11 @@ import java.time.Duration;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class LastWinsScore extends Score {
|
public class LastWinsScore extends Score {
|
||||||
@Override
|
|
||||||
public void insertResultImplementation(Set<Player> p, int points) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void insertResultImplementation(Set<Player> p) {
|
public void insertResultImplementation(Set<Player> p) {
|
||||||
getScores().addFirst(p);
|
getScores().addFirst(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void insertResult(Player p, int points) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected TranslatableMessage scoreMessage() {
|
protected TranslatableMessage scoreMessage() {
|
||||||
return new TitleMessage(Duration.ofMillis(1000), Duration.ofSeconds(1)).appendTranslated("score#death");
|
return new TitleMessage(Duration.ofMillis(1000), Duration.ofSeconds(1)).appendTranslated("score#death");
|
||||||
|
@ -10,21 +10,11 @@ public class NoScore extends Score {
|
|||||||
protected void checkGameEnd() {
|
protected void checkGameEnd() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void insertResultImplementation(Set<Player> p, int points) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void insertResultImplementation(Set<Player> p) {
|
public void insertResultImplementation(Set<Player> p) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void insertResult(Player p, int points) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected TranslatableMessage scoreMessage() {
|
protected TranslatableMessage scoreMessage() {
|
||||||
return null;
|
return null;
|
||||||
|
@ -15,8 +15,8 @@ public class PointsWinScore extends Score {
|
|||||||
private Map<Set<Player>, Integer> scoreOrder = new HashMap<>();
|
private Map<Set<Player>, Integer> scoreOrder = new HashMap<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void insertResultImplementation(Set<Player> p, int points) {
|
protected void insertResultImplementation(Set<Player> p, int currentPoints) {
|
||||||
this.scoreOrder.put(p, points);
|
this.scoreOrder.put(p, currentPoints);
|
||||||
this.scoreOrder = MapUtil.sortByValue(this.scoreOrder);
|
this.scoreOrder = MapUtil.sortByValue(this.scoreOrder);
|
||||||
getScores().clear();
|
getScores().clear();
|
||||||
this.scoreOrder.forEach((player, integer) -> getScores().addFirst(player));
|
this.scoreOrder.forEach((player, integer) -> getScores().addFirst(player));
|
||||||
@ -27,14 +27,6 @@ public class PointsWinScore extends Score {
|
|||||||
this.insertResultImplementation(p, 0);
|
this.insertResultImplementation(p, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void insertResult(Player p, int points) {
|
|
||||||
if(hasResult(p)) return;
|
|
||||||
this.scoreMessage().send(p);
|
|
||||||
this.insertResultImplementation(Set.of(p), points);
|
|
||||||
this.checkGameEnd();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setDone() {
|
public void setDone() {
|
||||||
if(isClosed()) return;
|
if(isClosed()) return;
|
||||||
|
@ -8,6 +8,7 @@ import net.minestom.server.entity.Player;
|
|||||||
import net.minestom.server.event.instance.AddEntityToInstanceEvent;
|
import net.minestom.server.event.instance.AddEntityToInstanceEvent;
|
||||||
import net.minestom.server.event.instance.RemoveEntityFromInstanceEvent;
|
import net.minestom.server.event.instance.RemoveEntityFromInstanceEvent;
|
||||||
import net.minestom.server.event.player.PlayerDisconnectEvent;
|
import net.minestom.server.event.player.PlayerDisconnectEvent;
|
||||||
|
import org.apache.commons.lang3.NotImplementedException;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -22,10 +23,19 @@ public abstract class Score {
|
|||||||
|
|
||||||
public Score() {}
|
public Score() {}
|
||||||
|
|
||||||
public Score(int ignoreLastPlayers) {
|
protected abstract void insertResultImplementation(Set<Player> p);
|
||||||
this.ignoreLastPlayers = ignoreLastPlayers;
|
|
||||||
|
protected void insertResultImplementation(Set<Player> p, int points) {
|
||||||
|
throw new NotImplementedException("This Score type is not able to process points");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void insertResult(Player p) {
|
||||||
|
this.insertResultProcessor(p, () -> this.insertResultImplementation(Set.of(p)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void insertResult(Player p, int points) {
|
||||||
|
this.insertResultProcessor(p, () -> this.insertResultImplementation(Set.of(p), points));
|
||||||
|
}
|
||||||
|
|
||||||
public void attachListeners() {
|
public void attachListeners() {
|
||||||
this.instance.eventNode()
|
this.instance.eventNode()
|
||||||
@ -46,21 +56,8 @@ public abstract class Score {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void insertResultImplementation(Set<Player> p, int points);
|
|
||||||
|
|
||||||
protected abstract void insertResultImplementation(Set<Player> p);
|
|
||||||
|
|
||||||
public abstract void insertResult(Player p, int points);
|
|
||||||
|
|
||||||
protected abstract TranslatableMessage scoreMessage();
|
protected abstract TranslatableMessage scoreMessage();
|
||||||
|
|
||||||
public void insertResult(Player p) {
|
|
||||||
if(hasResult(p)) return;
|
|
||||||
this.scoreMessage().send(p);
|
|
||||||
this.insertResultImplementation(Set.of(p));
|
|
||||||
this.checkGameEnd();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void insertRemainingPlayers(Set<Player> players) {
|
public void insertRemainingPlayers(Set<Player> players) {
|
||||||
this.insertResultImplementation(players.stream().filter(p -> !hasResult(p)).collect(Collectors.toSet()));
|
this.insertResultImplementation(players.stream().filter(p -> !hasResult(p)).collect(Collectors.toSet()));
|
||||||
setDone();
|
setDone();
|
||||||
@ -99,6 +96,13 @@ public abstract class Score {
|
|||||||
instance.stop();
|
instance.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void insertResultProcessor(Player p, Runnable callback) {
|
||||||
|
if(hasResult(p)) return;
|
||||||
|
this.scoreMessage().send(p);
|
||||||
|
callback.run();
|
||||||
|
this.checkGameEnd();
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isClosed() {
|
public boolean isClosed() {
|
||||||
return isClosed;
|
return isClosed;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user