Skip to content

Commit

Permalink
Temporary workaround for #15. Throttle updates to the Damcon UI to on…
Browse files Browse the repository at this point in the history
…ce every 100ms.
  • Loading branch information
Andrew Brindamour committed Feb 21, 2016
1 parent a390fa3 commit 6075320
Showing 1 changed file with 29 additions and 16 deletions.
45 changes: 29 additions & 16 deletions src/com/brindyblitz/artemis/engconsole/ui/damcon/Damcon.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
import java.io.File;
import java.io.FileNotFoundException;
import java.util.*;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

import javax.media.j3d.Appearance;
import javax.media.j3d.BranchGroup;
Expand Down Expand Up @@ -91,6 +93,8 @@ public class Damcon implements MouseListener, MouseMotionListener, MouseWheelLis

private AudioManager audioManager;

private boolean dirty = false;

public Damcon(EngineeringConsoleManager engineeringConsoleManager, AudioManager audio_manager) {
this.engineeringConsoleManager = engineeringConsoleManager;
this.audioManager = audio_manager;
Expand Down Expand Up @@ -147,26 +151,35 @@ private void loadInternalNodesAndDamconTeams() {
this.universe.addBranchGraph(damconBranchGroup);

this.engineeringConsoleManager.onEvent(Events.CHANGE, () -> {
this.dirty = true;
});

Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(() -> {
if (this.dirty) {
this.dirty = false;
this.doUpdate();
}
}, 0, 100, TimeUnit.MILLISECONDS);
}

private void doUpdate() {
for (Map.Entry<GridCoord, Float> entry : engineeringConsoleManager.getGridHealth().entrySet()) {
InternalNode node = internalNodes.get(entry.getKey());
node.updateHealth(entry.getValue());
}

for (Map.Entry<GridCoord, Float> entry : engineeringConsoleManager.getGridHealth().entrySet()) {
InternalNode node = internalNodes.get(entry.getKey());
node.updateHealth(entry.getValue());
}

for (EngineeringConsoleManager.EnhancedDamconStatus damconStatus : engineeringConsoleManager.getDamconTeams()) {
InternalTeam it = internalTeams.get(damconStatus.getTeamNumber());

if (it == null) {
it = new InternalTeam(damconStatus, audioManager);
internalTeams.put(damconStatus.getTeamNumber(), it);
nodesToSelectables.put(it.getShape(), it);
damconBranchGroup.addChild(it.getBranchGroup());
}
for (EngineeringConsoleManager.EnhancedDamconStatus damconStatus : engineeringConsoleManager.getDamconTeams()) {
InternalTeam it = internalTeams.get(damconStatus.getTeamNumber());

it.updatePos(damconStatus.getX(), damconStatus.getY(), damconStatus.getZ());
if (it == null) {
it = new InternalTeam(damconStatus, audioManager);
internalTeams.put(damconStatus.getTeamNumber(), it);
nodesToSelectables.put(it.getShape(), it);
damconBranchGroup.addChild(it.getBranchGroup());
}

});
it.updatePos(damconStatus.getX(), damconStatus.getY(), damconStatus.getZ());
}
}

private void loadCorridors() {
Expand Down

0 comments on commit 6075320

Please sign in to comment.