Update of /cvsroot/rails/18xx/rails/game/state
In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv4652/rails/game/state
Added Files:
GenericState.java
Log Message:
Fix of the undo tile lay bug (ID : 2954642, 2954984) After undo the number of tile lays is not updated correctly. TileLaysPerColour is state variable. Adds GenericState class.
--- NEW FILE: GenericState.java ---
/* $Header: /cvsroot/rails/18xx/rails/game/state/GenericState.java,v 1.1 2010/02/26 08:04:17 stefanfrey Exp $*/
package rails.game.state;
import rails.game.model.ModelObject;
import rails.game.move.StateChange;
public final class GenericState<E> extends ModelObject implements StateI {
private String stateName;
private E stateObject;
public GenericState(String name, E object) {
stateName = name;
if (object == null) {
new Exception("NULL object not allowed in creating State wrapper").printStackTrace();
} else {
stateObject = object;
}
}
public void set(E object, boolean forced) {
if (object == null) {
if (stateObject != null) new StateChange(this, object);
} else if (!object.equals(stateObject) || forced)
new StateChange(this, object);
}
public void set(E object) {
set(object, false);
}
public void setForced(E object) {
set(object, true);
}
public E getObject() {
return stateObject;
}
/** Must only be called by the Move execute() and undo() methods */
public void setState(Object object) {
@SuppressWarnings("unchecked") E objE = (E)object;
stateObject = objE;
update();
}
public String getName() {
return stateName;
}
@Override
public String getText() {
if (stateObject != null) {
return stateObject.toString();
} else {
return "";
}
}
@Override
public String toString() {
return stateName;
}
}
|