Convert GpsSatellite to world coordinates.

This commit is contained in:
Paul Chote
2013-05-16 01:41:28 +12:00
parent e122797a68
commit 4b4c1b71df
2 changed files with 16 additions and 17 deletions

View File

@@ -17,28 +17,29 @@ namespace OpenRA.Mods.RA.Effects
{
class GpsSatellite : IEffect
{
readonly float heightPerTick = 10;
float2 offset;
Animation anim = new Animation("sputnik");
float2 Origin;
WPos Pos;
Animation Anim = new Animation("sputnik");
public GpsSatellite(float2 offset)
public GpsSatellite(WPos pos, float2 spriteOrigin)
{
this.offset = offset;
anim.PlayRepeating("idle");
Pos = pos;
Origin = spriteOrigin;
Anim.PlayRepeating("idle");
}
public void Tick( World world )
{
anim.Tick();
offset.Y -= heightPerTick;
Anim.Tick();
Pos += new WVec(0, 0, 427);
if (offset.Y < 0)
if (Pos.Z > Pos.Y)
world.AddFrameEndTask(w => w.Remove(this));
}
public IEnumerable<IRenderable> Render(WorldRenderer wr)
{
yield return new SpriteRenderable(anim.Image, offset, wr.Palette("effect"), (int)offset.Y);
yield return new SpriteRenderable(Anim.Image, Pos, 0, wr.Palette("effect"), 1f, Origin);
}
}
}

View File

@@ -19,15 +19,15 @@ namespace OpenRA.Mods.RA.Effects
{
int frame = 0;
Animation doors = new Animation("atek");
float2 doorOffset = new float2(-4,0);
float2 pos;
float2 doorOrigin = new float2(16,24);
WPos pos;
public SatelliteLaunch(Actor a)
{
doors.PlayThen("active",
() => a.World.AddFrameEndTask(w => w.Remove(this)));
pos = a.CenterLocation.ToFloat2() + doorOffset;
pos = a.CenterPosition;
}
public void Tick( World world )
@@ -35,14 +35,12 @@ namespace OpenRA.Mods.RA.Effects
doors.Tick();
if (++frame == 19)
{
world.AddFrameEndTask(w => w.Add(new GpsSatellite(pos)));
}
world.AddFrameEndTask(w => w.Add(new GpsSatellite(pos, doorOrigin)));
}
public IEnumerable<IRenderable> Render(WorldRenderer wr)
{
yield return new SpriteRenderable(doors.Image, pos, wr.Palette("effect"), (int)doorOffset.Y);
yield return new SpriteRenderable(doors.Image, pos, 0, wr.Palette("effect"), 1f, doorOrigin);
}
}
}