From: <js...@us...> - 2011-07-28 03:57:07
|
Revision: 7055 http://exult.svn.sourceforge.net/exult/?rev=7055&view=rev Author: jsf Date: 2011-07-28 03:57:01 +0000 (Thu, 28 Jul 2011) Log Message: ----------- Working on game menus. Modified Paths: -------------- ExultAndroid/src/com/exult/android/ExultActivity.java ExultAndroid/src/com/exult/android/Game.java ExultAndroid/src/com/exult/android/GameMenuGump.java ExultAndroid/src/com/exult/android/Gump.java Modified: ExultAndroid/src/com/exult/android/ExultActivity.java =================================================================== --- ExultAndroid/src/com/exult/android/ExultActivity.java 2011-07-28 02:01:44 UTC (rev 7054) +++ ExultAndroid/src/com/exult/android/ExultActivity.java 2011-07-28 03:57:01 UTC (rev 7055) @@ -68,11 +68,7 @@ } // Show main menu and wait until done. private void showMainMenu() { - Gump.Modal menu = GameSingletons.game.topMenu(); - while (!menu.isDone()) - try { - Thread.sleep(100); - } catch (InterruptedException e) { break; } + GameSingletons.game.topMenu(); } private void startupGame() { @@ -193,6 +189,7 @@ ClickTracker trackSave = clickTrack; clickPoint = p; clickTrack = track; + System.out.println("clickTrack before: " + clickTrack); // Wait for the click. try { clickWait.acquire(); } catch (InterruptedException e) { p.x = -1; @@ -200,6 +197,7 @@ clickPoint = save; clickTrack = trackSave; clickWait.release(); + System.out.println("clickTrack after: " + clickTrack); GameObject ret = GameWindow.targetObj; if (ret != null) gwin.addDirty(ret); Modified: ExultAndroid/src/com/exult/android/Game.java =================================================================== --- ExultAndroid/src/com/exult/android/Game.java 2011-07-28 02:01:44 UTC (rev 7054) +++ ExultAndroid/src/com/exult/android/Game.java 2011-07-28 03:57:01 UTC (rev 7055) @@ -226,13 +226,17 @@ new VideoPlayer("u7bgintro.mp4", t); } @Override + // Show it and wait until done. public Gump.Modal topMenu() { audio.startMusic(menu_midi, true, EFile.INTROMUS); GameMenuGump menu = new GameMenuGump(getMenuShape()); Palette pal = gwin.getPal(); pal.load(EFile.INTROPAL_DAT, EFile.PATCH_INTROPAL, 6); pal.fadeIn(EConst.c_fade_in_time); - menu.track(Mouse.hand); //+++++Use proper mouse. + Thread t = menu.track(Mouse.hand); //+++++Use proper mouse. + try { + t.join(); + } catch (InterruptedException e) { } return menu; } } Modified: ExultAndroid/src/com/exult/android/GameMenuGump.java =================================================================== --- ExultAndroid/src/com/exult/android/GameMenuGump.java 2011-07-28 02:01:44 UTC (rev 7054) +++ ExultAndroid/src/com/exult/android/GameMenuGump.java 2011-07-28 03:57:01 UTC (rev 7055) @@ -3,19 +3,18 @@ import com.exult.android.Gump.Modal; /* - * This is the top-level menu for Black Gate or Serpent Isle. + * This is the top-level menu for Black Gate or Serpent Isle. It is also the new-game menu. */ public class GameMenuGump extends Modal { private static final int menuChoices[] = { 0x04, 0x05, 0x08, 0x06, 0x11, 0x12, 0x07 }; private GumpWidget.Button selected; + private boolean newGame; + private VgaFile menuShapes; + private int topx, topy, centerx; - public GameMenuGump(ShapeFrame s) { - super(s); + private void initTop() { int offset = 0, cnt = menuChoices.length; - int topy = (gwin.getHeight() - 200)/2; - int centerx = gwin.getWidth()/2; int menuy = topy + 120; - VgaFile menuShapes = game.getMenuShapes(); for (int i = 0; i < cnt; ++i) { ShapeFrame onShape = menuShapes.getShape(menuChoices[i], 1), offShape = menuShapes.getShape(menuChoices[i], 0); @@ -25,6 +24,31 @@ offset += offShape.getYBelow() + 3; } } + private void initNewGame() { + addElem(new MenuItem(this, 10, menuShapes.getShape(8, 1), menuShapes.getShape(8, 0), topx+10, topy+180)); + addElem(new MenuItem(this, 11, menuShapes.getShape(7, 1), menuShapes.getShape(7, 0), centerx+10, topy+180)); + } + private void init(boolean isNew) { + newGame = isNew; + topx = (gwin.getWidth()-320)/2; + topy = (gwin.getHeight() - 200)/2; + centerx = gwin.getWidth()/2; + menuShapes = game.getMenuShapes(); + if (isNew) + initNewGame(); + else + initTop(); + } + // Top-level + public GameMenuGump(ShapeFrame s) { + super(s); + init(false); + } + // New game. + public GameMenuGump(ShapeFrame s, boolean isNew) { + super(s); + init(isNew); + } @Override public void close() { audio.stopMusic(); @@ -37,17 +61,17 @@ GumpWidget.Button item = onButton(mx, my); if (item != selected) { + System.out.println("GameMenu: this = " + this); mouse.hide(); if (selected != null) { selected.setPushed(false); - selected.paint(); + gwin.setAllDirty(); // ++Just add dirty rectangle? } if (item != null) { item.setPushed(true); - item.paint(); + gwin.setAllDirty(); // ++Just add dirty rectangle? } selected = item; - gwin.setPainted(); } } @Override @@ -62,10 +86,19 @@ { } public void handleChoice(int id) { switch (id) { + // Top-level choices. case 0: // Intro - game.playIntro(null); + audio.stopMusic(); + ExultActivity.instanceOf().runOnUiThread(new Runnable() { + public void run() { game.playIntro(null); } }); break; case 1: // New Game + GameMenuGump newMenu = new GameMenuGump(shape, true); + Thread t = newMenu.track(Mouse.hand); + try { + t.join(); + } catch (InterruptedException e) { } + gwin.getPal().fadeIn(EConst.c_fade_in_time); // This should depend on results of newMenu.++++++ break; case 2: // Journey Onwards close(); break; @@ -77,6 +110,11 @@ break; case 6: // Return to Exult menu break; + // New-game choices. + case 10: + close(); break;//+++++++TESTING + case 11: + close(); break;//+++++++TESTING } } Modified: ExultAndroid/src/com/exult/android/Gump.java =================================================================== --- ExultAndroid/src/com/exult/android/Gump.java 2011-07-28 02:01:44 UTC (rev 7054) +++ ExultAndroid/src/com/exult/android/Gump.java 2011-07-28 03:57:01 UTC (rev 7055) @@ -437,9 +437,10 @@ /* * This allows user to push a mouse around like when targeting. */ - public void track(int mouseShape) { + public Thread track(int mouseShape) { GumpThread t = new GumpThread(this, mouseShape); t.start(); + return t; } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |