summaryrefslogtreecommitdiff
path: root/same-android
diff options
context:
space:
mode:
authorKjetil Ørbekk <kjetil.orbekk@gmail.com>2012-01-20 16:54:30 +0100
committerKjetil Ørbekk <kjetil.orbekk@gmail.com>2012-01-20 16:54:30 +0100
commit5b48b3c4bd5b188faaff49a0db0723c06988e255 (patch)
tree7d776b784067ac2778d2467d995ee4d5c10a0d16 /same-android
parent7fb62a6d592646df7b3a728399f830e7b4e68dec (diff)
GameController listens to state changes.
Diffstat (limited to 'same-android')
-rw-r--r--same-android/src/main/java/com/orbekk/GameController.java31
-rw-r--r--same-android/src/main/java/com/orbekk/HelloAndroidActivity.java4
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);