added Parachute effect + sequences + cargo for BADR
This commit is contained in:
62
OpenRa.Game/Effects/Parachute.cs
Normal file
62
OpenRa.Game/Effects/Parachute.cs
Normal file
@@ -0,0 +1,62 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using OpenRa.Traits;
|
||||
using OpenRa.Graphics;
|
||||
|
||||
namespace OpenRa.Effects
|
||||
{
|
||||
class Parachute : IEffect
|
||||
{
|
||||
readonly Animation anim;
|
||||
readonly Animation paraAnim;
|
||||
readonly float2 location;
|
||||
|
||||
readonly Actor cargo;
|
||||
readonly Player owner;
|
||||
|
||||
float altitude;
|
||||
const float fallRate = .3f;
|
||||
|
||||
public Parachute(Player owner, string image, float2 location, int altitude, Actor cargo)
|
||||
{
|
||||
this.location = location;
|
||||
this.altitude = altitude;
|
||||
this.cargo = cargo;
|
||||
this.owner = owner;
|
||||
|
||||
anim = new Animation(image);
|
||||
anim.PlayFetchIndex("idle", () => 0);
|
||||
anim.Tick();
|
||||
|
||||
paraAnim = new Animation("parach");
|
||||
paraAnim.PlayThen("open", () => paraAnim.PlayRepeating("idle"));
|
||||
}
|
||||
|
||||
public void Tick(World world)
|
||||
{
|
||||
paraAnim.Tick();
|
||||
|
||||
altitude -= fallRate;
|
||||
|
||||
if (altitude <= 0)
|
||||
world.AddFrameEndTask(w =>
|
||||
{
|
||||
w.Remove(this);
|
||||
cargo.CancelActivity();
|
||||
cargo.CenterLocation = location;
|
||||
cargo.Location = ((1 / 24f) * location).ToInt2();
|
||||
w.Add(cargo);
|
||||
});
|
||||
}
|
||||
|
||||
public IEnumerable<Renderable> Render()
|
||||
{
|
||||
var pos = location - new float2(0, altitude);
|
||||
yield return new Renderable(anim.Image, location - .5f * anim.Image.size, PaletteType.Shadow, 0);
|
||||
yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, owner.Palette, 2);
|
||||
yield return new Renderable(paraAnim.Image, pos - .5f * paraAnim.Image.size, owner.Palette, 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -83,6 +83,7 @@
|
||||
<Compile Include="Effects\GpsSatellite.cs" />
|
||||
<Compile Include="Effects\InvulnEffect.cs" />
|
||||
<Compile Include="Effects\MoveFlash.cs" />
|
||||
<Compile Include="Effects\Parachute.cs" />
|
||||
<Compile Include="Effects\RepairIndicator.cs" />
|
||||
<Compile Include="Effects\SatelliteLaunch.cs" />
|
||||
<Compile Include="Effects\Smoke.cs" />
|
||||
|
||||
@@ -1027,6 +1027,21 @@ U2:
|
||||
WithShadow:
|
||||
IronCurtainable:
|
||||
|
||||
BADR:
|
||||
Inherits: ^Plane
|
||||
Unit:
|
||||
HP: 60
|
||||
Armor: light
|
||||
ROT: 5
|
||||
Sight: 0
|
||||
Speed: 16
|
||||
Plane:
|
||||
RenderUnit:
|
||||
WithShadow:
|
||||
IronCurtainable:
|
||||
Cargo:
|
||||
Passengers: 5
|
||||
|
||||
PBOX:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
|
||||
@@ -1047,4 +1047,8 @@
|
||||
<unit name="crate-effects">
|
||||
<sequence name="speed" start="0" length="*" src="speed" />
|
||||
</unit>
|
||||
<unit name="parach">
|
||||
<sequence name="open" start="0" length="5" />
|
||||
<sequence name="idle" start="5" length="11" />
|
||||
</unit>
|
||||
</sequences>
|
||||
@@ -208,7 +208,7 @@ LongDesc=Helicopter Gunship with Chainguns.\n Strong vs Infantry, Light Vehicle
|
||||
[U2]
|
||||
Traits=Unit, Plane, RenderUnit, WithShadow, IronCurtainable
|
||||
[BADR]
|
||||
Traits=Unit, Plane, RenderUnit, WithShadow, IronCurtainable
|
||||
Traits=Unit, Plane, RenderUnit, WithShadow, IronCurtainable, Cargo
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user