Split Capturable into its own trait

This commit is contained in:
Paul Chote
2011-04-10 10:07:00 +12:00
parent 40f6c4e332
commit 43f81501a8
10 changed files with 44 additions and 48 deletions

View File

@@ -10,6 +10,7 @@
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using OpenRA.Mods.RA.Activities;
using OpenRA.Mods.RA.Buildings;
using OpenRA.Mods.RA.Orders;
@@ -17,15 +18,26 @@ using OpenRA.Traits;
namespace OpenRA.Mods.RA
{
class EngineerCaptureInfo : TraitInfo<EngineerCapture> {}
class EngineerCaptureInfo : ITraitInfo
{
public string[] CaptureClasses = {"Building"};
public object Create(ActorInitializer init) { return new EngineerCapture(this); }
}
class EngineerCapture : IIssueOrder, IResolveOrder, IOrderVoice
{
public readonly EngineerCaptureInfo Info;
public EngineerCapture(EngineerCaptureInfo info)
{
Info = info;
}
public IEnumerable<IOrderTargeter> Orders
{
get
{
yield return new EnterOrderTargeter<Building>( "CaptureBuilding", 5, true, false,
_ => true, target => target.Info.Traits.Get<BuildingInfo>().Capturable );
yield return new EnterOrderTargeter<Capturable>( "CaptureBuilding", 5, true, false,
_ => true, target => target.Info.Traits.Get<CapturableInfo>().CaptureClasses.Intersect(Info.CaptureClasses).Any() );
}
}