Merge pull request #11639 from Mailaender/check-cnc-sequences

Added sequence reference checks to OpenRA.Mods.Cnc.Traits.Render
This commit is contained in:
abcdefg30
2016-07-12 21:40:27 +02:00
committed by GitHub
4 changed files with 11 additions and 7 deletions

View File

@@ -29,7 +29,7 @@ namespace OpenRA.Mods.Cnc.Effects
int weaponDelay; int weaponDelay;
bool impacted = false; bool impacted = false;
public IonCannon(Player firedBy, WeaponInfo weapon, World world, CPos location, string effect, string palette, int delay) public IonCannon(Player firedBy, WeaponInfo weapon, World world, CPos location, string effect, string sequence, string palette, int delay)
{ {
this.firedBy = firedBy; this.firedBy = firedBy;
this.weapon = weapon; this.weapon = weapon;
@@ -37,7 +37,7 @@ namespace OpenRA.Mods.Cnc.Effects
weaponDelay = delay; weaponDelay = delay;
target = Target.FromCell(world, location); target = Target.FromCell(world, location);
anim = new Animation(world, effect); anim = new Animation(world, effect);
anim.PlayThen("idle", () => Finish(world)); anim.PlayThen(sequence, () => Finish(world));
} }
public void Tick(World world) public void Tick(World world)

View File

@@ -18,9 +18,9 @@ namespace OpenRA.Mods.Cnc.Traits.Render
[Desc("Building animation to play when ProductionAirdrop is used to deliver units.")] [Desc("Building animation to play when ProductionAirdrop is used to deliver units.")]
public class WithDeliveryAnimationInfo : ITraitInfo, Requires<WithSpriteBodyInfo> public class WithDeliveryAnimationInfo : ITraitInfo, Requires<WithSpriteBodyInfo>
{ {
public readonly string ActiveSequence = "active"; [SequenceReference] public readonly string ActiveSequence = "active";
public readonly string IdleSequence = "idle"; [SequenceReference] public readonly string IdleSequence = "idle";
public object Create(ActorInitializer init) { return new WithDeliveryAnimation(init.Self, this); } public object Create(ActorInitializer init) { return new WithDeliveryAnimation(init.Self, this); }
} }

View File

@@ -19,7 +19,7 @@ namespace OpenRA.Mods.Cnc.Traits.Render
[Desc("Provides an overlay for the Tiberian Dawn hover craft.")] [Desc("Provides an overlay for the Tiberian Dawn hover craft.")]
public class WithRoofInfo : ITraitInfo, Requires<RenderSpritesInfo> public class WithRoofInfo : ITraitInfo, Requires<RenderSpritesInfo>
{ {
public readonly string Sequence = "roof"; [SequenceReference] public readonly string Sequence = "roof";
public object Create(ActorInitializer init) { return new WithRoof(init.Self, this); } public object Create(ActorInitializer init) { return new WithRoof(init.Self, this); }
} }

View File

@@ -27,8 +27,12 @@ namespace OpenRA.Mods.Cnc.Traits
[Desc("Amount of time to keep the camera alive")] [Desc("Amount of time to keep the camera alive")]
public readonly int CameraRemoveDelay = 25; public readonly int CameraRemoveDelay = 25;
[Desc("Effect sequence to display")] [Desc("Effect sequence sprite image")]
public readonly string Effect = "ionsfx"; public readonly string Effect = "ionsfx";
[Desc("Effect sequence to display")]
[SequenceReference("Effect")] public readonly string EffectSequence = "idle";
[PaletteReference] public readonly string EffectPalette = "effect"; [PaletteReference] public readonly string EffectPalette = "effect";
[Desc("Which weapon to fire"), WeaponReference] [Desc("Which weapon to fire"), WeaponReference]
@@ -60,7 +64,7 @@ namespace OpenRA.Mods.Cnc.Traits
self.World.AddFrameEndTask(w => self.World.AddFrameEndTask(w =>
{ {
Game.Sound.Play(Info.LaunchSound, self.World.Map.CenterOfCell(order.TargetLocation)); Game.Sound.Play(Info.LaunchSound, self.World.Map.CenterOfCell(order.TargetLocation));
w.Add(new IonCannon(self.Owner, info.WeaponInfo, w, order.TargetLocation, info.Effect, info.EffectPalette, info.WeaponDelay)); w.Add(new IonCannon(self.Owner, info.WeaponInfo, w, order.TargetLocation, info.Effect, info.EffectSequence, info.EffectPalette, info.WeaponDelay));
if (info.CameraActor == null) if (info.CameraActor == null)
return; return;