package de.lighti.parsing; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultListModel; import javax.swing.JOptionPane; import de.lighti.DefaultGameEventListener; import de.lighti.Dotalys2App; import de.lighti.model.Statics; import de.lighti.model.game.Player; import de.lighti.model.state.ParseState; public class GeneralGameStateTracker extends DefaultGameEventListener { private final Dotalys2App app; public GeneralGameStateTracker( Dotalys2App app ) { this.app = app; } @Override public void parseComplete( long tickMs, ParseState state ) { if (state.getProtocolVersion() > Statics.SUPPORTED_PROTOCOL_VERSION) { JOptionPane.showMessageDialog( app, Statics.PROTOCOL_WARNING, Statics.WARNING, JOptionPane.WARNING_MESSAGE ); } app.getAppState().setMsPerTick( (int) (state.getTickInterval() * 1000) ); //Unhandled PlayerVariables final DefaultComboBoxModel<String> model = (DefaultComboBoxModel<String>) app.getHistogramComponent().getAttributeBox().getModel(); for (final String s : app.getAppState().getUnhandledPlayerVariableNames()) { model.addElement( s ); } //Players final DefaultListModel<String> playerHistogramModel = (DefaultListModel<String>) app.getHistogramComponent().getPlayerBox().getModel(); final DefaultComboBoxModel<String> playerModel = (DefaultComboBoxModel<String>) app.getPlayerComponent().getPlayerBox().getModel(); final List<Player> sortedPlayers = new ArrayList<Player>( app.getAppState().getPlayers() ); Collections.sort( sortedPlayers, new Comparator<Player>() { @Override public int compare( Player o1, Player o2 ) { return Integer.compare( o1.getId(), o2.getId() ); } } ); for (final Player p : sortedPlayers) { playerHistogramModel.addElement( p.getName() ); playerModel.addElement( p.getName() ); } app.getMapComponent().buildTreeNodes( sortedPlayers ); //Now fire up the application app.getMainView().setEnabled( true ); } }