From 5b48b3c4bd5b188faaff49a0db0723c06988e255 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kjetil=20=C3=98rbekk?= Date: Fri, 20 Jan 2012 16:54:30 +0100 Subject: GameController listens to state changes. --- .../src/main/java/com/orbekk/GameController.java | 31 ++++++++++++++++++++-- .../main/java/com/orbekk/HelloAndroidActivity.java | 4 +-- .../java/com/orbekk/same/ClientServiceImpl.java | 2 +- 3 files changed, 32 insertions(+), 5 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 remotePlayers = new ArrayList(); 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); diff --git a/same/src/main/java/com/orbekk/same/ClientServiceImpl.java b/same/src/main/java/com/orbekk/same/ClientServiceImpl.java index 7865167..43c8b2f 100644 --- a/same/src/main/java/com/orbekk/same/ClientServiceImpl.java +++ b/same/src/main/java/com/orbekk/same/ClientServiceImpl.java @@ -79,7 +79,7 @@ public class ClientServiceImpl implements ClientService, UrlReceiver { "updating " + name); } } catch (Exception e) { - logger.error("Unable to contact master. Update fails."); + logger.error("Unable to contact master. Update fails.", e); throw new UpdateConflict("Unable to contact master. Update fails."); } } -- cgit v1.2.3