Add voice feedback when issuing a mine deploy order.

This commit is contained in:
Paul Chote
2017-09-25 21:12:44 +01:00
committed by reaperrr
parent 1d6cd81690
commit cc17b7419a

View File

@@ -29,18 +29,25 @@ namespace OpenRA.Mods.Cnc.Traits
public readonly WDist MinefieldDepth = new WDist(1536); public readonly WDist MinefieldDepth = new WDist(1536);
public object Create(ActorInitializer init) { return new Minelayer(init.Self); } [Desc("Voice to use when ordered to lay a minefield.")]
[VoiceReference] public readonly string Voice = "Action";
public object Create(ActorInitializer init) { return new Minelayer(init.Self, this); }
} }
public class Minelayer : IIssueOrder, IResolveOrder, IRenderAboveShroudWhenSelected, ISync, IIssueDeployOrder public class Minelayer : IIssueOrder, IResolveOrder, IRenderAboveShroudWhenSelected, ISync, IIssueDeployOrder, IOrderVoice
{ {
readonly MinelayerInfo info;
/* TODO: [Sync] when sync can cope with arrays! */ /* TODO: [Sync] when sync can cope with arrays! */
public CPos[] Minefield = null; public CPos[] Minefield = null;
readonly Sprite tile; readonly Sprite tile;
[Sync] CPos minefieldStart; [Sync] CPos minefieldStart;
public Minelayer(Actor self) public Minelayer(Actor self, MinelayerInfo info)
{ {
this.info = info;
var tileset = self.World.Map.Tileset.ToLowerInvariant(); var tileset = self.World.Map.Tileset.ToLowerInvariant();
tile = self.World.Map.Rules.Sequences.GetSequence("overlay", "build-valid-{0}".F(tileset)).GetSprite(0); tile = self.World.Map.Rules.Sequences.GetSequence("overlay", "build-valid-{0}".F(tileset)).GetSprite(0);
} }
@@ -104,6 +111,14 @@ namespace OpenRA.Mods.Cnc.Traits
} }
} }
string IOrderVoice.VoicePhraseForOrder(Actor self, Order order)
{
if (order.OrderString == "PlaceMine" || order.OrderString == "PlaceMinefield")
return info.Voice;
return null;
}
static IEnumerable<CPos> GetMinefieldCells(CPos start, CPos end, WDist depth) static IEnumerable<CPos> GetMinefieldCells(CPos start, CPos end, WDist depth)
{ {
var mins = new CPos(Math.Min(start.X, end.X), Math.Min(start.Y, end.Y)); var mins = new CPos(Math.Min(start.X, end.X), Math.Min(start.Y, end.Y));