diff --git a/Server/.idea/workspace.xml b/Server/.idea/workspace.xml
index 4240467..ae5a2b1 100644
--- a/Server/.idea/workspace.xml
+++ b/Server/.idea/workspace.xml
@@ -102,7 +102,7 @@
-
+
diff --git a/Server/src/Minigame.java b/Server/src/Minigame.java
index d7815fd..441b481 100644
--- a/Server/src/Minigame.java
+++ b/Server/src/Minigame.java
@@ -8,8 +8,13 @@ import java.util.TimerTask;
public class Minigame
{
+ //referenz auf den ursprünglichen raum
protected Room room;
+
+ //liste aller threads zum korrekten beenden dieser
private List threads = new ArrayList<>();
+
+ //liste aller temporären minigame verbindungen
private Client[] players;
public Minigame(Room room)
@@ -18,6 +23,7 @@ public class Minigame
players = new Client[room.players.length];
}
+ //fügt dem minigame "Raum" einen spieler hinzu (ähnlich wie im Room selbst)
public void addClient(Client client, int index)
{
Thread t = new Thread(new Runnable()
@@ -25,9 +31,12 @@ public class Minigame
@Override
public void run()
{
+
players[index] = client;
DataInputStream input = client.input;
DataOutputStream output = client.output;
+
+ //Buffer für eingehende narichten
byte[] readData = new byte[10];
@@ -40,6 +49,7 @@ public class Minigame
}
+ //eingehende narichten verarbeiten:
while (true)
{
try
@@ -79,8 +89,10 @@ public class Minigame
t.start();
}
+ //das minigame wird beendet
public void end()
{
+ //alle bestehenden threads in diesem Minigame beenden
for (int i = 0; i < threads.size(); i++)
{
try
@@ -92,11 +104,13 @@ public class Minigame
}
}
+ //temporäre verbindungen schließen
for(int i = 0; i < players.length; i++)
{
players[i].close();
}
+ //threads liste löschen
threads.clear();
}
}
diff --git a/Server/src/Room.java b/Server/src/Room.java
index ba89a1d..725ecd8 100644
--- a/Server/src/Room.java
+++ b/Server/src/Room.java
@@ -53,21 +53,28 @@ public class Room
public void addPlayerToCurrentMiniGame(int index, Client tempClient)
{
+ //fügt eine eingehende Verbindung vom Server dem Minigame hinzu
currentMiniGame.addClient(tempClient, index);
}
+ //erstellt ein neues minigame
private void activateMinigame()
{
inMiniGame = true;
+
+ //zufälliges minigame auswählen (mapping hier zu im Client c#)
int randomGame = (int) (Math.random() * 1);
+ //minigame instanz erstellen
currentMiniGame = new Minigame(this);
try
{
+ //jedem client die anweisung geben die angegebene minigameinstanz zu laden
for (int i = 0; i < players.length; i++)
{
+ //i = jeder spieler bekommt vorübergehend seine Server ID zugeordnet um die Spieler im Minigame richtig mappen zu können
players[i].output.write(new byte[]{100, (byte) i, (byte) randomGame, 0, 0, 0, 0, 0, 0, 0});
}
} catch (Exception e)
@@ -78,15 +85,19 @@ public class Room
public void closeMinigame()
{
+ //überprüfen ob das minigame existiert
if(currentMiniGame != null)
{
System.out.println("close minigame");
+ //das minigame beenden
currentMiniGame.end();
+ //minigame objekt dem garbage collector überlassen XD
currentMiniGame = null;
inMiniGame = false;
try
{
+ //den clients die Anweisung geben die ursprüngliche welt zu laden und die Minigamemap zu töten ^^
for (int i = 0; i < players.length; i++)
{
players[i].output.write(new byte[]{101, 0, 0, 0, 0, 0, 0, 0, 0, 0});
@@ -97,7 +108,7 @@ public class Room
}
}
- //sync the activation of the current player to ALL clients
+ //den nächsten spieler aktivieren (der vor dem minigame dran gewesen wäre)
for (int i = 0; i < players.length; i++)
{
//!!data processing!!
diff --git a/Server/src/Server.java b/Server/src/Server.java
index 99fc8c2..47110e5 100644
--- a/Server/src/Server.java
+++ b/Server/src/Server.java
@@ -190,14 +190,17 @@ public class Server
break;
}
break;
- //Player wats to join a minigame
+ //Player wats to join a minigame (nur möglich wenn bereits in einem bestehenden spiel)
case 5:
int playerIDInRoom = readData[1];
input.read(readData);
+ //um die eingehende Verbindung einem bestehenden Raum zuordnen zu können
String roomCodeOriginal = new String(readData, StandardCharsets.US_ASCII);
+ //ein temporäre instanz eines clients für das Minigame wird erstellt
Client miniGameConnectorClient = new Client(output, input, client);
+ //die Verbindung wird an das Minigame des Angeforderten Raums weitergeleitet.
rooms.get(roomCodeOriginal).addPlayerToCurrentMiniGame(playerIDInRoom, miniGameConnectorClient);