diff options
Diffstat (limited to '')
-rw-r--r-- | src/main/java/los/numeros/EPHS/Main.java | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/main/java/los/numeros/EPHS/Main.java b/src/main/java/los/numeros/EPHS/Main.java new file mode 100644 index 0000000..530bc20 --- /dev/null +++ b/src/main/java/los/numeros/EPHS/Main.java @@ -0,0 +1,79 @@ +package los.numeros.EPHS; + +import java.util.Random; +import java.util.UUID; +import java.util.Collection; +import java.util.Date; +import java.util.function.BooleanSupplier; + +import los.numeros.GameEngine.Engine; +import los.numeros.GameEngine.Module; +import net.fabricmc.fabric.api.networking.v1.PlayerLookup; +import net.minecraft.network.MessageType; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.command.ServerCommandSource; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.text.LiteralText; +import los.numeros.HidersAndDiggers.modules.*; + +public class Main implements Engine { + BooleanSupplier running = () -> { return true; }; + Module modules[] = new Module[10]; + + public Main(ServerCommandSource source, int numDiggers) { + int i; + MinecraftServer server = source.getMinecraftServer(); + ServerPlayerEntity[] players, diggers, hiders; + Random r = new Random(new Date().getTime()); + + /* get all the players on the server */ + Collection<ServerPlayerEntity> playerCollection = PlayerLookup.all(server); + players = playerCollection.toArray(new ServerPlayerEntity[playerCollection.size()]); + + /* create the hiders and diggers array of appropriate sizes */ + diggers = new ServerPlayerEntity[numDiggers]; + hiders = new ServerPlayerEntity[players.length - numDiggers]; + + /* too few players to start the game */ + if (players.length <= 2) { + /* send a message letting everyone know there aren't enough players to start the game */ + server.getPlayerManager().broadcastChatMessage( + new LiteralText("Not enough players to start the game"), + MessageType.SYSTEM, + new UUID(0, 0) + ); + return; + } + + /* creates an array of diggers */ + for (i = 0; numDiggers > 0; numDiggers--, i++) { + /* TODO: make sure the same person isn't picked to be all of the diggers */ + diggers[i] = players[r.nextInt(players.length)]; + } + + /* creates an array of hiders */ + i = 0; + for (ServerPlayerEntity p : players) { + /* add all players who arent diggers to the hiders array */ + if (!hasPlayer(diggers, p)) { + hiders[i++] = p; + } + } + + /* populate the modules */ + modules[0] = new MainModule(diggers, hiders, players, source); + modules[1] = new GameClockModule(diggers, hiders, players, server); + + /* start the game */ + Engine.StartEngine(running, modules); + } + + private boolean hasPlayer(ServerPlayerEntity[] array, ServerPlayerEntity player) + { + for (ServerPlayerEntity p : array) { + if (p == player) + return true; + } + return false; + } +} |