diff -r ae4e3694c2d3 -r 533c2be1747c minesweeper/src/main/java/org/apidesign/demo/minesweeper/MinesModel.java --- a/minesweeper/src/main/java/org/apidesign/demo/minesweeper/MinesModel.java Sun Mar 09 15:21:42 2014 +0100 +++ b/minesweeper/src/main/java/org/apidesign/demo/minesweeper/MinesModel.java Thu Mar 27 15:14:48 2014 +0100 @@ -39,7 +39,7 @@ @Property(name = "state", type = MinesModel.GameState.class), @Property(name = "rows", type = Row.class, array = true), }) -final class MinesModel { +public final class MinesModel { enum GameState { IN_PROGRESS, WON, LOST; } @@ -231,7 +231,7 @@ } } - private static final AudioClip TOUCH = AudioClip.create("move.mp3"); + private static AudioClip TOUCH; @Function static void click(Mines model, Square data) { if (model.getState() != GameState.IN_PROGRESS) { return; @@ -243,6 +243,9 @@ showAllBombs(model, SquareType.EXPLOSION); model.setState(GameState.LOST); } else { + if (TOUCH == null) { + TOUCH = AudioClip.create("move.mp3"); + } TOUCH.play(); expandKnown(model, data); model.computeMines(); @@ -308,5 +311,12 @@ Square sq = columns.get(x); return sq.isMine() ? 1 : 0; } - + + /** + * Called when page is ready + */ + public static void main(String... args) throws Exception { + Mines m = new Mines(); + m.applyBindings(); + } }