From: Stefan F. <ste...@us...> - 2010-03-03 00:45:26
|
Update of /cvsroot/rails/18xx/rails/game/move In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv3705/rails/game/move Added Files: SetChange.java Log Message: Added CorrectionMode - first part Cash Correction --- NEW FILE: SetChange.java --- /* $Header: /cvsroot/rails/18xx/rails/game/move/SetChange.java,v 1.1 2010/03/03 00:45:09 stefanfrey Exp $ * * Created on 19-Jul-2006 * Change Log: */ package rails.game.move; import java.util.Set; /** * This Move class handles the addition or removal of set elements * * @author Stefan Frey */ public class SetChange<E> extends Move { protected Set<E> set; protected E element; protected boolean addToSet; // false = remove protected boolean noChange; // if move did not change anything public SetChange(Set<E> set, E element, boolean addToSet) { this.set = set; this.element = element; this.addToSet = addToSet; noChange = !(set.contains(element) ^ addToSet); // xor MoveSet.add(this); } @Override public boolean execute() { if (noChange) return true; if (addToSet) set.add(element); else set.remove(element); return true; } @Override public boolean undo() { if (noChange) return true; if (addToSet) set.remove(element); else set.add(element); return true; } public String toString() { StringBuffer s = new StringBuffer("Set Change: "); if (noChange) s.append("No Change for element "+element); else if (addToSet) s.append("Added element "+element); else s.append("Removed element "+element); return s.toString(); } } |