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\GpsSatellite.cs" />
|
||||||
<Compile Include="Effects\InvulnEffect.cs" />
|
<Compile Include="Effects\InvulnEffect.cs" />
|
||||||
<Compile Include="Effects\MoveFlash.cs" />
|
<Compile Include="Effects\MoveFlash.cs" />
|
||||||
|
<Compile Include="Effects\Parachute.cs" />
|
||||||
<Compile Include="Effects\RepairIndicator.cs" />
|
<Compile Include="Effects\RepairIndicator.cs" />
|
||||||
<Compile Include="Effects\SatelliteLaunch.cs" />
|
<Compile Include="Effects\SatelliteLaunch.cs" />
|
||||||
<Compile Include="Effects\Smoke.cs" />
|
<Compile Include="Effects\Smoke.cs" />
|
||||||
|
|||||||
@@ -1027,6 +1027,21 @@ U2:
|
|||||||
WithShadow:
|
WithShadow:
|
||||||
IronCurtainable:
|
IronCurtainable:
|
||||||
|
|
||||||
|
BADR:
|
||||||
|
Inherits: ^Plane
|
||||||
|
Unit:
|
||||||
|
HP: 60
|
||||||
|
Armor: light
|
||||||
|
ROT: 5
|
||||||
|
Sight: 0
|
||||||
|
Speed: 16
|
||||||
|
Plane:
|
||||||
|
RenderUnit:
|
||||||
|
WithShadow:
|
||||||
|
IronCurtainable:
|
||||||
|
Cargo:
|
||||||
|
Passengers: 5
|
||||||
|
|
||||||
PBOX:
|
PBOX:
|
||||||
Inherits: ^Building
|
Inherits: ^Building
|
||||||
Buildable:
|
Buildable:
|
||||||
|
|||||||
@@ -408,7 +408,7 @@
|
|||||||
</cursor>
|
</cursor>
|
||||||
<cursor src="nopower">
|
<cursor src="nopower">
|
||||||
<sequence name="powerdown-blocked" start="0" length="1" x="12" y="12" />
|
<sequence name="powerdown-blocked" start="0" length="1" x="12" y="12" />
|
||||||
<sequence name="powerdown" start="1" length="3" x="12" y="12" />
|
<sequence name="powerdown" start="1" length="3" x="12" y="12" />
|
||||||
</cursor>
|
</cursor>
|
||||||
<unit name="powerdown">
|
<unit name="powerdown">
|
||||||
<sequence name="disabled" start="3" length="1" src="speed" />
|
<sequence name="disabled" start="3" length="1" src="speed" />
|
||||||
@@ -1041,10 +1041,14 @@
|
|||||||
<unit name="u2">
|
<unit name="u2">
|
||||||
<sequence name="idle" start="0" length="16" />
|
<sequence name="idle" start="0" length="16" />
|
||||||
</unit>
|
</unit>
|
||||||
<unit name="crate">
|
<unit name="crate">
|
||||||
<sequence name="idle" start="0" length="16" src="wcrate" />
|
<sequence name="idle" start="0" length="16" src="wcrate" />
|
||||||
</unit>
|
</unit>
|
||||||
<unit name="crate-effects">
|
<unit name="crate-effects">
|
||||||
<sequence name="speed" start="0" length="*" src="speed" />
|
<sequence name="speed" start="0" length="*" src="speed" />
|
||||||
</unit>
|
</unit>
|
||||||
|
<unit name="parach">
|
||||||
|
<sequence name="open" start="0" length="5" />
|
||||||
|
<sequence name="idle" start="5" length="11" />
|
||||||
|
</unit>
|
||||||
</sequences>
|
</sequences>
|
||||||
@@ -208,7 +208,7 @@ LongDesc=Helicopter Gunship with Chainguns.\n Strong vs Infantry, Light Vehicle
|
|||||||
[U2]
|
[U2]
|
||||||
Traits=Unit, Plane, RenderUnit, WithShadow, IronCurtainable
|
Traits=Unit, Plane, RenderUnit, WithShadow, IronCurtainable
|
||||||
[BADR]
|
[BADR]
|
||||||
Traits=Unit, Plane, RenderUnit, WithShadow, IronCurtainable
|
Traits=Unit, Plane, RenderUnit, WithShadow, IronCurtainable, Cargo
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user