From: <js...@us...> - 2012-07-15 21:28:34
|
Revision: 7125 http://exult.svn.sourceforge.net/exult/?rev=7125&view=rev Author: jsf Date: 2012-07-15 21:28:27 +0000 (Sun, 15 Jul 2012) Log Message: ----------- Working on mouse-tracking in 'gump mode'. Modified Paths: -------------- ExultAndroid/src/com/exult/android/ExultActivity.java ExultAndroid/src/com/exult/android/GumpManager.java Modified: ExultAndroid/src/com/exult/android/ExultActivity.java =================================================================== --- ExultAndroid/src/com/exult/android/ExultActivity.java 2012-07-09 05:15:09 UTC (rev 7124) +++ ExultAndroid/src/com/exult/android/ExultActivity.java 2012-07-15 21:28:27 UTC (rev 7125) @@ -232,9 +232,10 @@ // Keeps program from exiting. if (AndroidSave.instance != null) AndroidSave.instance.close(); - else if (GameSingletons.gumpman.gumpMode()) + else if (GameSingletons.gumpman.gumpMode()) { GameSingletons.gumpman.closeAllGumps(false); - else if (!VideoPlayer.closeIfPlaying()) + clickWait.release(); + } else if (!VideoPlayer.closeIfPlaying()) askToQuit(); } /* Modified: ExultAndroid/src/com/exult/android/GumpManager.java =================================================================== --- ExultAndroid/src/com/exult/android/GumpManager.java 2012-07-09 05:15:09 UTC (rev 7124) +++ ExultAndroid/src/com/exult/android/GumpManager.java 2012-07-15 21:28:27 UTC (rev 7125) @@ -1,10 +1,12 @@ package com.exult.android; import java.util.LinkedList; import java.util.ListIterator; +import java.util.Observable; import java.util.Observer; -import java.util.Observable; import java.util.concurrent.Semaphore; +import android.graphics.Point; + public final class GumpManager extends GameSingletons { private static int gumpCount = 0; // For staggering them. private LinkedList<Gump> openGumps; @@ -14,6 +16,7 @@ private int nonPersistentCount; private boolean dontPauseGame; // NEVER SET THIS MANUALLY! YOU MUST // CALL set_gumps_dontPauseGame. + private Thread gumpThread; // Targetting thread when gumps are open. public GumpManager() { openGumps = new LinkedList<Gump>(); } @@ -124,6 +127,20 @@ modal = (Gump.Modal)g; if (!dontPauseGame || g.isModal()) tqueue.pause(); + if (gumpThread == null && modal == null) { + gumpThread = new Thread() { // Track for 'normal' gumps. + public void run() { + while (nonPersistentCount > 0) { + GameObject t = ExultActivity.getTarget(new Point(), Mouse.hand); + System.out.println("gumpThread returned, count = " + nonPersistentCount); + if (t != null) + t.activate(); + } + gumpThread = null; + } + }; + gumpThread.start(); + } } gwin.setAllDirty(); } @@ -146,10 +163,12 @@ gump.getShapeNum() == shapenum) { // If found, move to end. if (iter.hasNext()) { - removeGump(gump); - addGump(gump); - } else - setKbdFocus(gump); + synchronized(openGumps) { + openGumps.remove(gump); + openGumps.addLast(gump); + } + } + setKbdFocus(gump); gwin.setAllDirty(); return; } @@ -225,6 +244,7 @@ */ public void closeAllGumps(boolean pers) { boolean removed = false; + System.out.println("gumpManager: closeAllGumps"); ListIterator<Gump> iter = openGumps.listIterator(); while (iter.hasNext()) { // Remove all gumps. Gump gump = iter.next(); @@ -237,6 +257,7 @@ } } nonPersistentCount = 0; + gumpThread = null; setKbdFocus(null); /* ++FINISH NEEDED? gwin.get_npc_prox().wait(4); // Delay "barking" for 4 secs. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |