From 8672b318c3dc8b7e0cac47014e5bbb3527d0db87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kjetil=20=C3=98rbekk?= Date: Sun, 26 Feb 2012 14:35:41 +0100 Subject: Add a graphics demo. Uses a variable to hold a position and draws graphics based on the variable. Works on multiple devices. --- .../src/main/java/com/orbekk/same/GameView.java | 59 ++++++++++++++++------ 1 file changed, 44 insertions(+), 15 deletions(-) (limited to 'same-android/src/main/java/com/orbekk/same/GameView.java') diff --git a/same-android/src/main/java/com/orbekk/same/GameView.java b/same-android/src/main/java/com/orbekk/same/GameView.java index 597bbc7..527d3da 100644 --- a/same-android/src/main/java/com/orbekk/same/GameView.java +++ b/same-android/src/main/java/com/orbekk/same/GameView.java @@ -6,7 +6,6 @@ import org.slf4j.LoggerFactory; import com.orbekk.same.State.Component; import com.orbekk.same.ClientService; import com.orbekk.same.Client; -import com.orbekk.same.SameInterface; import com.orbekk.same.UpdateConflict; import android.content.Context; @@ -15,29 +14,48 @@ import android.graphics.Paint; import android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; +import android.widget.Toast; public class GameView extends SurfaceView implements SurfaceHolder.Callback { private Logger logger = LoggerFactory.getLogger(getClass()); private GameThread thread; + static class Player { + public float posX; + public float posY; + } + static class GameThread extends Thread - implements GameController.ChangeListener { + implements Variable.OnChangeListener { private Logger logger = LoggerFactory.getLogger(getClass()); private int height = 0; private int width = 0; private SurfaceHolder holder; private Context context; private Paint background; - private GameController controller; + private Variable player; + private Paint color = new Paint(); public GameThread(SurfaceHolder holder, Context context, - GameController controller) { + Variable player) { this.holder = holder; this.context = context; - this.controller = controller; - this.controller.setChangeListener(this); + this.player = player; background = new Paint(); background.setARGB(255, 0, 0, 0); + color.setARGB(255, 255, 0, 0); + } + + public void setUp() { + Player player_ = new Player(); + player_.posX = 0.5f; + player_.posY = 0.5f; + player.setOnChangeListener(this); + try { + player.set(player_); + } catch (UpdateConflict e) { + e.printStackTrace(); + } } public void setSize(int width, int height) { @@ -49,12 +67,12 @@ public class GameView extends SurfaceView implements SurfaceHolder.Callback { private void doDraw(Canvas c) { c.drawRect(0.0f, 0.0f, width+1.0f, height+1.0f, background); - for (GameController.Player p : controller.getRemotePlayers()) { - c.drawCircle(p.posX * width, p.posY * height, 20.0f, p.color); + Player player_ = player.get(); + if (player_ == null) { + return; } - GameController.Player localPlayer = controller.getLocalPlayer(); - c.drawCircle(localPlayer.posX * width, localPlayer.posY * height, - 20.0f, localPlayer.color); + c.drawCircle(player_.posX * width, player_.posY * height, + 20.0f, color); } @Override public void run() { @@ -70,19 +88,30 @@ public class GameView extends SurfaceView implements SurfaceHolder.Callback { } private synchronized void setPosition(float x, float y) { -// controller.setMyPosition(x / this.width, y / this.height); + Player newPlayer = new Player(); + newPlayer.posX = x / width; + newPlayer.posY = y / width; + try { + player.set(newPlayer); + } catch (UpdateConflict e) { + Toast.makeText(context, "Failed to update position.", + Toast.LENGTH_SHORT).show(); + } } @Override - public void playerStatesChanged() { + public void valueChanged(Variable unused) { + logger.info("Variable updated."); + player.update(); run(); } } - public GameView(Context context, GameController controller) { + public GameView(Context context, Variable player) { super(context); getHolder().addCallback(this); - thread = new GameThread(getHolder(), context, controller); + thread = new GameThread(getHolder(), context, player); + thread.setUp(); } @Override -- cgit v1.2.3