lobby listener is added and removed so that the program doesn't drasticaly slow down when the lobby is connected to multiple times #story[1188]
This commit is contained in:
@@ -83,6 +83,8 @@ public class InGameLobbyController extends Controller {
|
||||
|
||||
private StlMeshImporter importer;
|
||||
|
||||
private PopulatePlayers lobbyUpdateListener;
|
||||
|
||||
@Override
|
||||
public void initialize(URL location, ResourceBundle resources) {
|
||||
allPlayerLabels = new ArrayList(Arrays.asList(playerLabel, playerLabel2,
|
||||
@@ -94,6 +96,8 @@ public class InGameLobbyController extends Controller {
|
||||
URL asset = HostController.class.getClassLoader().getResource("assets/V1.2 Complete Boat.stl");
|
||||
importer = new StlMeshImporter();
|
||||
importer.read(asset);
|
||||
lobbyUpdateListener = new PopulatePlayers();
|
||||
|
||||
}
|
||||
|
||||
private void resetLobby(){
|
||||
@@ -110,17 +114,26 @@ public class InGameLobbyController extends Controller {
|
||||
}
|
||||
}
|
||||
|
||||
private void populatePlayers(ListChangeListener.Change change){
|
||||
public class PopulatePlayers implements ListChangeListener {
|
||||
|
||||
@Override
|
||||
public void onChanged(Change change) {
|
||||
|
||||
Platform.runLater(
|
||||
() -> {
|
||||
if (visualiserRaceEvent.getVisualiserRaceState().getRaceStatusEnum() != RaceStatusEnum.PRESTART){
|
||||
return;
|
||||
}
|
||||
while (change.next()){
|
||||
if (change.wasAdded() || change.wasRemoved() || change.wasUpdated() || change.wasPermutated()){
|
||||
if (visualiserRaceEvent.getVisualiserRaceState().getRaceStatusEnum() != RaceStatusEnum.PRESTART){
|
||||
return;
|
||||
}
|
||||
try{
|
||||
resetLobby();
|
||||
int count = 0;
|
||||
int row = 0;
|
||||
for (VisualiserBoat boat :this.visualiserRaceEvent.getVisualiserRaceState().getBoats()) {
|
||||
for (VisualiserBoat boat :visualiserRaceEvent.getVisualiserRaceState().getBoats()) {
|
||||
View3D playerBoatToSet = new View3D();
|
||||
playerBoatToSet.setItems(subjects);
|
||||
|
||||
@@ -160,6 +173,10 @@ public class InGameLobbyController extends Controller {
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
/*
|
||||
private void populatePlayers(ListChangeListener.Change change){
|
||||
}*/
|
||||
|
||||
/**
|
||||
* Starts the race.
|
||||
@@ -220,7 +237,7 @@ public class InGameLobbyController extends Controller {
|
||||
|
||||
//Hide this, and display the race controller.
|
||||
gameLobbyWrapper.setVisible(false);
|
||||
|
||||
visualiserRaceEvent.getVisualiserRaceState().getBoats().removeListener(lobbyUpdateListener);
|
||||
parent.beginRace(visualiserRaceEvent, controllerClient, isHost);
|
||||
|
||||
}
|
||||
@@ -239,9 +256,7 @@ public class InGameLobbyController extends Controller {
|
||||
this.controllerClient = visualiserRaceEvent.getControllerClient();
|
||||
|
||||
|
||||
this.visualiserRaceEvent.getVisualiserRaceState().getBoats().addListener((ListChangeListener<? super VisualiserBoat>) c ->{
|
||||
populatePlayers(c);
|
||||
});
|
||||
this.visualiserRaceEvent.getVisualiserRaceState().getBoats().addListener(this.lobbyUpdateListener);
|
||||
|
||||
|
||||
gameLobbyWrapper.setVisible(true);
|
||||
|
||||
Reference in New Issue
Block a user