|
From: Stefan F. <ste...@us...> - 2012-07-08 20:59:31
|
src/rails/game/OperatingRound.java | 12 +-----------
src/rails/game/model/PresidentModel.java | 11 +++--------
src/rails/game/state/Observer.java | 12 ++----------
src/rails/ui/swing/GridPanel.java | 22 ++++++++--------------
src/rails/ui/swing/elements/Field.java | 18 ++++--------------
src/rails/ui/swing/elements/GUIStockSpace.java | 22 +---------------------
src/rails/ui/swing/hexmap/GUIHex.java | 15 +--------------
7 files changed, 20 insertions(+), 92 deletions(-)
New commits:
commit 39169f9f7195e3b705d712780d589fa26dea3a39
Author: Stefan Frey <ste...@we...>
Date: Sun Jul 8 22:59:08 2012 +0200
started rethinking the Observer interface
diff --git a/src/rails/game/OperatingRound.java b/src/rails/game/OperatingRound.java
index 4e2c305..50becdd 100644
--- a/src/rails/game/OperatingRound.java
+++ b/src/rails/game/OperatingRound.java
@@ -3124,7 +3124,7 @@ public class OperatingRound extends Round implements Observer {
/**
* Update the status if the step has changed by an Undo or Redo
*/
- public void update() {
+ public void update(Observable observable, String text) {
prepareStep();
}
@@ -3144,14 +3144,4 @@ public class OperatingRound extends Round implements Observer {
return toString();
}
- // Observer Interface
- public Observable getObservable() {
- return stepObject;
- }
-
- public boolean deRegister() {
- if (stepObject == null) return false;
- return stepObject.removeObserver(this);
- }
-
}
\ No newline at end of file
diff --git a/src/rails/game/model/PresidentModel.java b/src/rails/game/model/PresidentModel.java
index 442385d..0f7cbb4 100644
--- a/src/rails/game/model/PresidentModel.java
+++ b/src/rails/game/model/PresidentModel.java
@@ -43,14 +43,9 @@ public final class PresidentModel extends Model implements Observer {
else return company.getPresident().getNameAndPriority();
}
- public Observable getObservable() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public boolean deRegister() {
- // TODO Auto-generated method stub
- return false;
+ // FIXME: Add code what to do here
+ public void update(Observable observable, String text) {
+
}
}
diff --git a/src/rails/game/state/Observer.java b/src/rails/game/state/Observer.java
index c1b1eb5..2cdd4ea 100644
--- a/src/rails/game/state/Observer.java
+++ b/src/rails/game/state/Observer.java
@@ -1,18 +1,10 @@
package rails.game.state;
/**
- * An interface defining an observer for states and models
- *
- * It is a very simple approach that only relays the update information itself.
- *
- * @author freystef
+ * An interface defining an Observer to Observable classes
*/
public interface Observer{
- void update();
-
- Observable getObservable();
-
- boolean deRegister();
+ void update(Observable observable, String text);
}
diff --git a/src/rails/ui/swing/GridPanel.java b/src/rails/ui/swing/GridPanel.java
index 02bc2ef..f61dca3 100644
--- a/src/rails/ui/swing/GridPanel.java
+++ b/src/rails/ui/swing/GridPanel.java
@@ -75,10 +75,11 @@ implements ActionListener, KeyListener {
revalidate();
}
+ // FIXME: This has to be replaced
protected void deRegisterObservers() {
log.debug("Deregistering observers");
for (Observer vo : observers) {
- vo.deRegister();
+// vo.deRegister();
}
}
@@ -106,10 +107,11 @@ implements ActionListener, KeyListener {
gridPanel.add(comp, gbc);
- if (comp instanceof Observer
- && ((Observer) comp).getObservable() != null) {
- observers.add((Observer) comp);
- }
+ // FIXME: This has to be replaced
+// if (comp instanceof Observer
+// && ((Observer) comp).getObservable() != null) {
+// observers.add((Observer) comp);
+// }
if (fields != null && fields[x][y] == null) fields[x][y] = comp;
comp.setVisible(visible);
@@ -178,20 +180,12 @@ implements ActionListener, KeyListener {
}
*/
- public void update() {
+ public void update(Observable observable, String text) {
// FIXME: There was a Boolean object submitted if the company is closed
// TODO: Make this functionality available again
// see above the old update method
}
- public Observable getObservable() {
- return observable;
- }
-
- public boolean deRegister() {
- return observable.removeObserver(this);
- }
-
}
diff --git a/src/rails/ui/swing/elements/Field.java b/src/rails/ui/swing/elements/Field.java
index ae4199d..95dcaf9 100644
--- a/src/rails/ui/swing/elements/Field.java
+++ b/src/rails/ui/swing/elements/Field.java
@@ -71,10 +71,11 @@ public class Field extends JLabel implements Observer {
return observable;
}
+ // FIXME: Rewrite that part here
public void setModel(Observable m) {
observable = m;
observable.addObserver(this);
- update();
+// update();
}
public void setHighlight(boolean highlight) {
@@ -115,19 +116,8 @@ public class Field extends JLabel implements Observer {
}
/** Needed to satisfy the Observer interface. */
- public void update() {
- setText(observable.getText());
+ public void update(Observable observable, String text) {
+ setText(text);
}
- public boolean deRegister() {
- dependents = null;
- if (observable == null) return false;
- return observable.removeObserver(this);
- }
-
- public Observable getObservable() {
- return observable;
- }
-
-
}
diff --git a/src/rails/ui/swing/elements/GUIStockSpace.java b/src/rails/ui/swing/elements/GUIStockSpace.java
index f121a09..0c388da 100644
--- a/src/rails/ui/swing/elements/GUIStockSpace.java
+++ b/src/rails/ui/swing/elements/GUIStockSpace.java
@@ -135,32 +135,12 @@ public class GUIStockSpace extends JLayeredPane implements Observer {
/*
* (non-Javadoc)
*
- * @see rails.ui.swing.elements.ViewObject#deRegister()
- */
- public boolean deRegister() {
- if (model == null) return false;
- return model.removeObserver(this);
- }
-
- /*
- * (non-Javadoc)
- *
* @see java.rails.util.Observer#update(java.rails.util.Observable,
* java.lang.Object)
*/
- public void update(String data) {
+ public void update(Observable observable, String text) {
recreate();
}
- public void update() {
- // TODO Auto-generated method stub
-
- }
-
- public Observable getObservable() {
- // TODO Auto-generated method stub
- return null;
- }
-
}
diff --git a/src/rails/ui/swing/hexmap/GUIHex.java b/src/rails/ui/swing/hexmap/GUIHex.java
index 86cd721..ad9d27d 100644
--- a/src/rails/ui/swing/hexmap/GUIHex.java
+++ b/src/rails/ui/swing/hexmap/GUIHex.java
@@ -891,13 +891,6 @@ public class GUIHex implements Observer {
toolTip = null;
}
- /** Needed to satisfy the ViewObject interface. Currently not used. */
- public boolean deRegister() {
- if (model == null) return false;
- model.removeObserver(this);
- return true;
- }
-
// FIXME: Why is this called getModel instead of getMapHex?
public MapHex getModel() {
return model;
@@ -931,15 +924,9 @@ public class GUIHex implements Observer {
}
// FIMXE: Add the code here
- public void update() {
+ public void update(Observable observable, String id) {
// TODO Auto-generated method stub
}
- public Observable getObservable() {
- // TODO Auto-generated method stub
- return null;
- }
-
-
}
|
|
From: Stefan F. <ste...@us...> - 2012-09-19 11:54:01
|
src/rails/game/model/SpecialPropertiesModel.java | 71 +++++++++++++++++++++++
1 file changed, 71 insertions(+)
New commits:
commit 6040f259cdca8439ff68fca311fee508a92e8439
Author: Stefan Frey <ste...@we...>
Date: Wed Sep 19 09:51:56 2012 +0200
fixed issues with 1856 testgames
diff --git a/src/rails/game/model/SpecialPropertiesModel.java b/src/rails/game/model/SpecialPropertiesModel.java
new file mode 100644
index 0000000..4d3fa5a
--- /dev/null
+++ b/src/rails/game/model/SpecialPropertiesModel.java
@@ -0,0 +1,71 @@
+package rails.game.model;
+
+import rails.common.LocalText;
+import rails.game.Bonus;
+import rails.game.Currency;
+import rails.game.PublicCompany;
+import rails.game.ReportBuffer;
+import rails.game.state.Change;
+import rails.game.state.Model;
+import rails.game.state.Observable;
+import rails.game.state.Owner;
+import rails.game.state.PortfolioChange;
+import rails.game.state.PortfolioSet;
+import rails.game.state.Triggerable;
+import rails.game.special.LocatedBonus;
+import rails.game.special.SpecialProperty;
+
+public class SpecialPropertiesModel extends Model implements Triggerable {
+
+ public final static String ID = "SpecialPropertiesModel";
+
+ private final PortfolioSet<SpecialProperty> specialProperties;
+
+ private SpecialPropertiesModel(Owner parent) {
+ super(parent, ID);
+ // specialProperties have the Owner as parent directly
+ specialProperties = PortfolioSet.create(parent, "specialProperties", SpecialProperty.class);
+ // so make this model updating
+ specialProperties.addModel(this);
+ // and add it as triggerable
+ specialProperties.addTrigger(this);
+ }
+
+ public static SpecialPropertiesModel create(Owner parent) {
+ return new SpecialPropertiesModel(parent);
+ }
+
+ @Override
+ public Owner getParent() {
+ return (Owner)super.getParent();
+ }
+
+ PortfolioSet<SpecialProperty> getPortfolio() {
+ return specialProperties;
+ }
+
+ // triggerable interface
+
+ public void triggered(Observable observable, Change change) {
+
+ // checks if the specialproperty moved into the portfolio carries a LocatedBonus
+ @SuppressWarnings("rawtypes")
+ PortfolioChange pchange = (PortfolioChange)change;
+ if (!pchange.isIntoPortfolio()) return;
+
+ SpecialProperty property = (SpecialProperty)pchange.getItem();
+ if (getParent() instanceof PublicCompany && property instanceof LocatedBonus) {
+ PublicCompany company = (PublicCompany)getParent();
+ LocatedBonus locBonus = (LocatedBonus)property;
+ Bonus bonus = new Bonus(company, locBonus.getId(), locBonus.getValue(),
+ locBonus.getLocations());
+ company.addBonus(bonus);
+ ReportBuffer.add(LocalText.getText("AcquiresBonus",
+ getParent().getId(),
+ locBonus.getName(),
+ Currency.format(company, locBonus.getValue()),
+ locBonus.getLocationNameString()));
+ }
+ }
+
+}
|