From: <js...@us...> - 2012-07-29 21:06:38
|
Revision: 7130 http://exult.svn.sourceforge.net/exult/?rev=7130&view=rev Author: jsf Date: 2012-07-29 21:06:32 +0000 (Sun, 29 Jul 2012) Log Message: ----------- Visual feedback for gump that 'mouse' is on. Modified Paths: -------------- ExultAndroid/src/com/exult/android/DraggingInfo.java ExultAndroid/src/com/exult/android/ExultActivity.java ExultAndroid/src/com/exult/android/GameObject.java ExultAndroid/src/com/exult/android/GameRender.java ExultAndroid/src/com/exult/android/GameWindow.java ExultAndroid/src/com/exult/android/Gump.java ExultAndroid/src/com/exult/android/GumpWidget.java Modified: ExultAndroid/src/com/exult/android/DraggingInfo.java =================================================================== --- ExultAndroid/src/com/exult/android/DraggingInfo.java 2012-07-24 05:21:24 UTC (rev 7129) +++ ExultAndroid/src/com/exult/android/DraggingInfo.java 2012-07-29 21:06:32 UTC (rev 7130) @@ -295,8 +295,6 @@ if (!button.isDraggable()) return false; button.push(true); - // Pushed button, so make noise. - audio.playSfx(Audio.gameSfx(73)); gwin.setPainted(); } else if (gump.isDraggable()) { // Dragging whole gump. paint = new Point(gump.getX(), gump.getY()); @@ -484,9 +482,11 @@ boolean handled = moved; if (button != null) { button.unpush(true); - if (button.onWidget(x, y)) - // Clicked on button. + if (button.onWidget(x, y)) { + // Clicked button, so make noise. + audio.playSfx(Audio.gameSfx(73)); button.activate(true); + } handled = true; } else if (obj == null) { // Only dragging a gump? if (gump == null) Modified: ExultAndroid/src/com/exult/android/ExultActivity.java =================================================================== --- ExultAndroid/src/com/exult/android/ExultActivity.java 2012-07-24 05:21:24 UTC (rev 7129) +++ ExultAndroid/src/com/exult/android/ExultActivity.java 2012-07-29 21:06:32 UTC (rev 7130) @@ -31,6 +31,7 @@ private static Point clickPoint; // Non-null if getClick() is active. private static Point clickIgnore; // For waiting for a click, but don't care where. private static ClickTracker clickTrack; + private static final Rectangle tempRect = new Rectangle(); private static final Semaphore clickWait = new Semaphore(1, true); private static boolean targeting, tracking, trackingMouse; private static ExultActivity instance; @@ -679,18 +680,23 @@ dragged = GameSingletons.drag.moved(mx, my); } else if (targeting) { GameObject obj; + GameRender.Paintable elem = null; Gump gump = GameSingletons.gumpman.findGump(mx, my); - if (gump != null) - obj = gump.findObject(mx, my); - else - obj = gwin.findObject(mx, my); - if (obj != GameWindow.targetObj) { - if (GameWindow.targetObj != null) - gwin.addDirty(GameWindow.targetObj); - if (obj != null) - gwin.addDirty(obj); + if (gump != null) { + elem = obj = gump.findObject(mx, my); + if (obj == null) { + // ++++Maybe later: if ((elem = gump.onButton(mx, my)) == null) + elem = gump; + } + } else + elem = obj = gwin.findObject(mx, my); + if (elem != GameWindow.targetElem) { + if (GameWindow.targetElem != null) + gwin.addDirty(GameWindow.targetElem.getDirty(tempRect)); + if (elem != null) + gwin.addDirty(elem.getDirty(tempRect)); GameWindow.targetObj = obj; - GameWindow.targetElem = obj; + GameWindow.targetElem = elem; } } } else if (dragging) { Modified: ExultAndroid/src/com/exult/android/GameObject.java =================================================================== --- ExultAndroid/src/com/exult/android/GameObject.java 2012-07-24 05:21:24 UTC (rev 7129) +++ ExultAndroid/src/com/exult/android/GameObject.java 2012-07-29 21:06:32 UTC (rev 7130) @@ -1206,7 +1206,13 @@ gwin.getShapeLocation(paintLoc, this); paintOutline(paintLoc.x, paintLoc.y, pix); } - + @Override + public Rectangle getDirty(Rectangle rect) { + gwin.getShapeRect(rect, this); + rect.enlarge(1+EConst.c_tilesize/2); + gwin.clipToWin(rect); + return rect; + } public boolean isFindable() { return true; } Modified: ExultAndroid/src/com/exult/android/GameRender.java =================================================================== --- ExultAndroid/src/com/exult/android/GameRender.java 2012-07-24 05:21:24 UTC (rev 7129) +++ ExultAndroid/src/com/exult/android/GameRender.java 2012-07-29 21:06:32 UTC (rev 7130) @@ -187,10 +187,6 @@ obj.paint_outline(HIT_PIXEL); } */ - if (GameWindow.targetElem != null) - GameWindow.targetElem.paintOutline(ShapeID.HIT_PIXEL); - if (GameWindow.onObj != null) - GameWindow.onObj.paintOutline(ShapeID.POISON_PIXEL); return light_sources; } /* @@ -292,5 +288,6 @@ public static interface Paintable { public void paint(); public void paintOutline(int pix); + public Rectangle getDirty(Rectangle rect); }; } Modified: ExultAndroid/src/com/exult/android/GameWindow.java =================================================================== --- ExultAndroid/src/com/exult/android/GameWindow.java 2012-07-24 05:21:24 UTC (rev 7129) +++ ExultAndroid/src/com/exult/android/GameWindow.java 2012-07-29 21:06:32 UTC (rev 7130) @@ -1335,6 +1335,10 @@ drag.paint(); // Paint what user is dragging. effects.paintText(); gumpman.paint(true); + if (targetElem != null) + targetElem.paintOutline(ShapeID.HIT_PIXEL); + if (onObj != null) + onObj.paintOutline(ShapeID.POISON_PIXEL); Conversation conv = GameSingletons.conv; if (conv != null) conv.paint(); // Conversation. Modified: ExultAndroid/src/com/exult/android/Gump.java =================================================================== --- ExultAndroid/src/com/exult/android/Gump.java 2012-07-24 05:21:24 UTC (rev 7129) +++ ExultAndroid/src/com/exult/android/Gump.java 2012-07-29 21:06:32 UTC (rev 7130) @@ -67,14 +67,6 @@ x = (gwin.getWidth() - shape.getWidth())/2 + shape.getXLeft(); y = (gwin.getHeight() - shape.getHeight())/2 + shape.getYAbove(); } - // Get area covered by gump and its contents. - public void getDirty(Rectangle rect) { - if (shape == null) - rect.set(0,0,0,0); - else - rect.set(x - shape.getXLeft(), y - shape.getYAbove(), - shape.getWidth(), shape.getHeight()); - } // GameRender.Paintable @Override public void paint() { @@ -86,7 +78,20 @@ public void paintOutline(int pix) { shape.paintRleOutline(gwin.getWin(), x, y, ShapeID.getSpecialPixel(pix)); } - + // Get area covered by gump and its contents. + @Override + public Rectangle getDirty(Rectangle rect) { + if (shape == null) + rect.set(0,0,0,0); + else { + rect.set(x - shape.getXLeft(), y - shape.getYAbove(), + shape.getWidth(), shape.getHeight()); + rect.enlarge(1+EConst.c_tilesize/2); + // NEEDED? gwin.clipToWin(rect); + } + return rect; + } + public final void paintElems() { if (elems != null) { int cnt = elems.size(); Modified: ExultAndroid/src/com/exult/android/GumpWidget.java =================================================================== --- ExultAndroid/src/com/exult/android/GumpWidget.java 2012-07-24 05:21:24 UTC (rev 7129) +++ ExultAndroid/src/com/exult/android/GumpWidget.java 2012-07-29 21:06:32 UTC (rev 7130) @@ -43,7 +43,26 @@ my -= parent.getY() + y; return shape != null && shape.hasPoint(mx, my); } - // Get area covered by gump and its contents. + // GameRender.Paintable + @Override + public void paint() { + int px = 0, py = 0; + if (parent != null) { + px = parent.getX(); + py = parent.getY(); + } + shape.paint(gwin.getWin(), x+px, y+py); + } + @Override + public void paintOutline(int pix) { + int px = 0, py = 0; + if (parent != null) { + px = parent.getX(); + py = parent.getY(); + } + shape.paintRleOutline(gwin.getWin(), x + px, y + py, ShapeID.getSpecialPixel(pix)); + } + @Override public Rectangle getDirty(Rectangle rect) { if (shape == null) rect.set(0,0,0,0); @@ -55,23 +74,10 @@ } rect.set(x+px - shape.getXLeft(), y+py - shape.getYAbove(), shape.getWidth(), shape.getHeight()); + rect.enlarge(1+EConst.c_tilesize/2); } return rect; } - // GameRender.Paintable - @Override - public void paint() { - int px = 0, py = 0; - if (parent != null) { - px = parent.getX(); - py = parent.getY(); - } - shape.paint(gwin.getWin(), x+px, y+py); - } - @Override - public void paintOutline(int pix) { - shape.paintRleOutline(gwin.getWin(), x, y, ShapeID.getSpecialPixel(pix)); - } public Button onButton(int mx, int my) { return null; @@ -240,8 +246,9 @@ // On? Got to turn off others. Actor party[] = new Actor[9]; // Get entire party, including Avatar. + gwin.getParty(party, true); for (Actor a : party) { - if (a != actor && a.isCombatProtected()) + if (a != null && a != actor && a.isCombatProtected()) a.setCombatProtected(false); // +++++Should also update gumps. } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |