[virtualcommons-svn] SF.net SVN: virtualcommons:[499] foraging/trunk/src/main
Status: Beta
Brought to you by:
alllee
From: <al...@us...> - 2010-03-31 00:58:55
|
Revision: 499 http://virtualcommons.svn.sourceforge.net/virtualcommons/?rev=499&view=rev Author: alllee Date: 2010-03-31 00:58:49 +0000 (Wed, 31 Mar 2010) Log Message: ----------- - fixed a number of bugs with sanction animation - implemented quiz feedback - updated configuration for upcoming experiment runs Modified Paths: -------------- foraging/trunk/src/main/java/edu/asu/commons/foraging/client/ClientDataModel.java foraging/trunk/src/main/java/edu/asu/commons/foraging/client/GameWindow2D.java foraging/trunk/src/main/java/edu/asu/commons/foraging/conf/RoundConfiguration.java foraging/trunk/src/main/java/edu/asu/commons/foraging/model/ClientData.java foraging/trunk/src/main/java/edu/asu/commons/foraging/server/ForagingServer.java foraging/trunk/src/main/resources/configuration/asu-experiments/voting-limitedvision/round0.xml foraging/trunk/src/main/resources/configuration/asu-experiments/voting-limitedvision/round4.xml foraging/trunk/src/main/resources/configuration/asu-experiments/voting-limitedvision/round5.xml foraging/trunk/src/main/resources/configuration/asu-experiments/voting-limitedvision/round6.xml Modified: foraging/trunk/src/main/java/edu/asu/commons/foraging/client/ClientDataModel.java =================================================================== --- foraging/trunk/src/main/java/edu/asu/commons/foraging/client/ClientDataModel.java 2010-03-30 02:00:29 UTC (rev 498) +++ foraging/trunk/src/main/java/edu/asu/commons/foraging/client/ClientDataModel.java 2010-03-31 00:58:49 UTC (rev 499) @@ -70,8 +70,10 @@ return Identifier.NULL; } + // FIXME: the logic here is getting complex, refactor later public boolean isSanctioningAllowed() { - return getClientData().isSanctioningAllowed() || isSanctioningEnabled(); + return groupDataModel.getActiveSanctionMechanism() == SanctionMechanism.EVERYBODY_CAN_SANCTION; +// && getClientData().isSanctioningAllowed() || isSanctioningEnabled(); } public boolean isHarvestingAllowed() { @@ -86,9 +88,6 @@ * public Map<Identifier, Duration> getSanctioned() { return sanctioned; } */ public void sanction(Identifier source, Identifier target) { - if (groupDataModel.getClientData(target).getCurrentTokens() < 2) { - return; - } Duration duration = Duration.create(getRoundConfiguration().getSanctionFlashDuration()); sanctioners.put(source, duration); sanctioned.put(target, duration); @@ -185,9 +184,6 @@ * hot-spot, 9% of time spent here. */ public void updateDiffs(ClientPositionUpdateEvent event, GameWindow2D window) { - if (event.getCurrentTokens() > currentTokens) { - window.collectToken(getClientData().getPosition()); - } currentTokens = event.getCurrentTokens(); groupDataModel.updateDiffs(event); handleRealTimeSanctions(event.getLatestSanctions()); @@ -210,16 +206,17 @@ } private synchronized void handleRealTimeSanctions(Queue<RealTimeSanctionRequest> latestSanctions) { - if (!getRoundConfiguration().isRealTimeSanctioningEnabled()) { - return; - } - for (RealTimeSanctionRequest sanctionEvent : latestSanctions) { - if (getId().equals(sanctionEvent.getTarget())) { +// if (!getRoundConfiguration().isRealTimeSanctioningEnabled()) { +// return; +// } + for (RealTimeSanctionRequest sanctionRequest : latestSanctions) { + System.err.println("Processing real time sanction: from " + sanctionRequest.getSource() + " to " + sanctionRequest.getTarget()); + sanction(sanctionRequest.getSource(), sanctionRequest.getTarget()); +// if (getId().equals(sanctionEvent.getTarget())) { // received a penalty, change colors for the duration of the // sanction. - sanction(sanctionEvent.getSource(), getId()); - - } +// sanction(sanctionEvent.getSource(), getId()); +// } } } Modified: foraging/trunk/src/main/java/edu/asu/commons/foraging/client/GameWindow2D.java =================================================================== --- foraging/trunk/src/main/java/edu/asu/commons/foraging/client/GameWindow2D.java 2010-03-30 02:00:29 UTC (rev 498) +++ foraging/trunk/src/main/java/edu/asu/commons/foraging/client/GameWindow2D.java 2010-03-31 00:58:49 UTC (rev 499) @@ -16,10 +16,15 @@ import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStreamReader; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.Enumeration; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -42,6 +47,8 @@ import javax.swing.text.StyleConstants; import javax.swing.text.StyleContext; import javax.swing.text.StyledDocument; +import javax.swing.text.html.HTMLEditorKit; +import javax.swing.text.html.StyleSheet; import edu.asu.commons.event.Event; import edu.asu.commons.event.EventChannel; @@ -136,7 +143,8 @@ subjectView = new SubjectView(subjectViewSize, dataModel); // subjectView.addKeyListener(this); this.currentRankingInformation = new int [2]; - this.currentRankingInformation[0] = this.currentRankingInformation[1] = -1; + Arrays.fill(currentRankingInformation, -1); +// this.currentRankingInformation[0] = this.currentRankingInformation[1] = -1; initGuiComponents(); } @@ -226,32 +234,39 @@ Collections.sort(correctAnswers); StringBuilder builder = new StringBuilder().append(instructionsBuilder); + HTMLEditorKit editorKit = (HTMLEditorKit) instructionsEditorPane.getEditorKit(); + StyleSheet styleSheet = editorKit.getStyleSheet(); + + StringBuilder correctString = new StringBuilder(); - if (!correctAnswers.isEmpty()) { - correctString.append("<br>Correctly answered questions"); - for (Iterator<String> itr = correctAnswers.iterator(); itr.hasNext();) { - String correctSelected = itr.next(); - String correctValue = configuration.getQuizAnswers().get(correctSelected); - correctString.append("<br>"+correctSelected+": Option "+correctValue); + if (! correctAnswers.isEmpty()) { + correctString.append("<h3>Correctly answered questions</h3><ul>"); + for (String correctQuestionNumber : correctAnswers) { + String styleString = String.format(".%s { color: black; }", correctQuestionNumber); + styleSheet.addRule(styleString); + correctString.append(String.format("<li>Your answer, [ %s ] was correct for question %s.", + actualAnswers.get(correctQuestionNumber), + correctQuestionNumber)); } - correctString.append("<br>"); + correctString.append("</ul>"); } - StringBuilder incorrectString = new StringBuilder(); - incorrectString.append("<br>Incorrectly answered questions"); - for (Iterator<String> itr = incorrectAnswers.iterator(); itr.hasNext();) { - String incorrectSelected = itr.next(); - incorrectString.append("<br>"+incorrectSelected); + correctString.append("<h3>Incorrectly answered questions</h3><ul>"); + for (String incorrectQuestionNumber : incorrectAnswers) { + String styleString = String.format(".%s { color: red; }", incorrectQuestionNumber); + styleSheet.addRule(styleString); + correctString.append(String.format("<li>Your answer [ %s ] was incorrect for question %s.", + actualAnswers.get(incorrectQuestionNumber), + incorrectQuestionNumber)); } - incorrectString.append("<br>"); - - builder.append("<br><b><font color='red'>"+correctString.toString()+incorrectString.toString()+".<br> Please select again and resubmit.</font></b>"); + correctString.append("</ul>"); + builder.append(correctString); setInstructions(builder.toString()); } } }; } - + /** * Invoked when a subject collected a token at Point p. * @@ -616,7 +631,7 @@ // System.out.println("sanctioning event sent"); event = new RealTimeSanctionRequest(dataModel.getId(), sanctionee); // below function must be used for enforcement type4 - dataModel.sanction(dataModel.getId(), sanctionee); +// dataModel.sanction(dataModel.getId(), sanctionee); } else { displayErrorMessage("The participant is out of range ", 1); @@ -859,10 +874,9 @@ public void displaySanctionMechanism() { SwingUtilities.invokeLater(new Runnable() { public void run() { - System.out.println("Inside display sanction"); instructionsBuilder.delete(0, instructionsBuilder.length()); - instructionsBuilder.append("<hr/><h2>Sanction choice voted : </h2><hr/><p>").append(dataModel.getActiveSanctionMechanism().getDescription()).append("</p>"); - instructionsBuilder.append("<hr/><h2>Active enforcement mechanism</h2><hr/><p>").append(dataModel.getActiveEnforcementMechanism().getDescription()).append("</p>"); + instructionsBuilder.append("<h2>Your group voted for the following enforcement mechanism: </h2><hr/><p>").append(dataModel.getActiveSanctionMechanism().getDescription()).append("</p>"); +// instructionsBuilder.append("<hr/><h2>Active enforcement mechanism</h2><hr/><p>").append(dataModel.getActiveEnforcementMechanism().getDescription()).append("</p>"); setInstructions(instructionsBuilder.toString()); addCenterComponent(instructionsScrollPane); } @@ -981,9 +995,9 @@ JPanel rankPanel = new JPanel(); rankPanel.setBackground(Color.WHITE); rankPanel.setLayout(new BoxLayout (rankPanel, BoxLayout.Y_AXIS)); - rankPanel.setBorder(BorderFactory.createTitledBorder("Voting Options")); + rankPanel.setBorder(BorderFactory.createTitledBorder("Voting")); - JLabel sanctionText = new JLabel("Please select one of the below voting options"); + JLabel sanctionText = new JLabel("Please select one of the options below: "); rankPanel.add(Box.createVerticalStrut(5)); @@ -991,7 +1005,7 @@ rankPanel.add(Box.createVerticalStrut(8)); - noSanction = new JRadioButton("No Sanctioning [No one can sanction/reduce tokens]"); + noSanction = new JRadioButton("No penalties [No one can subtract tokens from anyone]"); noSanction.setActionCommand("0"); group.add(noSanction); noSanction.addActionListener(this); @@ -999,7 +1013,7 @@ rankPanel.add(Box.createVerticalStrut(8)); - sanction = new JRadioButton("Allow Sanctioning [Everyone can sanction each other]"); + sanction = new JRadioButton("Allow penalties [Everyone can subtract tokens from each other]"); sanction.setActionCommand("1"); group.add(sanction); sanction.addActionListener(this); Modified: foraging/trunk/src/main/java/edu/asu/commons/foraging/conf/RoundConfiguration.java =================================================================== --- foraging/trunk/src/main/java/edu/asu/commons/foraging/conf/RoundConfiguration.java 2010-03-30 02:00:29 UTC (rev 498) +++ foraging/trunk/src/main/java/edu/asu/commons/foraging/conf/RoundConfiguration.java 2010-03-31 00:58:49 UTC (rev 499) @@ -316,7 +316,7 @@ } public int getChatDuration() { - return getIntProperty("chat-duration", 120); + return getIntProperty("chat-duration", 240); } public int getSanctionVotingDuration() { @@ -344,7 +344,11 @@ } public String getSanctionInstructions() { - return getProperty("sanction-instructions","<h2>Please read the below mentioned instructions</h2>.<ul> <li> Please make your choice within the next 30 seconds. <li>The votes of all group participants will determine the outcome.</ul>"); + return getProperty("sanction-instructions","<h2>Voting instructions</h2>" + + "<ul> " + + "<li> You must make a choice within the next 30 seconds. " + + "<li>The votes of all participants in your group will determine the outcome." + + "</ul>"); } public boolean isAlwaysInExplicitCollectionMode() { Modified: foraging/trunk/src/main/java/edu/asu/commons/foraging/model/ClientData.java =================================================================== --- foraging/trunk/src/main/java/edu/asu/commons/foraging/model/ClientData.java 2010-03-30 02:00:29 UTC (rev 498) +++ foraging/trunk/src/main/java/edu/asu/commons/foraging/model/ClientData.java 2010-03-31 00:58:49 UTC (rev 499) @@ -249,6 +249,10 @@ } } + /** + * Returns a queue of sanction requests that have been most recently applied to this client. + * @return + */ public Queue<RealTimeSanctionRequest> getLatestSanctions() { return latestSanctions; } Modified: foraging/trunk/src/main/java/edu/asu/commons/foraging/server/ForagingServer.java =================================================================== --- foraging/trunk/src/main/java/edu/asu/commons/foraging/server/ForagingServer.java 2010-03-30 02:00:29 UTC (rev 498) +++ foraging/trunk/src/main/java/edu/asu/commons/foraging/server/ForagingServer.java 2010-03-31 00:58:49 UTC (rev 499) @@ -278,11 +278,11 @@ public void handle(final EnforcementRankingRequest request) { logger.info("received enforcement ranking request: " + Arrays.asList(request.getRankings())); GroupDataModel group = serverDataModel.getGroup(request.getId()); - group.submitEnforcementRanking(request); - if (group.hasReceivedAllEnforcementRankings()) { - sendEnforcementUpdate(group); - } - // FIXME: this is duplicated. +// group.submitEnforcementRanking(request); +// if (group.hasReceivedAllEnforcementRankings()) { +// sendEnforcementUpdate(group); +// } + // FIXME: this is duplicated with above logic, fix later group.submitSanctionRanking(request); if (group.hasReceivedAllSanctionRankings()) { sendSanctionRankingUpdate(group); @@ -506,6 +506,7 @@ // monitors don't get any sanction costs. targetClient.sanctionPenalty(); // add sanction request to the target client so they can figure out who just sanctioned them + sourceClient.getLatestSanctions().add(request); targetClient.getLatestSanctions().add(request); transmit(new ClientMessageEvent(sourceClient.getId(), String.format("Subtracting %d tokens from # %d at the cost of 0 to yourself." , @@ -613,27 +614,31 @@ return; } sourceClient.sanctionCost(); + int sanctionCost = getCurrentRoundConfiguration().getSanctionCost(); int subtractedTokens = targetClient.sanctionPenalty(); // generate sanction applied event SanctionAppliedEvent sanctionAppliedEvent = new SanctionAppliedEvent(sourceClient.getId()); // the sanction cost should always be set since the client should prevent any sanction requests from being emitted // if the user doesn't have enough tokens to issue the request. - sanctionAppliedEvent.setSanctionCost(getCurrentRoundConfiguration().getSanctionCost()); + sanctionAppliedEvent.setSanctionCost(sanctionCost); // the sanction penalty may be in the range [1, RoundConfiguration.getSanctionPenalty()] - // if target has less than the actual sanction penalty they just get their tokens reduced to 0. sanctionAppliedEvent.setSanctionPenalty(subtractedTokens); sanctionAppliedEvent.setTarget(targetClient.getId()); persister.store(sanctionAppliedEvent); - // add sanction request to the target client so they can figure out who just sanctioned them + sourceClient.getLatestSanctions().add(request); targetClient.getLatestSanctions().add(request); + logger.info("target client " + targetClient.getId() + " has sanctions: " + targetClient.getLatestSanctions()); transmit(new ClientMessageEvent(sourceClient.getId(), String.format("Subtracting %d tokens from # %d at the cost of %d to yourself." , - getCurrentRoundConfiguration().getSanctionPenalty(), + subtractedTokens, targetClient.getAssignedNumber(), - getCurrentRoundConfiguration().getSanctionCost()))); + sanctionCost))); transmit(new ClientMessageEvent(targetClient.getId(), - String.format("# %d subtracted %d tokens from you.", sourceClient.getAssignedNumber(), getCurrentRoundConfiguration().getSanctionPenalty()))); + String.format("# %d subtracted %d tokens from you.", + sourceClient.getAssignedNumber(), + subtractedTokens))); } private void initializeFacilitatorHandlers() { @@ -684,7 +689,7 @@ // set up the Client Group relationships ONLY IF we are in the first round... // kind of a hack. shuffleParticipants(); - initializeRound(); + initializeResourceDispenser(); } logger.info("Begin round request from facilitator - starting round."); experimentStarted = true; @@ -714,6 +719,11 @@ addEventProcessor(new EventTypeProcessor<BeginChatRoundRequest>(BeginChatRoundRequest.class) { public void handle(BeginChatRoundRequest request) { if (getCurrentRoundConfiguration().isChatEnabled()) { + + if (getCurrentRoundConfiguration().isFirstRound()) { + shuffleParticipants(); + initializeResourceDispenser(); + } // FIXME: need to handle properly corner case where chat is enabled before the first round // at that point the clients haven't been added to any groups yet. @@ -784,9 +794,11 @@ Utils.sleep(SERVER_SLEEP_INTERVAL); break; case WAITING: - // initialize the round so that - // the persister is set up for this next round. + // initialize persister first so we store all relevant events. + // persister MUST be initialized early so that we store pre-round events like QuizResponseEvent, ChatEvent, and the various Ranking requests. initializeRound(); + + getLogger().info("Round is initialized: now waiting for facilitator signal to start next round."); if (getCurrentRoundConfiguration().isQuizEnabled()) { getLogger().info("Waiting for all quizzes to be submitted."); @@ -979,12 +991,11 @@ } private void initializeRound() { - // pre-round initialization - // current round configuration should be set. - RoundConfiguration roundConfiguration = getCurrentRoundConfiguration(); - // initialize persister first so we store all relevant events. - // persister MUST be initialized early so that we store AddClientEvents etc.. - persister.initialize(roundConfiguration); + persister.initialize(getCurrentRoundConfiguration()); + initializeResourceDispenser(); + } + + private void initializeResourceDispenser() { // set up the resource dispenser, generates the initial resource distributions for the // groups, must be done after creating the client group relationships. resourceDispenser.initialize(); Modified: foraging/trunk/src/main/resources/configuration/asu-experiments/voting-limitedvision/round0.xml =================================================================== --- foraging/trunk/src/main/resources/configuration/asu-experiments/voting-limitedvision/round0.xml 2010-03-30 02:00:29 UTC (rev 498) +++ foraging/trunk/src/main/resources/configuration/asu-experiments/voting-limitedvision/round0.xml 2010-03-31 00:58:49 UTC (rev 499) @@ -46,17 +46,16 @@ </p> <br> <form> -Which of the statements is <b><u>incorrect</u></b>? <br> -<input type="radio" name="q1" value="A">Your decisions of where to collect tokens affects the regeneration of tokens.<br> -<input type="radio" name="q1" value="B">When you have collected all tokens on -the screen, no new tokens will appear.<br> -<input type="radio" name="q1" value="C">Tokens grow from the middle of the +<span class='q1'>Q1. Which of the statements is <b><u>incorrect</u></b>?</span> <br> +<input type="radio" name="q1" value="A">A. Your decisions of where to collect tokens affects the regeneration of tokens.<br> +<input type="radio" name="q1" value="B">B. When you have collected all tokens on the screen, no new tokens will appear.<br> +<input type="radio" name="q1" value="C">C. Tokens grow from the middle of the screen.<br> -<input type="radio" name="q1" value="D">In order to collect a token you need +<input type="radio" name="q1" value="D">D. In order to collect a token you need to press the space bar while your yellow dot <img src="@CODEBASE_URL@/images/gem-self.gif"> is on a cell with a token.<br> <br><br> -Which sequence of situations is not possible? <br> +<span class='q2'>Q2. Which sequence of situations is not possible?</span> <br> <img src="@CODEBASE_URL@/images/question2.jpg"><br> <input type="radio" name="q2" value="A">A<br> <input type="radio" name="q2" value="B">B<br> Modified: foraging/trunk/src/main/resources/configuration/asu-experiments/voting-limitedvision/round4.xml =================================================================== --- foraging/trunk/src/main/resources/configuration/asu-experiments/voting-limitedvision/round4.xml 2010-03-30 02:00:29 UTC (rev 498) +++ foraging/trunk/src/main/resources/configuration/asu-experiments/voting-limitedvision/round4.xml 2010-03-31 00:58:49 UTC (rev 499) @@ -17,7 +17,6 @@ <!-- before this round begins, we have a chat session --> <entry key="chat-enabled">true</entry> -<entry key="chat-duration">240</entry> <!-- enable sanctioning --> <entry key="sanction-type">real-time</entry> @@ -29,10 +28,10 @@ <!-- enable quiz --> <entry key='quiz'>true</entry> -<entry key='q1'>1</entry> -<entry key='q2'>2</entry> -<entry key='q3'>1</entry> -<entry key='q4'>1</entry> +<entry key='q1'>B</entry> +<entry key='q2'>C</entry> +<entry key='q3'>B</entry> +<entry key='q4'>B</entry> <entry key="instructions"> <![CDATA[ @@ -114,39 +113,39 @@ </p> <form> -Each time I press the numeric keys between 1-5 my tokens will be reduced -by:<br> -<input type="radio" name="q1" value="0">0 tokens<br> -<input type="radio" name="q1" value="1">1 token<br> -<input type="radio" name="q1" value="2">2 tokens<br> -<input type="radio" name="q1" value="4">4 tokens<br> +<span class='q1'>Q1. Each time I press the numeric keys between 1-5 my tokens will be reduced +by:</span><br> +<input type="radio" name="q1" value="A">A. 0 tokens<br> +<input type="radio" name="q1" value="B">B. 1 token<br> +<input type="radio" name="q1" value="C">C. 2 tokens<br> +<input type="radio" name="q1" value="D">D. 4 tokens<br> <br><br> -Each time I press the numeric keys between 1-5 the number of tokens of the -corresponding participant is reduced by:<br> -<input type="radio" name="q2" value="0">0 tokens<br> -<input type="radio" name="q2" value="1">1 token<br> -<input type="radio" name="q2" value="2">2 tokens<br> -<input type="radio" name="q2" value="4">4 tokens<br> +<span class='q2'>Q2. Each time I press the numeric keys between 1-5 the number of tokens of the +corresponding participant is reduced by:</span><br> +<input type="radio" name="q2" value="A">A. 0 tokens<br> +<input type="radio" name="q2" value="B">B. 1 token<br> +<input type="radio" name="q2" value="C">C. 2 tokens<br> +<input type="radio" name="q2" value="D">D. 4 tokens<br> <br><br> -The background of your yellow dot <img src="@CODEBASE_URL@/images/gem-self.gif"> turns blue. What does this represent?<br> -<input type="radio" name="q3" value="0">You collected a token<br> -<input type="radio" name="q3" value="1">Another participant is subtracting two +<span class='q3'>Q3. The background of your yellow dot <img src="@CODEBASE_URL@/images/gem-self.gif"> turns blue. What does this represent?</span><br> +<input type="radio" name="q3" value="A">A. You collected a token<br> +<input type="radio" name="q3" value="B">B. Another participant is subtracting two tokens from you<br> -<input type="radio" name="q3" value="2">You are subtracting two tokens from another +<input type="radio" name="q3" value="C">C. You are subtracting two tokens from another participant<br> -<input type="radio" name="q3" value="3">You are moving too fast<br> +<input type="radio" name="q3" value="D">D. You are moving too fast<br> <br><br> -Every time I press the numeric keys between 1-5:<br> -<input type="radio" name="q4" value="0">Two tokens are subtracted from my tokens +<span class='q4'>Q4. Every time I press the numeric keys between 1-5:</span><br> +<input type="radio" name="q4" value="A">A. Two tokens are subtracted from my tokens collected this round<br> -<input type="radio" name="q4" value="1">One token is subtracted from my tokens +<input type="radio" name="q4" value="B">B. One token is subtracted from my tokens collected this round<br> -<input type="radio" name="q4" value="2">The background of my yellow dot <img src="@CODEBASE_URL@/images/gem-self.gif"> turns blue +<input type="radio" name="q4" value="C">C. The background of my yellow dot <img src="@CODEBASE_URL@/images/gem-self.gif"> turns blue momentarily<br> -<input type="radio" name="q4" value="3">My yellow dot <img src="@CODEBASE_URL@/images/gem-self.gif"> is paused for two seconds<br> +<input type="radio" name="q4" value="D">D. My yellow dot <img src="@CODEBASE_URL@/images/gem-self.gif"> is paused for two seconds<br> <input type="submit" name="submit" value="Submit"> </form> Modified: foraging/trunk/src/main/resources/configuration/asu-experiments/voting-limitedvision/round5.xml =================================================================== --- foraging/trunk/src/main/resources/configuration/asu-experiments/voting-limitedvision/round5.xml 2010-03-30 02:00:29 UTC (rev 498) +++ foraging/trunk/src/main/resources/configuration/asu-experiments/voting-limitedvision/round5.xml 2010-03-31 00:58:49 UTC (rev 499) @@ -24,7 +24,6 @@ <!-- before this round begins, we have a chat session --> <entry key="chat-enabled">true</entry> -<entry key="chat-duration">240</entry> <entry key="instructions"> <![CDATA[ Modified: foraging/trunk/src/main/resources/configuration/asu-experiments/voting-limitedvision/round6.xml =================================================================== --- foraging/trunk/src/main/resources/configuration/asu-experiments/voting-limitedvision/round6.xml 2010-03-30 02:00:29 UTC (rev 498) +++ foraging/trunk/src/main/resources/configuration/asu-experiments/voting-limitedvision/round6.xml 2010-03-31 00:58:49 UTC (rev 499) @@ -22,7 +22,6 @@ <!-- before this round begins, we have a chat session --> <entry key="chat-enabled">true</entry> -<entry key="chat-duration">240</entry> <entry key="instructions"> <![CDATA[ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |