From 34d96878b81b63d3817d3f1a50a1f55198e1d4f3 Mon Sep 17 00:00:00 2001 From: Curtis Shmyr Date: Sun, 23 Sep 2012 23:12:29 -0600 Subject: [PATCH] Added demo truck to soviet's arensal; still problems to fix --- OpenRA.Mods.RA/DemoTruck.cs | 77 ++++++++++++++++++++++-------------- mods/ra/bits/dtrk.shp | Bin 0 -> 9922 bytes mods/ra/bits/dtrkicon.shp | Bin 0 -> 2773 bytes mods/ra/rules/vehicles.yaml | 31 +++++++++++++++ mods/ra/sequences.yaml | 7 +++- 5 files changed, 85 insertions(+), 30 deletions(-) create mode 100644 mods/ra/bits/dtrk.shp create mode 100644 mods/ra/bits/dtrkicon.shp diff --git a/OpenRA.Mods.RA/DemoTruck.cs b/OpenRA.Mods.RA/DemoTruck.cs index ddc0373746..b9a9ef77da 100644 --- a/OpenRA.Mods.RA/DemoTruck.cs +++ b/OpenRA.Mods.RA/DemoTruck.cs @@ -8,44 +8,63 @@ */ #endregion +using System.Collections.Generic; +using System.Drawing; +using OpenRA.Mods.RA.Activities; +using OpenRA.Mods.RA.Buildings; +using OpenRA.Mods.RA.Orders; using OpenRA.Traits; namespace OpenRA.Mods.RA { - class DemoTruckInfo : TraitInfo { } + // Requiring Explodes is busted. + // Exception when overriding Chronoshift event; removed for now, will look into it. + class DemoTruckInfo : TraitInfo {} //, Requires {} - class DemoTruck : Chronoshiftable, INotifyKilled + class DemoTruck : IIssueOrder, IResolveOrder, IOrderVoice { - // Explode on chronoshift - public override bool Teleport(Actor self, CPos targetLocation, int duration, bool killCargo, Actor chronosphere) + void Explode(Actor self) { - Detonate(self, chronosphere); - return false; - } - - // Fire primary on death - public void Killed(Actor self, AttackInfo e) - { - Detonate(self, e.Attacker); - } - - public void Detonate(Actor self, Actor detonatedBy) - { - var move = self.TraitOrDefault(); - var info = self.Info.Traits.Get(); - var altitude = move != null ? move.Altitude : 0; - - self.World.AddFrameEndTask( w => + self.World.AddFrameEndTask(w => { - if (self.Destroyed) return; - Combat.DoExplosion(self, info.PrimaryWeapon, self.CenterLocation, altitude); + self.InflictDamage(self, int.MaxValue, null); + }); + } - // Remove from world - self.Kill(self); - detonatedBy.Owner.Kills++; - self.Owner.Deaths++; - self.Destroy(); - } ); + public IEnumerable Orders + { + get + { + yield return new UnitTraitOrderTargeter("DemoAttack", 5, "attack", true, false) { ForceAttack = false }; + yield return new DeployOrderTargeter("DemoDeploy", 5); + } + } + + public Order IssueOrder(Actor self, IOrderTargeter order, Target target, bool queued) + { + if (order.OrderID == "DemoAttack" || order.OrderID == "DemoDeploy") + return new Order(order.OrderID, self, queued) { TargetActor = target.Actor }; + + return null; + } + + public string VoicePhraseForOrder(Actor self, Order order) + { + return "Attack"; + } + + public void ResolveOrder(Actor self, Order order) + { + if (order.OrderString == "DemoDeploy") + { + self.World.AddFrameEndTask(w => + { + self.QueueActivity(new MoveAdjacentTo(Target.FromOrder(order))); + self.QueueActivity(new CallFunc(() => Explode(self))); + }); + } + if (order.OrderString == "DemoAttack") + Explode(self); } } } diff --git a/mods/ra/bits/dtrk.shp b/mods/ra/bits/dtrk.shp new file mode 100644 index 0000000000000000000000000000000000000000..8e721b98d75e3d750253ff9c92cd6ec1233226d8 GIT binary patch literal 9922 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 ZtmEq*{(*UTh_;RZU`;A={|BFK`hP!v=Jx;q literal 0 HcmV?d00001 diff --git a/mods/ra/bits/dtrkicon.shp b/mods/ra/bits/dtrkicon.shp new file mode 100644 index 0000000000000000000000000000000000000000..644bd3a1d89b2d1f7dcbdbafbd1df6d75ad603d2 GIT binary patch literal 2773 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