Server kommentare zu minigame system
This commit is contained in:
Generated
+1
-1
@@ -102,7 +102,7 @@
|
||||
<workItem from="1681130452664" duration="6192000" />
|
||||
<workItem from="1681217780586" duration="94000" />
|
||||
<workItem from="1681218296017" duration="162000" />
|
||||
<workItem from="1681481242206" duration="12651000" />
|
||||
<workItem from="1681481242206" duration="13595000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
|
||||
@@ -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<Thread> 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();
|
||||
}
|
||||
}
|
||||
|
||||
+12
-1
@@ -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!!
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user