diff --git a/AndorsTrail/res/raw/monsterlist_debug.json b/AndorsTrail/res/raw/monsterlist_debug.json index f1fa767a2..eb168b5aa 100644 --- a/AndorsTrail/res/raw/monsterlist_debug.json +++ b/AndorsTrail/res/raw/monsterlist_debug.json @@ -62,7 +62,7 @@ "monsterClass": "insect", "maxHP": 10, "maxAP": 10, - "moveCost": 10, + "moveCost": 5, "attackCost": 10, "attackChance": 50, "droplistID": "debuglist1", diff --git a/AndorsTrail/res/values/authors.xml b/AndorsTrail/res/values/authors.xml index 72d9e17eb..3078720ad 100644 --- a/AndorsTrail/res/values/authors.xml +++ b/AndorsTrail/res/values/authors.xml @@ -16,6 +16,8 @@ Additional programming by Ethan Wessel<br /> Additional programming by Scott Lund<br /> Additional programming by <a href="https://github.com/Zukero">Kevin Pochat</a><br /> + Additional programming by Lucas Delvallet<br /> + Additional programming by Florian Doublet<br /> Additional graphics by Karvis<br /> Russian translation by Dreamer..., e.solodookhin, shell.andor, konstmih, istasman, Aleksey Kabanov, Alexander Zubok, Paul Sulemenkov and dromoz<br /> Italian translation by k6blue, liogiu, Joker and Andrea Luciano Damico<br /> diff --git a/AndorsTrail/res/values/loadresources.xml b/AndorsTrail/res/values/loadresources.xml index 66244fbe8..660f592ad 100644 --- a/AndorsTrail/res/values/loadresources.xml +++ b/AndorsTrail/res/values/loadresources.xml @@ -355,8 +355,11 @@ @xml/blackwater_mountain3 @xml/blackwater_mountain4 @xml/blackwater_mountain5 + @xml/blackwater_mountain5a + @xml/blackwater_mountain5c @xml/blackwater_mountain6 @xml/blackwater_mountain7 + @xml/blackwater_mountain7a @xml/blackwater_mountain8 @xml/blackwater_mountain9 @xml/blackwater_mountain10 diff --git a/AndorsTrail/res/xml/blackwater_mountain5.tmx b/AndorsTrail/res/xml/blackwater_mountain5.tmx index 6750a72e3..cf19834f6 100644 --- a/AndorsTrail/res/xml/blackwater_mountain5.tmx +++ b/AndorsTrail/res/xml/blackwater_mountain5.tmx @@ -174,11 +174,11 @@ - + - + diff --git a/AndorsTrail/res/xml/blackwater_mountain9.tmx b/AndorsTrail/res/xml/blackwater_mountain9.tmx index b9dc72d34..287b86896 100644 --- a/AndorsTrail/res/xml/blackwater_mountain9.tmx +++ b/AndorsTrail/res/xml/blackwater_mountain9.tmx @@ -237,15 +237,10 @@ - + - - - - - - + diff --git a/AndorsTrail/res/xml/debugmap.tmx b/AndorsTrail/res/xml/debugmap.tmx index 4d9b20e2c..1c7683509 100644 --- a/AndorsTrail/res/xml/debugmap.tmx +++ b/AndorsTrail/res/xml/debugmap.tmx @@ -122,12 +122,12 @@ - eJw7ysbAcHSQ4ydUNOsEEqalultkmgcAw35PpQ== + eJw7ysbAcHQQ4wYOBoYnVDTvBBKmpbpbZJoHAISsT2I= - eJxjYMAOktlxSNAYSFDRXlsm6plFLwAA6HwAyQ== + eJyby88AB7FI7JvMDBSDbDLMyOQnrIZYYMtEPbNIBfPI9AcAQ5QDxw== @@ -140,7 +140,7 @@ eJxjYBi+wFVgoF1AOgAAPUQAVg== - + @@ -181,10 +181,10 @@ - + - + diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/ConversationActivity.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/ConversationActivity.java index 8bc394546..b8a336709 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/ConversationActivity.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/ConversationActivity.java @@ -35,6 +35,7 @@ import com.gpl.rpg.AndorsTrail.model.quest.QuestProgress; import com.gpl.rpg.AndorsTrail.resource.tiles.TileManager; import java.util.ArrayList; +import java.util.ListIterator; public final class ConversationActivity extends Activity @@ -46,11 +47,16 @@ public final class ConversationActivity private static final int playerPhraseColor = 0; private static final int NPCPhraseColor = 0; private static final int rewardColor = Color.argb(255, 0x99, 0x99, 0x55); + private static final int oldPhraseColor = Color.argb(255,0x5a,0x5a, 0x5a); + private static final int oldPlayerNameColor = Color.argb(255, 0x5d, 0x11, 0x11); + private static final int oldNPCNameColor = Color.argb(255, 0x5d, 0x5d, 0x11); + private static final int oldRewardColor = Color.argb(255, 0x4C, 0x4C, 0x2A); private WorldContext world; private Player player; private final ArrayList conversationHistory = new ArrayList(); private ConversationController.ConversationStatemachine conversationState; + private int numberOfNewMessage = 0; private StatementContainerAdapter listAdapter; private Button nextButton; @@ -206,7 +212,26 @@ public final class ConversationActivity return null; // No reply was found. This is probably an error. } + private void greyAllConversationStatement(){ + int numberOfMessage = this.conversationHistory.size(); + while(numberOfNewMessage != 0){ + ConversationStatement conversation = conversationHistory.get(numberOfMessage - numberOfNewMessage); + if(conversation.hasActor()){ + conversation.textColor = oldPhraseColor; + if(conversation.isPlayerActor){ + conversation.nameColor = oldPlayerNameColor; + } else { + conversation.nameColor = oldNPCNameColor; + } + }else{ + conversation.textColor = oldRewardColor; + } + numberOfNewMessage--; + } + } + private void nextButtonClicked() { + greyAllConversationStatement(); RadioButton rb = getSelectedReplyButton(); replyGroup.removeAllViews(); nextButton.setEnabled(false); @@ -233,6 +258,7 @@ public final class ConversationActivity s.textColor = textColor; s.isPlayerActor = actor != null && actor == player; conversationHistory.add(s); + numberOfNewMessage++; statementList.clearFocus(); listAdapter.notifyDataSetChanged(); statementList.requestLayout(); diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/DebugInterface.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/DebugInterface.java index 036e6e73c..9fb451a32 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/DebugInterface.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/DebugInterface.java @@ -13,7 +13,6 @@ import com.gpl.rpg.AndorsTrail.context.ControllerContext; import com.gpl.rpg.AndorsTrail.context.WorldContext; import com.gpl.rpg.AndorsTrail.model.map.PredefinedMap; -@SuppressWarnings("unused") public final class DebugInterface { private final ControllerContext controllerContext; private final MainActivity mainActivity; diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/Constants.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/Constants.java index b5782ae34..57618f122 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/Constants.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/Constants.java @@ -32,7 +32,7 @@ public final class Constants { public static final int TICKS_PER_FULLROUND = FULLROUND_DURATION / TICK_DELAY; public static final int SPLATTER_DURATION_MS = 20000; - public static final ConstRange monsterWaitTurns = new ConstRange(30,4); + public static final ConstRange monsterWaitTurns = new ConstRange(5,1); public static final long MAP_UNVISITED_RESPAWN_DURATION_MS = 3 * 60 * 1000; // 3 min in milliseconds public static final String PREFERENCE_MODEL_LASTRUNVERSION = "lastversion"; diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java index 79f1eae58..b7acc4de6 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java @@ -1,11 +1,18 @@ package com.gpl.rpg.AndorsTrail.controller; +import java.util.ArrayList; + import android.content.res.Resources; + import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; import com.gpl.rpg.AndorsTrail.context.ControllerContext; import com.gpl.rpg.AndorsTrail.context.WorldContext; import com.gpl.rpg.AndorsTrail.model.GameStatistics; -import com.gpl.rpg.AndorsTrail.model.ability.*; +import com.gpl.rpg.AndorsTrail.model.ability.ActorCondition; +import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionEffect; +import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionType; +import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection; +import com.gpl.rpg.AndorsTrail.model.ability.SkillInfo; import com.gpl.rpg.AndorsTrail.model.actor.Actor; import com.gpl.rpg.AndorsTrail.model.actor.Monster; import com.gpl.rpg.AndorsTrail.model.actor.Player; @@ -25,8 +32,6 @@ import com.gpl.rpg.AndorsTrail.model.script.ScriptEffect; import com.gpl.rpg.AndorsTrail.util.ConstRange; import com.gpl.rpg.AndorsTrail.util.L; -import java.util.ArrayList; - public final class ConversationController { private final ControllerContext controllers; @@ -108,6 +113,9 @@ public final class ConversationController { case deactivateMapChangeArea: deactivateMapChangeArea(effect.mapName, effect.effectID); break; + case removeQuestProgress: + addRemoveQuestProgressReward(player, effect.effectID, effect.value); + break; } } @@ -156,14 +164,21 @@ public final class ConversationController { private void addQuestProgressReward(Player player, String questID, int questProgress, ScriptEffectResult result) { QuestProgress progress = new QuestProgress(questID, questProgress); boolean added = player.addQuestProgress(progress); + if (!added) return; // Only apply exp reward if the quest stage was reached just now (and not re-reached) QuestLogEntry stage = world.quests.getQuestLogEntry(progress); if (stage == null) return; + result.loot.exp += stage.rewardExperience; result.questProgress.add(progress); } + private void addRemoveQuestProgressReward(Player player, String questID, int questProgress) { + QuestProgress progress = new QuestProgress(questID, questProgress); + player.removeQuestProgress(progress); + } + private void addDropListReward(Player player, String droplistID, ScriptEffectResult result) { world.dropLists.getDropList(droplistID).createRandomLoot(result.loot, player); } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MonsterMovementController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MonsterMovementController.java index 2a19631bc..b8b8f68ca 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MonsterMovementController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MonsterMovementController.java @@ -74,7 +74,7 @@ public final class MonsterMovementController implements EvaluateWalkable { private void moveMonster(final Monster m, final MonsterSpawnArea area) { PredefinedMap map = world.model.currentMap; LayeredTileMap tileMap = world.model.currentTileMap; - m.nextActionTime += getMillisecondsPerMove(m); + m.nextActionTime = System.currentTimeMillis() + getMillisecondsPerMove(m); if (m.movementDestination == null) { // Monster has waited and should start to move again. m.movementDestination = new Coord(m.position); @@ -128,7 +128,7 @@ public final class MonsterMovementController implements EvaluateWalkable { private static void cancelCurrentMonsterMovement(final Monster m) { m.movementDestination = null; - m.nextActionTime += getMillisecondsPerMove(m) * Constants.rollValue(Constants.monsterWaitTurns); + m.nextActionTime = System.currentTimeMillis() + (getMillisecondsPerMove(m) * Constants.rollValue(Constants.monsterWaitTurns)); } private static int getMillisecondsPerMove(Monster m) { @@ -151,9 +151,17 @@ public final class MonsterMovementController implements EvaluateWalkable { return monsterCanMoveTo(world.model.currentMap, world.model.currentTileMap, r); } - public void moveMonsterToNextPosition(Monster m, PredefinedMap map) { - CoordRect previousPosition = new CoordRect(new Coord(m.position), m.rectPosition.size); + public void moveMonsterToNextPosition(final Monster m, final PredefinedMap map) { + final CoordRect previousPosition = new CoordRect(new Coord(m.position), m.rectPosition.size); + m.lastPosition.set(previousPosition.topLeft); m.position.set(m.nextPosition.topLeft); - monsterMovementListeners.onMonsterMoved(map, m, previousPosition); + controllers.effectController.startActorMoveEffect(m, previousPosition.topLeft, m.position, getMillisecondsPerMove(m) / 4, new VisualEffectController.VisualEffectCompletedCallback() { + + @Override + public void onVisualEffectCompleted(int callbackValue) { + + monsterMovementListeners.onMonsterMoved(map, m, previousPosition); + } + }, 0); } } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MovementController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MovementController.java index 66aa575b7..878d40c20 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MovementController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MovementController.java @@ -228,15 +228,24 @@ public final class MovementController implements TimedMessageTask.Callback { player.lastPosition.set(player.position); player.position.set(newPosition); controllers.combatController.setCombatSelection(null, null); - playerMovementListeners.onPlayerMoved(newPosition, player.lastPosition); + + controllers.effectController.startActorMoveEffect(player, player.lastPosition, newPosition, (int) (Constants.MINIMUM_INPUT_INTERVAL / 2), new VisualEffectController.VisualEffectCompletedCallback() { + + @Override + public void onVisualEffectCompleted(int callbackValue) { + playerMovementListeners.onPlayerMoved(newPosition, player.lastPosition); - controllers.mapController.handleMapEventsAfterMovement(currentMap, newPosition, player.lastPosition); + controllers.mapController.handleMapEventsAfterMovement(currentMap, newPosition, player.lastPosition); - if (!world.model.uiSelections.isInCombat) { - //currentMap can be outdated due to mapchange events processed above. - Loot loot = world.model.currentMap.getBagAt(newPosition); - if (loot != null) controllers.itemController.playerSteppedOnLootBag(loot); - } + if (!world.model.uiSelections.isInCombat) { + //currentMap can be outdated due to mapchange events processed above. + Loot loot = world.model.currentMap.getBagAt(newPosition); + if (loot != null) controllers.itemController.playerSteppedOnLootBag(loot); + } + } + }, 0); + + } public void respawnPlayer(Resources res) { diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/VisualEffectController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/VisualEffectController.java index 63812e7ab..bd422491f 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/VisualEffectController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/VisualEffectController.java @@ -4,9 +4,11 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Align; import android.os.Handler; + import com.gpl.rpg.AndorsTrail.context.ControllerContext; import com.gpl.rpg.AndorsTrail.context.WorldContext; import com.gpl.rpg.AndorsTrail.controller.listeners.VisualEffectFrameListeners; +import com.gpl.rpg.AndorsTrail.model.actor.Actor; import com.gpl.rpg.AndorsTrail.model.actor.Monster; import com.gpl.rpg.AndorsTrail.model.actor.MonsterType; import com.gpl.rpg.AndorsTrail.model.map.PredefinedMap; @@ -54,7 +56,70 @@ public final class VisualEffectController { enqueuedEffectID = null; enqueuedEffectValue = 0; } + + public void startActorMoveEffect(Actor actor, Coord origin, Coord destination, int duration, VisualEffectCompletedCallback callback, int callbackValue) { + ++effectCount; + (new SpriteMoveAnimation(origin, destination, duration, actor, callback, callbackValue)) + .start(); + } + public final class SpriteMoveAnimation extends Handler implements Runnable { + + private static final int millisecondsPerFrame=25; + + private final VisualEffectCompletedCallback callback; + private final int callbackValue; + + public final int duration; + public final Actor actor; + public final Coord origin; + public final Coord destination; + + public int timeElapsed; + + @Override + public void run() { + update(); + if (System.currentTimeMillis() - actor.vfxStartTime >= duration) { + onCompleted(); + } else { + postDelayed(this, millisecondsPerFrame); + } + } + + public SpriteMoveAnimation(Coord origin, Coord destination, int duration, Actor actor, VisualEffectCompletedCallback callback, int callbackValue) { + this.callback = callback; + this.callbackValue = callbackValue; + this.duration = duration; + this.actor = actor; + this.origin = origin; + this.destination = destination; + this.timeElapsed = 0; + + } + + private void update() { + + visualEffectFrameListeners.onNewSpriteMoveFrame(this); + } + + private void onCompleted() { + --effectCount; + actor.hasVFXRunning = false; + if (callback != null) callback.onVisualEffectCompleted(callbackValue); + visualEffectFrameListeners.onSpriteMoveCompleted(this); + } + + + public void start() { + actor.hasVFXRunning = true; + actor.vfxDuration = duration; + actor.vfxStartTime = System.currentTimeMillis(); + postDelayed(this, 0); + } + + } + public final class VisualEffectAnimation extends Handler implements Runnable { @Override diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/listeners/VisualEffectFrameListener.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/listeners/VisualEffectFrameListener.java index 4fb6a7d96..c794c8624 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/listeners/VisualEffectFrameListener.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/listeners/VisualEffectFrameListener.java @@ -1,8 +1,11 @@ package com.gpl.rpg.AndorsTrail.controller.listeners; +import com.gpl.rpg.AndorsTrail.controller.VisualEffectController.SpriteMoveAnimation; import com.gpl.rpg.AndorsTrail.controller.VisualEffectController.VisualEffectAnimation; public interface VisualEffectFrameListener { void onNewAnimationFrame(VisualEffectAnimation animation, int tileID, int textYOffset); void onAnimationCompleted(VisualEffectAnimation animation); + void onNewSpriteMoveFrame(SpriteMoveAnimation animation); + void onSpriteMoveCompleted(SpriteMoveAnimation animation); } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/listeners/VisualEffectFrameListeners.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/listeners/VisualEffectFrameListeners.java index 0801938c7..cec0fcdba 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/listeners/VisualEffectFrameListeners.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/listeners/VisualEffectFrameListeners.java @@ -1,5 +1,6 @@ package com.gpl.rpg.AndorsTrail.controller.listeners; +import com.gpl.rpg.AndorsTrail.controller.VisualEffectController.SpriteMoveAnimation; import com.gpl.rpg.AndorsTrail.controller.VisualEffectController.VisualEffectAnimation; import com.gpl.rpg.AndorsTrail.util.ListOfListeners; @@ -12,6 +13,14 @@ public final class VisualEffectFrameListeners extends ListOfListeners onAnimationCompleted = new Function1() { @Override public void call(VisualEffectFrameListener listener, VisualEffectAnimation animation) { listener.onAnimationCompleted(animation); } }; + + private final Function1 onNewSpriteMoveFrame = new Function1() { + @Override public void call(VisualEffectFrameListener listener, SpriteMoveAnimation animation) { listener.onNewSpriteMoveFrame(animation); } + }; + + private final Function1 onSpriteMoveCompleted = new Function1() { + @Override public void call(VisualEffectFrameListener listener, SpriteMoveAnimation animation) { listener.onSpriteMoveCompleted(animation); } + }; @Override public void onNewAnimationFrame(VisualEffectAnimation animation, int tileID, int textYOffset) { @@ -22,4 +31,14 @@ public final class VisualEffectFrameListeners extends ListOfListeners model.player.vfxDuration) vfxElapsedTime = model.player.vfxDuration; + int x = ((model.player.position.x - mapViewArea.topLeft.x) * tileSize * vfxElapsedTime + ((model.player.lastPosition.x - mapViewArea.topLeft.x) * tileSize * (model.player.vfxDuration - vfxElapsedTime))) / model.player.vfxDuration; + int y = ((model.player.position.y - mapViewArea.topLeft.y) * tileSize * vfxElapsedTime + ((model.player.lastPosition.y - mapViewArea.topLeft.y) * tileSize * (model.player.vfxDuration - vfxElapsedTime))) / model.player.vfxDuration; + tiles.drawTile(canvas, model.player.iconID, x, y, mPaint); + } for (MonsterSpawnArea a : currentMap.spawnAreas) { for (Monster m : a.monsters) { - drawFromMapPosition(canvas, area, m.rectPosition, m.iconID); + if (!m.hasVFXRunning) { + drawFromMapPosition(canvas, area, m.rectPosition, m.iconID); + } else if (area.intersects(m.rectPosition) || area.contains(m.lastPosition)) { + int vfxElapsedTime = (int) (System.currentTimeMillis() - m.vfxStartTime); + if (vfxElapsedTime > m.vfxDuration) vfxElapsedTime = m.vfxDuration; + int x = ((m.position.x - mapViewArea.topLeft.x) * tileSize * vfxElapsedTime + ((m.lastPosition.x - mapViewArea.topLeft.x) * tileSize * (m.vfxDuration - vfxElapsedTime))) / m.vfxDuration; + int y = ((m.position.y - mapViewArea.topLeft.y) * tileSize * vfxElapsedTime + ((m.lastPosition.y - mapViewArea.topLeft.y) * tileSize * (m.vfxDuration - vfxElapsedTime))) / m.vfxDuration; + tiles.drawTile(canvas, m.iconID, x, y, mPaint); + } } } - + } + + private void doDrawRect_Above(Canvas canvas, CoordRect area) { tryDrawMapLayer(canvas, area, currentTileMap.currentLayout.layerAbove); if (model.uiSelections.selectedPosition != null) { @@ -342,6 +405,7 @@ public final class MainView extends SurfaceView ,Math.min(screenSizeTileCount.height, currentMap.size.height) ); mapViewArea = new CoordRect(mapTopLeft, visibleNumberOfTiles); + updateClip(); screenOffset.set( (surfaceSize.width - scaledTileSize * visibleNumberOfTiles.width) / 2 @@ -370,8 +434,13 @@ public final class MainView extends SurfaceView mapTopLeft.y = Math.max(0, playerPosition.y - mapViewArea.size.height/2); mapTopLeft.y = Math.min(mapTopLeft.y, currentMap.size.height - mapViewArea.size.height); } + updateClip(); } } + + private void updateClip() { + worldCoordsToScreenCords(mapViewArea, redrawClip); + } @Override public void onPlayerMoved(Coord newPosition, Coord previousPosition) { @@ -492,6 +561,16 @@ public final class MainView extends SurfaceView public void onAnimationCompleted(VisualEffectAnimation animation) { redrawArea(animation.area, RedrawAreaDebugReason.EffectCompleted); } + + @Override + public void onNewSpriteMoveFrame(SpriteMoveAnimation animation) { + redrawMoveArea_(CoordRect.getBoundingRect(animation.origin, animation.destination), animation); + } + + @Override + public void onSpriteMoveCompleted(SpriteMoveAnimation animation) { + redrawArea(CoordRect.getBoundingRect(animation.origin, animation.destination), RedrawAreaDebugReason.EffectCompleted); + } @Override public void onNewTick() { diff --git a/AndorsTrailEdit/partials/edit_dialogue.html b/AndorsTrailEdit/partials/edit_dialogue.html index 45a9c49b3..8c0ddb895 100644 --- a/AndorsTrailEdit/partials/edit_dialogue.html +++ b/AndorsTrailEdit/partials/edit_dialogue.html @@ -31,6 +31,7 @@ +
+
+ + +
+
+ + +
+