Update of /cvsroot/rails/18xx/rails/game/correct In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv2993/rails/game/correct Modified Files: CorrectionModeAction.java CorrectionAction.java CashCorrectionManager.java CashCorrectionAction.java CorrectionManager.java Log Message: Improved GUI support for cash corrections and some refactoring of the corrections package. Index: CorrectionAction.java =================================================================== RCS file: /cvsroot/rails/18xx/rails/game/correct/CorrectionAction.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** CorrectionAction.java 3 Mar 2010 00:44:28 -0000 1.4 --- CorrectionAction.java 8 Mar 2010 20:33:21 -0000 1.5 *************** *** 11,19 **** public abstract class CorrectionAction extends PossibleAction { ! private CorrectionType correctionType; public CorrectionType getCorrectionType() { return correctionType; } public void setCorrectionType(CorrectionType correctionType) { this.correctionType = correctionType; --- 11,25 ---- public abstract class CorrectionAction extends PossibleAction { ! transient protected CorrectionType correctionType; ! protected String correctionName; public CorrectionType getCorrectionType() { return correctionType; } + + public String getCorrectionName() { + return correctionName; + } + public void setCorrectionType(CorrectionType correctionType) { this.correctionType = correctionType; Index: CashCorrectionAction.java =================================================================== RCS file: /cvsroot/rails/18xx/rails/game/correct/CashCorrectionAction.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** CashCorrectionAction.java 3 Mar 2010 00:44:28 -0000 1.1 --- CashCorrectionAction.java 8 Mar 2010 20:33:21 -0000 1.2 *************** *** 110,113 **** --- 110,117 ---- ClassNotFoundException { in.defaultReadObject(); + + if (Util.hasValue(correctionName)) + correctionType = CorrectionType.valueOf(correctionName); + if (Util.hasValue(cashHolderType) && Util.hasValue(cashHolderName)) { if (cashHolderType.equals("Player")) Index: CashCorrectionManager.java =================================================================== RCS file: /cvsroot/rails/18xx/rails/game/correct/CashCorrectionManager.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** CashCorrectionManager.java 3 Mar 2010 00:44:32 -0000 1.1 --- CashCorrectionManager.java 8 Mar 2010 20:33:21 -0000 1.2 *************** *** 3,6 **** --- 3,8 ---- import rails.game.*; import rails.game.move.CashMove; + import rails.game.move.StateChange; + import rails.game.state.BooleanState; import rails.util.*; import java.util.*; *************** *** 8,36 **** public final class CashCorrectionManager implements CorrectionManager { private GameManager gameManager; ! private CashCorrectionManager() { } public static CorrectionManager getInstance(GameManager gm) { ! CashCorrectionManager manager = new CashCorrectionManager(); ! manager.gameManager = gm; ! return manager; } public List<CorrectionAction> createCorrections() { List<CorrectionAction> actions = new ArrayList<CorrectionAction>(); ! List<Player> players = gameManager.getPlayers(); ! for(Player pl:players){ ! actions.add(new CashCorrectionAction(pl)); ! } ! List<PublicCompanyI> publicCompanies = gameManager.getAllPublicCompanies(); ! for(PublicCompanyI pc:publicCompanies){ ! if (pc.hasFloated()) ! actions.add(new CashCorrectionAction(pc)); } ! return actions; } --- 10,53 ---- public final class CashCorrectionManager implements CorrectionManager { + private static CashCorrectionManager ccm; + private GameManager gameManager; ! ! private BooleanState active; ! private CashCorrectionManager() { } public static CorrectionManager getInstance(GameManager gm) { ! if (ccm == null) { ! ccm = new CashCorrectionManager(); ! ccm.gameManager = gm; ! ccm.active = new BooleanState("CASH_CORRECT", false); ! } ! return ccm; } + public boolean isActive(){ + return active.booleanValue(); + } + + public List<CorrectionAction> createCorrections() { List<CorrectionAction> actions = new ArrayList<CorrectionAction>(); ! if (isActive()) { ! List<Player> players = gameManager.getPlayers(); ! for(Player pl:players){ ! actions.add(new CashCorrectionAction(pl)); ! } ! List<PublicCompanyI> publicCompanies = gameManager.getAllPublicCompanies(); ! for(PublicCompanyI pc:publicCompanies){ ! if (pc.hasFloated() && !pc.isClosed()) ! actions.add(new CashCorrectionAction(pc)); ! } } ! actions.add(new CorrectionModeAction(CorrectionType.CORRECT_CASH, isActive())); ! return actions; } *************** *** 40,44 **** boolean result = false; ! if (action instanceof CashCorrectionAction) { CashCorrectionAction cashAction=(CashCorrectionAction)action; --- 57,80 ---- boolean result = false; ! if (action instanceof CorrectionModeAction) { ! gameManager.getMoveStack().start(false); ! if (!isActive()) { ! String text = LocalText.getText("CorrectionModeActivate", ! gameManager.getCurrentPlayer().getName(), ! LocalText.getText("CORRECT_CASH") ! ); ! ReportBuffer.add(text); ! DisplayBuffer.add(text); ! } ! else { ! ReportBuffer.add(LocalText.getText("CorrectionModeDeactivate", ! gameManager.getCurrentPlayer().getName(), ! LocalText.getText("CORRECT_CASH")) ! ); ! } ! new StateChange(active, !isActive()); ! ! result = true; ! } else if (action instanceof CashCorrectionAction) { CashCorrectionAction cashAction=(CashCorrectionAction)action; *************** *** 48,51 **** --- 84,93 ---- String errMsg = null; + while (true) { + if (amount == 0 ) { + errMsg = + LocalText.getText("CorrectCashZero"); + break; + } if ((amount + ch.getCash()) < 0) { errMsg = *************** *** 55,58 **** --- 97,103 ---- Bank.format(-amount) ); + break; + } + break; } Index: CorrectionModeAction.java =================================================================== RCS file: /cvsroot/rails/18xx/rails/game/correct/CorrectionModeAction.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** CorrectionModeAction.java 3 Mar 2010 00:44:28 -0000 1.1 --- CorrectionModeAction.java 8 Mar 2010 20:33:17 -0000 1.2 *************** *** 14,25 **** */ ! public class CorrectionModeAction extends PossibleAction { public static final long serialVersionUID = 1L; ! // pre-conditions: type and state ! transient protected CorrectionType correction; ! protected String correctionName; ! protected boolean active; --- 14,22 ---- */ ! public class CorrectionModeAction extends CorrectionAction { public static final long serialVersionUID = 1L; ! // pre-conditions: state protected boolean active; *************** *** 30,45 **** */ public CorrectionModeAction(CorrectionType correction, boolean active) { ! this.correction = correction; correctionName = correction.name(); this.active = active; } - - public CorrectionType getCorrection() { - return correction; - } - - public String getCorrectionName() { - return correctionName; - } public boolean isActive() { --- 27,34 ---- */ public CorrectionModeAction(CorrectionType correction, boolean active) { ! this.correctionType = correction; correctionName = correction.name(); this.active = active; } public boolean isActive() { *************** *** 55,59 **** if (!(action instanceof CorrectionModeAction)) return false; CorrectionModeAction a = (CorrectionModeAction) action; ! return (a.correction == this.correction && a.active == this.active); } --- 44,48 ---- if (!(action instanceof CorrectionModeAction)) return false; CorrectionModeAction a = (CorrectionModeAction) action; ! return (a.correctionType == this.correctionType && a.active == this.active); } *************** *** 63,73 **** if (!acted) { b.append(" (not acted)"); ! if (correction != null) ! b.append(", correction="+correction); b.append(", current state="+active); } else { b.append(" (acted)"); ! if (correction != null) ! b.append(", correction="+correction); b.append(", previous state="+active); } --- 52,62 ---- if (!acted) { b.append(" (not acted)"); ! if (correctionType != null) ! b.append(", correctionType="+correctionType); b.append(", current state="+active); } else { b.append(" (acted)"); ! if (correctionType != null) ! b.append(", correctionType="+correctionType); b.append(", previous state="+active); } *************** *** 80,84 **** in.defaultReadObject(); if (Util.hasValue(correctionName)) ! correction = CorrectionType.valueOf(correctionName); } --- 69,73 ---- in.defaultReadObject(); if (Util.hasValue(correctionName)) ! correctionType = CorrectionType.valueOf(correctionName); } Index: CorrectionManager.java =================================================================== RCS file: /cvsroot/rails/18xx/rails/game/correct/CorrectionManager.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** CorrectionManager.java 3 Mar 2010 00:44:28 -0000 1.1 --- CorrectionManager.java 8 Mar 2010 20:33:21 -0000 1.2 *************** *** 13,16 **** --- 13,18 ---- public interface CorrectionManager { + public boolean isActive(); + public List<CorrectionAction> createCorrections(); |