From: <js...@us...> - 2010-11-23 07:18:33
|
Revision: 6454 http://exult.svn.sourceforge.net/exult/?rev=6454&view=rev Author: jsf Date: 2010-11-23 07:18:27 +0000 (Tue, 23 Nov 2010) Log Message: ----------- Starting to walk. Modified Paths: -------------- ExultAndroid/src/com/exult/android/Actor.java ExultAndroid/src/com/exult/android/ActorAction.java ExultAndroid/src/com/exult/android/ExultActivity.java ExultAndroid/src/com/exult/android/GameObject.java ExultAndroid/src/com/exult/android/MainActor.java ExultAndroid/src/com/exult/android/ZombiePathFinder.java Modified: ExultAndroid/src/com/exult/android/Actor.java =================================================================== --- ExultAndroid/src/com/exult/android/Actor.java 2010-11-23 05:33:07 UTC (rev 6453) +++ ExultAndroid/src/com/exult/android/Actor.java 2010-11-23 07:18:27 UTC (rev 6454) @@ -330,6 +330,19 @@ return !(getFlag(GameObject.paralyzed) || getFlag(GameObject.asleep) || isDead() || getProperty(health) <= 0); } + public boolean inUsecodeControl() { + if (getFlag(GameObject.dont_render) || getFlag(GameObject.dont_move)) + return true; + /* +++++++ + Usecode_script *scr = 0; + Actor *act = const_cast<Actor *>(this); + while ((scr = Usecode_script::find_active(act, scr)) != 0) + // no_halt scripts seem not to prevent movement. + if (!scr->is_no_halt()) + return true; + */ + return false; + } /* * Walk towards a given tile. */ Modified: ExultAndroid/src/com/exult/android/ActorAction.java =================================================================== --- ExultAndroid/src/com/exult/android/ActorAction.java 2010-11-23 05:33:07 UTC (rev 6453) +++ ExultAndroid/src/com/exult/android/ActorAction.java 2010-11-23 07:18:27 UTC (rev 6454) @@ -26,6 +26,9 @@ abstract public int handleEvent(Actor actor); abstract public void stop(Actor actor); abstract public ActorAction walkToTile(Actor npc, Tile src, Tile dest, int dist); + public int getSpeed() { + return 0; + } /* * Follow a path. */ @@ -41,7 +44,7 @@ private byte max_blocked; // Try this many times. private byte blocked_frame; // Frame for blocked tile. private Tile blocked_tile; // Tile to retry. - private Tile stepTile = new Tile(), curTile = new Tile();; + private Tile stepTile = new Tile(), curTile = new Tile(); private void setSubseq(ActorAction sub) { subseq = sub; } @@ -55,10 +58,10 @@ int delay = subseq.handleEvent(actor); if (delay != 0) return delay; // Still going. - setSubseq(null); + setSubseq(null); // He was stopped, so restore speed. - actor.setFrameTime(speed); - return speed; // Come back in a moment. + actor.setFrameTime(speed); + return speed; // Come back in a moment. } /* +++++++++++++ if (blocked != 0) { Modified: ExultAndroid/src/com/exult/android/ExultActivity.java =================================================================== --- ExultAndroid/src/com/exult/android/ExultActivity.java 2010-11-23 05:33:07 UTC (rev 6453) +++ ExultAndroid/src/com/exult/android/ExultActivity.java 2010-11-23 07:18:27 UTC (rev 6454) @@ -71,9 +71,9 @@ if (GameTime > nextTickTime ) { nextTickTime = GameTime + stdDelay; TimeQueue.ticks +=1; - // I think we would execute timed activities here using new ticks. - - + synchronized (gwin.getTqueue()) { + gwin.getTqueue().activate(TimeQueue.ticks); + } if (gwin.isDirty()) { gwin.paintDirty(); } @@ -131,6 +131,7 @@ } private OnTouchListener touchListener = new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { + synchronized (gwin.getTqueue()) { int x = (int)gwin.getWin().screenToGameX(event.getX()), y = (int)gwin.getWin().screenToGameY(event.getY()); switch (event.getAction()) { @@ -138,7 +139,7 @@ gwin.startActor(x, y, 1); return true; case MotionEvent.ACTION_UP: - gwin.stopActor(); + //+++++TESTING gwin.stopActor(); return true; case MotionEvent.ACTION_MOVE: gwin.startActor(x, y, 1); @@ -148,6 +149,7 @@ } return false; } + } }; private OnKeyListener keyListener = new OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { Modified: ExultAndroid/src/com/exult/android/GameObject.java =================================================================== --- ExultAndroid/src/com/exult/android/GameObject.java 2010-11-23 05:33:07 UTC (rev 6453) +++ ExultAndroid/src/com/exult/android/GameObject.java 2010-11-23 07:18:27 UTC (rev 6454) @@ -159,21 +159,24 @@ Iterator X; GameObject obj; - // First do those we depend on. - for (X = dependencies.iterator(); X.hasNext(); ) { - obj = (GameObject)X.next(); - if (obj.dependors != null) - obj.dependors.remove(this); + if (dependencies != null) { + // First do those we depend on. + for (X = dependencies.iterator(); X.hasNext(); ) { + obj = (GameObject)X.next(); + if (obj.dependors != null) + obj.dependors.remove(this); + } + dependencies.clear(); } - dependencies.clear(); - - // Now those who depend on us. - for (X = dependors.iterator(); X.hasNext(); ) { - obj = (GameObject)X.next(); - if (obj.dependencies != null) - obj.dependencies.remove(this); + if (dependors != null) { + // Now those who depend on us. + for (X = dependors.iterator(); X.hasNext(); ) { + obj = (GameObject)X.next(); + if (obj.dependencies != null) + obj.dependencies.remove(this); + } + dependors.clear(); } - dependors.clear(); } public void paint() { int x, y; Modified: ExultAndroid/src/com/exult/android/MainActor.java =================================================================== --- ExultAndroid/src/com/exult/android/MainActor.java 2010-11-23 05:33:07 UTC (rev 6453) +++ ExultAndroid/src/com/exult/android/MainActor.java 2010-11-23 07:18:27 UTC (rev 6454) @@ -10,32 +10,27 @@ * Handle a time event (for TimeSensitive). */ public void handleEvent(int ctime, Object udata) { - /* ++++++++FINISH - if (action) // Doing anything? - { // Do what we should. - int speed = action->get_speed(); - int delay = action->handle_event(this); - if (!delay) - { // Action finished. + if (action != null) { // Doing anything? + // Do what we should. + int speed = action.getSpeed(); + int delay = action.handleEvent(this); + if (delay == 0) { + // Action finished. // This makes for a smoother scrolling and prevents the // avatar from skipping a step when walking. - frame_time = speed; - if (!frame_time) // Not a path. Add a delay anyway. - frame_time = gwin->get_std_delay(); - delay = frame_time; - set_action(0); - } - - gwin->get_tqueue()->add( - curtime + delay, this, udata); - } - else if (in_usecode_control() || get_flag(Obj_flags::paralyzed)) + frameTime = speed; + if (frameTime == 0) // Not a path. Add a delay anyway. + frameTime = 1; // 1 tick. + delay = frameTime; + setAction(null); + } + gwin.getTqueue().add(ctime + delay, this, udata); + } else if (inUsecodeControl() || getFlag(GameObject.paralyzed)) // Keep trying if we are in usecode control. - gwin->get_tqueue()->add( - curtime + gwin->get_std_delay(), this, udata); - else if (schedule) - schedule->now_what(); - */ + gwin.getTqueue().add(ctime + 1, this, udata); + /* else ++++ if (schedule != null) + schedule.nowWhat(); + */ } public boolean step(Tile t, int frame, boolean force) { restTime = 0; // Reset counter. Modified: ExultAndroid/src/com/exult/android/ZombiePathFinder.java =================================================================== --- ExultAndroid/src/com/exult/android/ZombiePathFinder.java 2010-11-23 05:33:07 UTC (rev 6453) +++ ExultAndroid/src/com/exult/android/ZombiePathFinder.java 2010-11-23 07:18:27 UTC (rev 6454) @@ -17,6 +17,9 @@ // subtract 'major_delta' from sum. private int sum1, sum2; // Sum of 'minor_delta''s. + public ZombiePathFinder() { + major_frame_incr = 1; + } @Override public boolean NewPath(Tile s, Tile d) { cur[X] = s.tx; cur[Y] = s.ty; cur[Z] = s.tz; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |