From ce02fc2b886032814af82e7063392d34d12e6aab Mon Sep 17 00:00:00 2001 From: ramollia <@> Date: Mon, 6 Oct 2025 22:16:23 +0200 Subject: [PATCH] add: online player list --- .../toop/app/layer/layers/ConnectedLayer.java | 114 ++++++++++-------- 1 file changed, 67 insertions(+), 47 deletions(-) diff --git a/app/src/main/java/org/toop/app/layer/layers/ConnectedLayer.java b/app/src/main/java/org/toop/app/layer/layers/ConnectedLayer.java index 249ee00..4ca7266 100644 --- a/app/src/main/java/org/toop/app/layer/layers/ConnectedLayer.java +++ b/app/src/main/java/org/toop/app/layer/layers/ConnectedLayer.java @@ -1,69 +1,89 @@ package org.toop.app.layer.layers; -import org.toop.app.GameInformation; +import org.toop.app.layer.Container; import org.toop.app.layer.Layer; +import org.toop.app.layer.NodeBuilder; +import org.toop.app.layer.containers.VerticalContainer; import org.toop.framework.eventbus.EventFlow; import org.toop.framework.networking.events.NetworkEvents; +import javafx.geometry.Pos; +import javafx.scene.control.Label; +import javafx.scene.control.ListView; + +import java.util.List; import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.CopyOnWriteArrayList; -import java.util.List; public final class ConnectedLayer extends Layer { - long clientId; - String user; - List onlinePlayers = new CopyOnWriteArrayList<>(); + long clientId; + String user; + List onlinePlayers = new CopyOnWriteArrayList<>(); - public ConnectedLayer(long clientId, String user) { - super("primary-bg"); + public ConnectedLayer(long clientId, String user) { + super("bg-primary"); - this.clientId = clientId; - this.user = user; - reload(); + this.clientId = clientId; + this.user = user; + reload(); - new EventFlow().addPostEvent(new NetworkEvents.SendLogin(this.clientId, this.user)).postEvent(); - new EventFlow().listen(this::handleReceivedChallenge); + new EventFlow().addPostEvent(new NetworkEvents.SendLogin(this.clientId, this.user)).postEvent(); + new EventFlow().listen(this::handleReceivedChallenge); - new Thread(this::populatePlayerList).start(); - } + new Thread(this::populatePlayerList).start(); + } - private void populatePlayerList() { - EventFlow sendGetPlayerList = new EventFlow().addPostEvent(new NetworkEvents.SendGetPlayerlist(this.clientId)); - new EventFlow().listen(NetworkEvents.PlayerlistResponse.class, e -> { - if (e.clientId() == this.clientId) { - List playerList = new java.util.ArrayList<>(List.of(e.playerlist())); // TODO: Garbage, but works - playerList.removeIf(name -> name.equalsIgnoreCase(user)); - if (this.onlinePlayers != playerList) { - this.onlinePlayers.clear(); - this.onlinePlayers.addAll(playerList); - } - } - }); + private void populatePlayerList() { + EventFlow sendGetPlayerList = new EventFlow().addPostEvent(new NetworkEvents.SendGetPlayerlist(this.clientId)); + new EventFlow().listen(NetworkEvents.PlayerlistResponse.class, e -> { + if (e.clientId() == this.clientId) { + List playerList = new java.util.ArrayList<>(List.of(e.playerlist())); // TODO: Garbage, but works + playerList.removeIf(name -> name.equalsIgnoreCase(user)); + if (this.onlinePlayers != playerList) { + this.onlinePlayers.clear(); + this.onlinePlayers.addAll(playerList); + } + } + }); - TimerTask task = new TimerTask() { - public void run() { - sendGetPlayerList.postEvent(); - } - }; + TimerTask task = new TimerTask() { + public void run() { + sendGetPlayerList.postEvent(); + } + }; - Timer pollTimer = new Timer(); - pollTimer.schedule(task, 0L, 5000L); - } + Timer pollTimer = new Timer(); + pollTimer.schedule(task, 0L, 5000L); + } - private void sendChallenge(String oppUsername, String gameType) { - if (onlinePlayers.contains(oppUsername)) { - new EventFlow().addPostEvent(new NetworkEvents.SendChallenge(this.clientId, oppUsername, gameType)) - .postEvent(); - } - } + private void sendChallenge(String oppUsername, String gameType) { + if (onlinePlayers.contains(oppUsername)) { + new EventFlow().addPostEvent(new NetworkEvents.SendChallenge(this.clientId, oppUsername, gameType)) + .postEvent(); + } + } - private void handleReceivedChallenge(NetworkEvents.ChallengeResponse response) { - // TODO: Popup? Idk what this actually sends back. - } + private void handleReceivedChallenge(NetworkEvents.ChallengeResponse response) { + // TODO: Popup? Idk what this actually sends back. + } - @Override - public void reload() { - popAll(); - } + @Override + public void reload() { + popAll(); + + ListView