diff options
author | Kjetil Ørbekk <kjetil.orbekk@gmail.com> | 2012-01-20 16:54:30 +0100 |
---|---|---|
committer | Kjetil Ørbekk <kjetil.orbekk@gmail.com> | 2012-01-20 16:54:30 +0100 |
commit | 5b48b3c4bd5b188faaff49a0db0723c06988e255 (patch) | |
tree | 7d776b784067ac2778d2467d995ee4d5c10a0d16 /same-android/src/main/java/com | |
parent | 7fb62a6d592646df7b3a728399f830e7b4e68dec (diff) |
GameController listens to state changes.
Diffstat (limited to 'same-android/src/main/java/com')
-rw-r--r-- | same-android/src/main/java/com/orbekk/GameController.java | 31 | ||||
-rw-r--r-- | same-android/src/main/java/com/orbekk/HelloAndroidActivity.java | 4 |
2 files changed, 31 insertions, 4 deletions
diff --git a/same-android/src/main/java/com/orbekk/GameController.java b/same-android/src/main/java/com/orbekk/GameController.java index 0c11a75..28d5465 100644 --- a/same-android/src/main/java/com/orbekk/GameController.java +++ b/same-android/src/main/java/com/orbekk/GameController.java @@ -3,12 +3,21 @@ package com.orbekk; import java.util.ArrayList; import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.orbekk.same.SameInterface; +import com.orbekk.same.StateChangedListener; +import com.orbekk.same.UpdateConflict; + import android.graphics.Paint; -public class GameController { +public class GameController implements StateChangedListener { + private Logger logger = LoggerFactory.getLogger(getClass()); private List<Player> remotePlayers = new ArrayList<Player>(); private Player localPlayer; private ChangeListener changeListener = null; + private SameInterface same; public static class Player { public Paint color; @@ -29,14 +38,27 @@ public class GameController { return player; } - public GameController(Player localPlayer) { + public static GameController create(Player localPlayer, + SameInterface same) { + GameController controller = new GameController(localPlayer, same); + same.addStateChangedListener(controller); + return controller; + } + + GameController(Player localPlayer, SameInterface same) { this.localPlayer = localPlayer; + this.same = same; } public void setMyPosition(float x, float y) { this.localPlayer.posX = x; this.localPlayer.posY = y; changeListener.playerStatesChanged(); + try { + same.set("position", x + "," + y); + } catch (UpdateConflict e) { + logger.warn("Update failed.", e); + } } public Player getLocalPlayer() { @@ -50,4 +72,9 @@ public class GameController { public void setChangeListener(ChangeListener listener) { this.changeListener = listener; } + + @Override + public void stateChanged(String id, String data) { + logger.info("StateChanged({}, {})", id, data); + } } diff --git a/same-android/src/main/java/com/orbekk/HelloAndroidActivity.java b/same-android/src/main/java/com/orbekk/HelloAndroidActivity.java index dfa5d20..a1d71f9 100644 --- a/same-android/src/main/java/com/orbekk/HelloAndroidActivity.java +++ b/same-android/src/main/java/com/orbekk/HelloAndroidActivity.java @@ -31,8 +31,8 @@ public class HelloAndroidActivity extends Activity { ClientApp client = new ClientApp(); SameInterface client_ = client.getClient(10015, "ClientNetwork", "http://10.0.0.6:10010/"); - GameController controller = new GameController( - GameController.newPlayer()); + GameController controller = GameController.create( + GameController.newPlayer(), client_); setContentView(new GameView(this, controller)); // Broadcast broadcast = new Broadcast(this); |