/** * Animate the movement of the game map * * @param dir * @param speed * @param run */ public void animate(final int dir, final int speed, final boolean run) { // remember move dir and int mod = 1; if (run) { mod = 2; } switch (dir) { case Location.DIR_NORTH: // animate map ani.start(0, 0, MapConstants.STEP_X * mod, -MapConstants.STEP_Y * mod, speed); break; case Location.DIR_NORTHEAST: // animate map ani.start(0, 0, 0, -MapConstants.TILE_H * mod, speed); break; case Location.DIR_EAST: // animate map ani.start(0, 0, -MapConstants.STEP_X * mod, -MapConstants.STEP_Y * mod, speed); break; case Location.DIR_SOUTHEAST: // animate map ani.start(0, 0, -MapConstants.TILE_W * mod, 0, speed); break; case Location.DIR_SOUTH: // animate map ani.start(0, 0, -MapConstants.STEP_X * mod, MapConstants.STEP_Y * mod, speed); break; case Location.DIR_SOUTHWEST: // animate map ani.start(0, 0, 0, MapConstants.TILE_H * mod, speed); break; case Location.DIR_WEST: // animate map ani.start(0, 0, MapConstants.STEP_X * mod, MapConstants.STEP_Y * mod, speed); break; case Location.DIR_NORTHWEST: // animate map ani.start(0, 0, MapConstants.TILE_W, 0, speed); break; default: animationFinished(false); } // start separate Elevation animation final int fromElevation = elevation; elevation = World.getMap().getElevationAt(World.getPlayer().getLocation()); if (elevation != fromElevation) { levelAni.start(0, -fromElevation, 0, -elevation, speed); } // adjust Z-order after update if (World.getAvatar() != null) { readd(World.getAvatar()); } }
/** * Move the map origin to a new location * * @param location */ public void setLocation(final Location location) { // origin.setSC(location.scX, location.scY, 0); origin.set(location); ani.stop(); final Avatar avatar = World.getAvatar(); if (avatar != null) { avatar.animationFinished(false); } elevation = World.getMap().getElevationAt(origin); dX = 0; dY = 0; dL = -elevation; Camera.getInstance().markEverythingDirty(); }