public class Main extends Experiment { |
Vector<MyMonitoring> monitoredPlayers; |
private boolean isMonitoring; |
public Main(ExperimentDescriptor descriptor, UTServer server) { |
super(descriptor, server); } |
@Override |
protected void stageOneInit() throws Exception { |
monitorPlayingPlayers(); } |
@Override |
protected void stageOneInit() throws Exception { |
getLogger().info("Experiment started."); |
if (isMonitoring) { |
createControlPanel(); //Small panel to stop the experiment |
//Wait for all monitored player to stop playing (or an error occurs |
//in the monitoring) |
Iterator<MyMonitoring> iter monitoredPlayers.iterator(); |
while (iter.hasNext()) { |
iter.next().getSemaEndMonitor().acquire(); }} |
setResultAndTerminate(new ExperimentResult()); } |
private void monitorPlayingPlayers() throws PogamutException { |
Set<Player> players getServer().getInfo().getPlayers(); |
if (players ! null && !players.isEmpty()) { |
Iterator<Player> iter players.iterator(); |
monitoredPlayers new Vector<MyMonitoring>(); |
while (iter.hasNext()) { |
Player player iter.next(); |
MyMonitoring theMonitoredPlayer |
new MyMonitoring(player.UnrealID); |
getServer().monitorPlayer(theMonitoredPlayer); |
monitoredPlayers.add(theMonitoredPlayer); |
isMonitoring true; }}} |
@Override |
protected void stageThreeFinish() { |
getLogger().info("Experiment finished."); |
if (isMonitoring) { |
Iterator<MyMonitoring> iter = monitoredPlayers.iterator(); |
while (iter.hasNext()) { |
MyMonitoring plr iter.next(); |
plr.disconnect(); }}} |
private void createControlPanel() { |
final JFrame frame new JFrame(); |
JButton stopButton new JButton("Stop"); |
stopButton.addActionListener(new ActionListener() { |
public void actionPerformed(ActionEvent arg0) { |
Iterator<MyMonitoring> iter monitoredPlayers.iterator(); |
while (iter.hasNext()) { |
MyMonitoring plr iter.next(); |
plr.saveData(); |
plr.getSemaEndMonitor().release();} |
frame.dispose(); }}); |
frame.add(stopButton); |
frame.setPreferredSize(new Dimension(200, 75)); |
frame.setVisible(true); |
frame.pack(); } |
public static void main(String args) {}} |