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]

main
Fan-Wu Yang 8 years ago
parent df04cdf87c
commit 54a9140f31

@ -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);

Loading…
Cancel
Save