diff options
author | Kjetil Ørbekk <kjetil.orbekk@gmail.com> | 2012-02-14 10:01:07 +0100 |
---|---|---|
committer | Kjetil Ørbekk <kjetil.orbekk@gmail.com> | 2012-02-14 10:01:07 +0100 |
commit | a43a6e3ea279a58815edafaf552a571789835e7f (patch) | |
tree | 835abf534c451ce5a41b281b53345753126aefbc /same-android/src/main/java/com/orbekk/same/GameController.java | |
parent | 10920b6036c13f82df151e5912f6b1fbbd7aca02 (diff) |
Rename com.orbekk{=>.same} in Android project.
Diffstat (limited to 'same-android/src/main/java/com/orbekk/same/GameController.java')
-rw-r--r-- | same-android/src/main/java/com/orbekk/same/GameController.java | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/same-android/src/main/java/com/orbekk/same/GameController.java b/same-android/src/main/java/com/orbekk/same/GameController.java new file mode 100644 index 0000000..144d6af --- /dev/null +++ b/same-android/src/main/java/com/orbekk/same/GameController.java @@ -0,0 +1,80 @@ +package com.orbekk.same; + +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 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; + public float posX; + public float posY; + } + + public interface ChangeListener { + void playerStatesChanged(); + } + + public static Player newPlayer() { + Player player = new Player(); + player.color = new Paint(); + player.color.setARGB(255, 255, 0, 0); + player.posX = 0.5f; + player.posY = 0.5f; + return player; + } + + 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() { + return localPlayer; + } + + public List<Player> getRemotePlayers() { + return remotePlayers; + } + + public void setChangeListener(ChangeListener listener) { + this.changeListener = listener; + } + + @Override + public void stateChanged(String id, String data) { + logger.info("StateChanged({}, {})", id, data); + } +} |