Added an animation when an attack misses

This commit is contained in:
arnaudcoj
2015-03-16 23:39:49 +01:00
parent 0acd31f090
commit 88b4dba796
6 changed files with 22 additions and 4 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -173,7 +173,7 @@ public final class CombatController implements VisualEffectCompletedCallback {
startAttackEffect(attack, attackPosition, this, CALLBACK_PLAYERATTACK);
} else {
combatActionListeners.onPlayerAttackMissed(target, attack);
playerAttackCompleted();
startMissedEffect(attack, attackPosition, this, CALLBACK_PLAYERATTACK);
}
}
@@ -393,7 +393,8 @@ public final class CombatController implements VisualEffectCompletedCallback {
startAttackEffect(attack, world.model.player.position, this, CALLBACK_MONSTERATTACK);
} else {
combatActionListeners.onMonsterAttackMissed(currentActiveMonster, attack);
startMissedEffect(attack, world.model.player.position, this, CALLBACK_PLAYERATTACK);
waitForNextMonsterAction();
}
}
@@ -431,6 +432,20 @@ public final class CombatController implements VisualEffectCompletedCallback {
, callback
, callbackValue);
}
private void startMissedEffect(AttackResult attack, final Coord position, VisualEffectCompletedCallback callback, int callbackValue) {
if (controllers.preferences.attackspeed_milliseconds <= 0) {
callback.onVisualEffectCompleted(callbackValue);
return;
}
controllers.effectController.startEffect(
position
, VisualEffectCollection.VisualEffectID.miss
, attack.damage
, callback
, callbackValue);
}
private void endMonsterTurn() {
currentActiveMonster = null;
newPlayerTurn(false);

View File

@@ -373,5 +373,6 @@ public final class ResourceLoader {
loader.prepareTileset(R.drawable.effect_blood4, "effect_blood4", new Size(7, 2), defaultTileSize);
loader.prepareTileset(R.drawable.effect_heal2, "effect_heal2", new Size(8, 2), defaultTileSize);
loader.prepareTileset(R.drawable.effect_poison1, "effect_poison1", new Size(8, 2), defaultTileSize);
loader.prepareTileset(R.drawable.effect_miss1, "effect_miss1", new Size(8, 2), defaultTileSize);
}
}

View File

@@ -9,7 +9,8 @@ public final class VisualEffectCollection {
public static enum VisualEffectID {
redSplash
,blueSwirl
,greenSplash;
,greenSplash
,miss;;
public static VisualEffectID fromString(String s, VisualEffectID default_) {
if (s == null) return default_;
@@ -23,6 +24,7 @@ public final class VisualEffectCollection {
effects[VisualEffectID.redSplash.ordinal()] = createEffect(loader, R.drawable.effect_blood4, new ConstRange(14, 0), 400, Color.RED);
effects[VisualEffectID.blueSwirl.ordinal()] = createEffect(loader, R.drawable.effect_heal2, new ConstRange(16, 0), 400, Color.rgb(150, 150, 255));
effects[VisualEffectID.greenSplash.ordinal()] = createEffect(loader, R.drawable.effect_poison1, new ConstRange(16, 0), 400, Color.GREEN);
effects[VisualEffectID.miss.ordinal()] = createEffect(loader, R.drawable.effect_miss1, new ConstRange(16, 0), 400, Color.GRAY);
}
public VisualEffect getVisualEffect(VisualEffectID effectID) {

View File

@@ -57,7 +57,7 @@ public final class TileManager {
public final TileCache tileCache = new TileCache();
public final TileCollection preloadedTiles = new TileCollection(97);
public final TileCollection preloadedTiles = new TileCollection(113);
public TileCollection currentMapTiles;
public TileCollection adjacentMapTiles;
private final HashSet<Integer> preloadedTileIDs = new HashSet<Integer>();