[Picross-commit] SF.net SVN: picross:[118] branches/engine_split
Status: Pre-Alpha
Brought to you by:
yvan_norsa
From: <yva...@us...> - 2013-01-15 09:24:03
|
Revision: 118 http://sourceforge.net/p/picross/code/118 Author: yvan_norsa Date: 2013-01-15 09:23:58 +0000 (Tue, 15 Jan 2013) Log Message: ----------- draw the grid Modified Paths: -------------- branches/engine_split/android/src/picross/specific/activities/PicrossActivityUI.java branches/engine_split/android/src/picross/specific/game/random/ui/RandomGameMediator.java branches/engine_split/android/src/picross/specific/game/ui/GameMediator.java branches/engine_split/android/src/picross/specific/game/ui/GameUI.java branches/engine_split/android/src/picross/specific/grid/ui/GridMediator.java branches/engine_split/android/src/picross/specific/grid/ui/GridUI.java branches/engine_split/android/src/picross/specific/grid/ui/UIBox.java branches/engine_split/android/src/picross/specific/ui/MenuUI.java branches/engine_split/android/src/picross/specific/ui/PicrossMediator.java branches/engine_split/android/src/picross/specific/ui/PicrossUIHelper.java branches/engine_split/build.xml branches/engine_split/common/src/picross/common/ui/AbstractPicrossMediator.java Added Paths: ----------- branches/engine_split/android/src/picross/specific/ui/AbstractAndroidView.java Removed Paths: ------------- branches/engine_split/android/src/picross/specific/ui/PicrossAndroidView.java Modified: branches/engine_split/android/src/picross/specific/activities/PicrossActivityUI.java =================================================================== --- branches/engine_split/android/src/picross/specific/activities/PicrossActivityUI.java 2013-01-14 13:23:53 UTC (rev 117) +++ branches/engine_split/android/src/picross/specific/activities/PicrossActivityUI.java 2013-01-15 09:23:58 UTC (rev 118) @@ -66,7 +66,7 @@ @Override public void setContent(PicrossView content) { PicrossLogHelper.getLogger().debug("setContent(" + content + ")"); - this.activity.setContentView((picross.specific.ui.PicrossAndroidView) content); + this.activity.setContentView((picross.specific.ui.AbstractAndroidView) content); } /** {@inheritDoc} */ Modified: branches/engine_split/android/src/picross/specific/game/random/ui/RandomGameMediator.java =================================================================== --- branches/engine_split/android/src/picross/specific/game/random/ui/RandomGameMediator.java 2013-01-14 13:23:53 UTC (rev 117) +++ branches/engine_split/android/src/picross/specific/game/random/ui/RandomGameMediator.java 2013-01-15 09:23:58 UTC (rev 118) @@ -37,7 +37,6 @@ import picross.engine.game.random.RandomPicrossModel; -import picross.specific.game.ui.GameController; import picross.specific.game.ui.GameMediator; import picross.specific.game.ui.GameUI; @@ -49,6 +48,8 @@ import android.content.Context; +import picross.specific.game.ui.GameController; + /** * This object handles a random grid game. * @@ -63,8 +64,10 @@ /** {@inheritDoc} */ @Override + //p//r//otected GameUI initView(int width, int height, GridView gridView, + // MenuController controller) { protected GameUI initView(int width, int height, GridView gridView, - MenuController controller) { + MenuController controller) { return new RandomGameUI(this.context, width, height, gridView, controller); } @@ -87,7 +90,7 @@ public void eventPerformed(SimpleEvent e) { String cmd = e.getCommandName(); if (cmd.equals(RandomGameController.NEXT_CMD)) { - this.fireEventPerformed(RandomGameModeUI.getRandomGameCommand()); + this.fireEventPerformed(RandomGameModeUI.getRandomGameCommand(this.context)); return; } Modified: branches/engine_split/android/src/picross/specific/game/ui/GameMediator.java =================================================================== --- branches/engine_split/android/src/picross/specific/game/ui/GameMediator.java 2013-01-14 13:23:53 UTC (rev 117) +++ branches/engine_split/android/src/picross/specific/game/ui/GameMediator.java 2013-01-15 09:23:58 UTC (rev 118) @@ -114,7 +114,11 @@ controller.addSimpleListener(this); // The view has to be init'ed on the EDT - this.view = this.initView(width, height, this.grid.getView(), controller); + //new Thread() { + // public void run() { + GameMediator.this.view = GameMediator.this.initView(width, height, GameMediator.this.grid.getView(), controller); + // } + //}.start(); } /** Modified: branches/engine_split/android/src/picross/specific/game/ui/GameUI.java =================================================================== --- branches/engine_split/android/src/picross/specific/game/ui/GameUI.java 2013-01-14 13:23:53 UTC (rev 117) +++ branches/engine_split/android/src/picross/specific/game/ui/GameUI.java 2013-01-15 09:23:58 UTC (rev 118) @@ -46,17 +46,19 @@ import android.content.Context; import picross.specific.ui.MenuController; -import picross.specific.ui.PicrossAndroidView; +import picross.specific.ui.AbstractAndroidView; +import android.graphics.Canvas; + /** * The game UI. * * @author Y. Norsa */ // FIXME -public class GameUI extends PicrossAndroidView +public class GameUI extends AbstractAndroidView /*extends JPanel*/ -implements GameView { + implements GameView { /*** Constant ***/ @@ -65,7 +67,7 @@ /** Panel holding the buttons. */ //private JPanel buttonsPanel; - private Context context; + private GridView grid; /*** Constructor ***/ @@ -78,11 +80,14 @@ * @param listener listener for the buttons */ //public GameUI(int width, int height, JPanel grid, - public GameUI(Context context, int width, int height, GridView grid, + public GameUI(Context context, int width, int height, GridView gridView, MenuController listener) { super(context); - this.context = context; + this.grid = gridView; + + picross.specific.grid.ui.UIBox.staticInit(context.getResources()); + // FIXME /* this.setLayout(new BorderLayout()); @@ -125,6 +130,16 @@ */ } + @Override + public void onDraw(Canvas canvas) { + if (canvas == null) { + return; + } + + //GameUI.log.debug("onDraw(" + canvas + ")"); + ((picross.specific.grid.ui.GridUI) this.grid).draw(canvas); + } + /*** Method ***/ /** Modified: branches/engine_split/android/src/picross/specific/grid/ui/GridMediator.java =================================================================== --- branches/engine_split/android/src/picross/specific/grid/ui/GridMediator.java 2013-01-14 13:23:53 UTC (rev 117) +++ branches/engine_split/android/src/picross/specific/grid/ui/GridMediator.java 2013-01-15 09:23:58 UTC (rev 118) @@ -39,6 +39,8 @@ import picross.engine.PicrossException; +import picross.engine.grid.CompletedHints; + /** * Picross grid mediator. * @@ -52,5 +54,19 @@ this.context = context; } + + @Override + protected void initGrid(final int width, final int height, final UIBox[][] boxes, final int[][] colData, final int[][] rowData, final CompletedHints hints, final GridController controller) { + //new Thread() { + // public void run() { + GridMediator.this.view = new GridUI(width, height, + boxes, + colData, + rowData, + hints, + controller); + // } + // }.start(); + } } Modified: branches/engine_split/android/src/picross/specific/grid/ui/GridUI.java =================================================================== --- branches/engine_split/android/src/picross/specific/grid/ui/GridUI.java 2013-01-14 13:23:53 UTC (rev 117) +++ branches/engine_split/android/src/picross/specific/grid/ui/GridUI.java 2013-01-15 09:23:58 UTC (rev 118) @@ -46,6 +46,9 @@ import picross.engine.grid.CompletedHints; import picross.engine.grid.GridModel; +import android.graphics.Canvas; +import android.graphics.Rect; + /** * Grid UI. * @@ -227,15 +230,8 @@ /*** Method overloaded from JPanel ***/ - /** {@inheritDoc} */ - // FIXME - /* - @Override - protected void paintComponent(Graphics g) { - super.paintComponent(g); - - Graphics2D newG = (Graphics2D) g.create(); - + public void draw(Canvas c) { + /* Rectangle clipRect = newG.getClipBounds(); for (int i = 0; i < this.topHints.length; i++) { @@ -249,36 +245,30 @@ this.drawLeftHints(newG, i); } } - + */ // Paints the boxes for (int i = 0; i < this.width; i++) { for (int j = 0; j < this.height; j++) { - Rectangle currentRect = this.boxes[i][j].getRect(); + Rect currentRect = this.boxes[i][j].getRect(); - if (currentRect.intersects(clipRect)) { - if (this.boxes[i][j] == this.rollover) { - this.boxes[i][j].getRolloverIcon() - .paintIcon(this, newG, - currentRect.x, currentRect.y); - } else { - this.boxes[i][j].getIcon().paintIcon(this, newG, - currentRect.x, - currentRect.y); - } - } + //if (currentRect.intersects(clipRect)) { + c.drawBitmap(this.boxes[i][j].getIcon(), + currentRect.left, + currentRect.top, null); + //} } } // Draws the blocks + /* newG.setColor(GridUI.BLOCKS_COLOR); for (Line2D line : this.blocksLines) { newG.draw(line); } + */ + } - newG.dispose(); - } - */ /*** Methods ***/ /** @@ -368,16 +358,13 @@ * so we'll be able * to redraw only what is needed */ - // FIXME - /* this.boxes[i][j] - .setRect(new Rectangle(this.leftBoundary + .setRect(new Rect(this.leftBoundary + (i * GridUI.BOX_WIDTH), this.topBoundary + (j * GridUI.BOX_WIDTH), GridUI.BOX_WIDTH, GridUI.BOX_HEIGHT)); - */ } } Modified: branches/engine_split/android/src/picross/specific/grid/ui/UIBox.java =================================================================== --- branches/engine_split/android/src/picross/specific/grid/ui/UIBox.java 2013-01-14 13:23:53 UTC (rev 117) +++ branches/engine_split/android/src/picross/specific/grid/ui/UIBox.java 2013-01-15 09:23:58 UTC (rev 118) @@ -43,6 +43,12 @@ import picross.engine.grid.Box.BoxState; import picross.common.ui.MissingImageException; + +import android.graphics.Bitmap; +import android.graphics.Rect; + +import picross.specific.activities.R; +import android.content.res.Resources; import picross.specific.ui.PicrossUIHelper; /** @@ -54,56 +60,51 @@ /*** Constants ***/ /** Index of the normal icon. */ - private static final int ICON_INDEX = 0; + //private static final int ICON_INDEX = 0; - /** Index of the rollover icon. */ - private static final int ROLLOVER_ICON_INDEX = 1; - - /** Suffix for rollover icons. */ - private static final String ROLLOVER_NAME = "-rollover"; - /** Images files extension. */ private static final String IMAGES_EXT = ".png"; /*** Static field ***/ /** Map containing the images corresponding to the different states. */ - //private static Map<BoxState, ImageIcon[]> images; + private static Map<BoxState, Bitmap> images; /*** Field ***/ /** Rectangle occupied by the box. */ //private Rectangle rect; + private Rect rect; /*** Static block ***/ - static { + //static { + public static void staticInit(Resources res) { // Fills in the images map /* * We create a too large HashMap so it doesn't grow * during its initialisation */ - //UIBox.images = new HashMap<BoxState, ImageIcon[]>(7); + UIBox.images = new HashMap<BoxState, Bitmap>(4); - //try { + try { + /* for (BoxState state : BoxState.values()) { - /* - ImageIcon[] img = new ImageIcon[2]; + ImageIcon[] img = new ImageIcon[1]; String stateImageName = state.toString().toLowerCase(); img[UIBox.ICON_INDEX] = PicrossUIHelper.getImage(stateImageName + UIBox.IMAGES_EXT); - img[UIBox.ROLLOVER_ICON_INDEX] = - PicrossUIHelper.getImage(stateImageName + UIBox.ROLLOVER_NAME - + UIBox.IMAGES_EXT); - UIBox.images.put(state, img); + } */ - } - /* + + UIBox.images.put(BoxState.EMPTY, PicrossUIHelper.getImage(res, R.drawable.empty)); + UIBox.images.put(BoxState.CHECKED, PicrossUIHelper.getImage(res, R.drawable.checked)); + UIBox.images.put(BoxState.CROSSED, PicrossUIHelper.getImage(res, R.drawable.crossed)); } catch (MissingImageException imageEx) { throw new ExceptionInInitializerError(imageEx); - }*/ + } } private UIBox(BoxState boxState, int hashCode) { @@ -145,16 +146,11 @@ return UIBox.images.get(this.state)[UIBox.ICON_INDEX]; } */ - /** - * Returns the rollover icon representing the current state of the box. - * - * @return rollover icon of the state of the box - */ - /* - ImageIcon getRolloverIcon() { - return UIBox.images.get(this.state)[UIBox.ROLLOVER_ICON_INDEX]; - }*/ + Bitmap getIcon() { + return UIBox.images.get(this.state); + } + /*** Accessors ***/ /** @@ -164,23 +160,21 @@ * @throws IllegalArgumentException if <code>rect</code> * is <code>null</code> */ - /* - void setRect(Rectangle rect) throws IllegalArgumentException { + void setRect(Rect rect) throws IllegalArgumentException { if (rect == null) { throw new IllegalArgumentException("rect cannot be null"); } this.rect = rect; - }*/ + } /** * Returns this box' rectangle. * * @return rectangle occupied by this box */ - /* - Rectangle getRect() { + Rect getRect() { return this.rect; - }*/ + } } Copied: branches/engine_split/android/src/picross/specific/ui/AbstractAndroidView.java (from rev 115, branches/engine_split/android/src/picross/specific/ui/PicrossAndroidView.java) =================================================================== --- branches/engine_split/android/src/picross/specific/ui/AbstractAndroidView.java (rev 0) +++ branches/engine_split/android/src/picross/specific/ui/AbstractAndroidView.java 2013-01-15 09:23:58 UTC (rev 118) @@ -0,0 +1,90 @@ +/* + * $Id$ + */ + + +package picross.specific.ui; + +import android.content.Context; + +import android.graphics.Canvas; + +import android.view.SurfaceView; +import android.view.SurfaceHolder; + +import picross.common.ui.PicrossView; + +import picross.engine.PicrossLogger; +import picross.engine.PicrossLogHelper; + +public abstract class AbstractAndroidView extends SurfaceView implements PicrossView, SurfaceHolder.Callback, Runnable { + protected static PicrossLogger log = PicrossLogHelper.getLogger(); + + private SurfaceHolder surface; + private boolean running; + protected Context context; + + public AbstractAndroidView(Context androidContext) { + super(androidContext); + + AbstractAndroidView.log.debug("AbstractAndroidView(" + androidContext + ")"); + + this.context = androidContext; + this.surface = this.getHolder(); + this.surface.addCallback(this); + } + + @Override + public final void surfaceCreated(SurfaceHolder holder) { + AbstractAndroidView.log.debug("surfaceCreated()"); + this.setRunning(true); + + Thread thread = new Thread(this); + thread.start(); + } + + @Override + public final void surfaceChanged(SurfaceHolder holder, int format, int width, + int height) { + AbstractAndroidView.log.debug("surfaceChanged"); + } + + private final void setRunning(boolean run) { + this.running = run; + } + + @Override + public void surfaceDestroyed(SurfaceHolder holder) { + AbstractAndroidView.log.debug("surfaceDestroyed"); + + this.setRunning(false); + } + + @Override + public final void run() { + AbstractAndroidView.log.debug("run()"); + + Canvas c; + + while (this.running) { + c = null; + try { + + c = this.surface.lockCanvas(null); + + synchronized (this.surface) { + this.onDraw(c); + } + } finally { + // do this in a finally so that if an exception is thrown + // during the above, we don't leave the Surface in an + // inconsistent state + if (c != null) { + this.surface.unlockCanvasAndPost(c); + } + } + } + } + + public abstract void onDraw(Canvas canvas); +} Modified: branches/engine_split/android/src/picross/specific/ui/MenuUI.java =================================================================== --- branches/engine_split/android/src/picross/specific/ui/MenuUI.java 2013-01-14 13:23:53 UTC (rev 117) +++ branches/engine_split/android/src/picross/specific/ui/MenuUI.java 2013-01-15 09:23:58 UTC (rev 118) @@ -70,7 +70,7 @@ * * @author Y. Norsa */ -public abstract class MenuUI extends PicrossAndroidView implements SurfaceHolder.Callback, Runnable { +public abstract class MenuUI extends AbstractAndroidView { /*** Constants ***/ /** Background image. */ @@ -88,15 +88,15 @@ /*** Static field ***/ /** This class' logger. */ - private static PicrossLogger log = PicrossLogHelper.getLogger(); + //private static PicrossLogger log = PicrossLogHelper.getLogger(); /*** Field ***/ /** Background image. */ private Bitmap image; - protected Context context; - private SurfaceHolder surface; + //protected Context context; + //private SurfaceHolder surface; private List<PicrossLabel> buttons; @@ -109,7 +109,7 @@ MenuUI.log.debug("MenuUI(" + context + ")"); - this.context = context; + //this.context = context; Resources res = context.getResources(); @@ -117,66 +117,13 @@ MenuUI.log.debug("this.image: " + this.image); - this.surface = this.getHolder(); - this.surface.addCallback(this); + //this.surface = this.getHolder(); + //this.surface.addCallback(this); this.buttons = new ArrayList<PicrossLabel>(); } - @Override - public void surfaceCreated(SurfaceHolder holder) { - MenuUI.log.debug("surfaceCreated()"); - this.setRunning(true); - - Thread thread = new Thread(this); - thread.start(); - } - - @Override - public void surfaceChanged(SurfaceHolder holder, int format, int width, - int height) { - MenuUI.log.debug("surfaceChanged"); - } - - private boolean running; - - private void setRunning(boolean run) { - this.running = run; - } - - @Override - public void surfaceDestroyed(SurfaceHolder holder) { - MenuUI.log.debug("surfaceDestroyed"); - - boolean retry = true; - this.setRunning(false); - } - - @Override - public void run() { - MenuUI.log.debug("run()"); - - Canvas c; - while (this.running) { - c = null; - try { - c = surface.lockCanvas(null); - synchronized (surface) { - onDraw(c); - - } - } finally { - // do this in a finally so that if an exception is thrown - // during the above, we don't leave the Surface in an - // inconsistent state - if (c != null) { - surface.unlockCanvasAndPost(c); - } - } - } - } - public void onDraw(Canvas canvas) { //MenuUI.log.debug("onDraw(" + canvas + ")"); Deleted: branches/engine_split/android/src/picross/specific/ui/PicrossAndroidView.java =================================================================== --- branches/engine_split/android/src/picross/specific/ui/PicrossAndroidView.java 2013-01-14 13:23:53 UTC (rev 117) +++ branches/engine_split/android/src/picross/specific/ui/PicrossAndroidView.java 2013-01-15 09:23:58 UTC (rev 118) @@ -1,20 +0,0 @@ -/* - * $Id$ - */ - - -package picross.specific.ui; - -import android.content.Context; - -import android.view.SurfaceView; - -import picross.common.ui.PicrossView; - -public class PicrossAndroidView extends SurfaceView implements PicrossView { - public PicrossAndroidView(Context context) { - super(context); - - picross.engine.PicrossLogHelper.getLogger().debug("PicrossAndroidView(" + context + ")"); - } -} Modified: branches/engine_split/android/src/picross/specific/ui/PicrossMediator.java =================================================================== --- branches/engine_split/android/src/picross/specific/ui/PicrossMediator.java 2013-01-14 13:23:53 UTC (rev 117) +++ branches/engine_split/android/src/picross/specific/ui/PicrossMediator.java 2013-01-15 09:23:58 UTC (rev 118) @@ -97,6 +97,34 @@ protected void gameLoaded(final GameMediator game) { this.view.displayMessage("TODO gameLoaded()"); game.addSimpleListener(this); - this.view.setContent(game.getView()); + + //new Thread() { + // public void run() { + PicrossMediator.this.view.setContent(game.getView()); + // } + //}.start(); } + + /** + * Method launching a game. + * + * @param game game the launch + */ +@Override + protected void startGame(final GameMediator game) { + //Thread worker = new Thread() { + // public void run() { + try { + game.init(); + /*AbstractPicrossMediator.*/this.gameLoaded(game); + } catch (PicrossException picrossEx) { + /*AbstractPicrossMediator.*/this.view + .displayError(picrossEx.getMessage()); + return; + } + // } + // }; + + // worker.start(); + } } Modified: branches/engine_split/android/src/picross/specific/ui/PicrossUIHelper.java =================================================================== --- branches/engine_split/android/src/picross/specific/ui/PicrossUIHelper.java 2013-01-14 13:23:53 UTC (rev 117) +++ branches/engine_split/android/src/picross/specific/ui/PicrossUIHelper.java 2013-01-15 09:23:58 UTC (rev 118) @@ -73,7 +73,7 @@ /*** Static methods ***/ - static Bitmap getImage(Resources res, int id) { + public static Bitmap getImage(Resources res, int id) { return BitmapFactory.decodeResource(res, id); } Modified: branches/engine_split/build.xml =================================================================== --- branches/engine_split/build.xml 2013-01-14 13:23:53 UTC (rev 117) +++ branches/engine_split/build.xml 2013-01-15 09:23:58 UTC (rev 118) @@ -363,6 +363,10 @@ defaultexcludes="no" includes="**/*~" /> </delete> + + <ant antfile="build.xml" + dir="${android.dir}" + target="clean" /> </target> <target name="rebuild" Modified: branches/engine_split/common/src/picross/common/ui/AbstractPicrossMediator.java =================================================================== --- branches/engine_split/common/src/picross/common/ui/AbstractPicrossMediator.java 2013-01-14 13:23:53 UTC (rev 117) +++ branches/engine_split/common/src/picross/common/ui/AbstractPicrossMediator.java 2013-01-15 09:23:58 UTC (rev 118) @@ -217,7 +217,7 @@ * * @param game game the launch */ - private void startGame(final GameMediator game) { + protected void startGame(final GameMediator game) { Thread worker = new Thread() { public void run() { try { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |