v0.7.4c: warding vfx are now faster when shooting at a distant target
This commit is contained in:
+14
-1
@@ -44,6 +44,8 @@ public class MagicMissile extends Emitter {
|
|||||||
|
|
||||||
private Callback callback;
|
private Callback callback;
|
||||||
|
|
||||||
|
private PointF to;
|
||||||
|
|
||||||
private float sx;
|
private float sx;
|
||||||
private float sy;
|
private float sy;
|
||||||
private float time;
|
private float time;
|
||||||
@@ -90,6 +92,8 @@ public class MagicMissile extends Emitter {
|
|||||||
|
|
||||||
revive();
|
revive();
|
||||||
|
|
||||||
|
this.to = to;
|
||||||
|
|
||||||
x = from.x;
|
x = from.x;
|
||||||
y = from.y;
|
y = from.y;
|
||||||
width = 0;
|
width = 0;
|
||||||
@@ -161,14 +165,23 @@ public class MagicMissile extends Emitter {
|
|||||||
width = height = size;
|
width = height = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setSpeed( float newSpeed ){
|
||||||
|
PointF d = PointF.diff( to, new PointF(x, y) );
|
||||||
|
PointF speed = new PointF( d ).normalize().scale( newSpeed );
|
||||||
|
sx = speed.x;
|
||||||
|
sy = speed.y;
|
||||||
|
time = d.length() / newSpeed;
|
||||||
|
}
|
||||||
|
|
||||||
//convenience method for the common case of a bolt going from a character to a tile or enemy
|
//convenience method for the common case of a bolt going from a character to a tile or enemy
|
||||||
public static void boltFromChar(Group group, int type, Visual sprite, int to, Callback callback){
|
public static MagicMissile boltFromChar(Group group, int type, Visual sprite, int to, Callback callback){
|
||||||
MagicMissile missile = ((MagicMissile)group.recycle( MagicMissile.class ));
|
MagicMissile missile = ((MagicMissile)group.recycle( MagicMissile.class ));
|
||||||
if (Actor.findChar(to) != null){
|
if (Actor.findChar(to) != null){
|
||||||
missile.reset(type, sprite.center(), Actor.findChar(to).sprite.destinationCenter(), callback);
|
missile.reset(type, sprite.center(), Actor.findChar(to).sprite.destinationCenter(), callback);
|
||||||
} else {
|
} else {
|
||||||
missile.reset(type, sprite, to, callback);
|
missile.reset(type, sprite, to, callback);
|
||||||
}
|
}
|
||||||
|
return missile;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+5
-1
@@ -103,11 +103,15 @@ public class WandOfWarding extends Wand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void fx(Ballistica bolt, Callback callback) {
|
protected void fx(Ballistica bolt, Callback callback) {
|
||||||
MagicMissile.boltFromChar(curUser.sprite.parent,
|
MagicMissile m = MagicMissile.boltFromChar(curUser.sprite.parent,
|
||||||
MagicMissile.WARD,
|
MagicMissile.WARD,
|
||||||
curUser.sprite,
|
curUser.sprite,
|
||||||
bolt.collisionPos,
|
bolt.collisionPos,
|
||||||
callback);
|
callback);
|
||||||
|
|
||||||
|
if (bolt.dist > 10){
|
||||||
|
m.setSpeed(bolt.dist*20);
|
||||||
|
}
|
||||||
Sample.INSTANCE.play(Assets.SND_ZAP);
|
Sample.INSTANCE.play(Assets.SND_ZAP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user