Add ActorsHavingTrait<TTrait>([Func<TTrait, bool])
This commit is contained in:
@@ -100,9 +100,8 @@ namespace OpenRA.Mods.D2k.Traits
|
||||
public Actor GetClosestIdleCarrier()
|
||||
{
|
||||
// Find carriers
|
||||
var carriers = self.World.ActorsWithTrait<Carryall>()
|
||||
.Where(p => p.Actor.Owner == self.Owner && !p.Trait.IsBusy && p.Actor.IsInWorld)
|
||||
.Select(h => h.Actor);
|
||||
var carriers = self.World.ActorsHavingTrait<Carryall>(c => !c.IsBusy)
|
||||
.Where(a => a.Owner == self.Owner && a.IsInWorld);
|
||||
|
||||
return carriers.ClosestTo(self);
|
||||
}
|
||||
|
||||
@@ -31,15 +31,15 @@ namespace OpenRA.Mods.D2k.Traits
|
||||
|
||||
public void TryActivate()
|
||||
{
|
||||
var harvesters = self.World.ActorsWithTrait<Harvester>().Where(x => x.Actor.Owner == self.Owner);
|
||||
var harvesters = self.World.ActorsHavingTrait<Harvester>().Where(x => x.Owner == self.Owner);
|
||||
if (harvesters.Any())
|
||||
return;
|
||||
|
||||
var refineries = self.World.ActorsWithTrait<Refinery>().Where(x => x.Actor.Owner == self.Owner);
|
||||
var refineries = self.World.ActorsHavingTrait<Refinery>().Where(x => x.Owner == self.Owner);
|
||||
if (!refineries.Any())
|
||||
return;
|
||||
|
||||
var refinery = refineries.First().Actor;
|
||||
var refinery = refineries.First();
|
||||
var delivery = refinery.Trait<FreeActorWithDelivery>();
|
||||
delivery.DoDelivery(refinery.Location + delivery.Info.DeliveryOffset, delivery.Info.Actor,
|
||||
delivery.Info.DeliveringActor);
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace OpenRA.Mods.D2k.Traits
|
||||
public WormManager(Actor self, WormManagerInfo info)
|
||||
{
|
||||
this.info = info;
|
||||
spawnPointActors = Exts.Lazy(() => self.World.ActorsWithTrait<WormSpawner>().Select(x => x.Actor).ToArray());
|
||||
spawnPointActors = Exts.Lazy(() => self.World.ActorsHavingTrait<WormSpawner>().ToArray());
|
||||
}
|
||||
|
||||
public void Tick(Actor self)
|
||||
|
||||
Reference in New Issue
Block a user