smart queries for World.Actors

This commit is contained in:
Bob
2010-01-31 01:27:50 +13:00
parent c012cf3c7f
commit 73c16d5d9d
23 changed files with 201 additions and 64 deletions

View File

@@ -42,8 +42,9 @@ namespace OpenRa.Traits.Activities
umt = mobile.GetMovementType(),
checkForBlocked = false,
};
var refineries = self.World.Actors.Where( x => x.traits.Contains<AcceptsOre>()
&& x.Owner == self.Owner ).ToList();
var refineries = self.World.Queries.OwnedBy[self.Owner]
.Where( x => x.traits.Contains<AcceptsOre>())
.ToList();
if( refinery != null )
search.AddInitialCell( self.World, refinery.Location + refineryDeliverOffset );
else

View File

@@ -9,9 +9,8 @@ namespace OpenRa.Traits.Activities
static Actor ChooseHelipad(Actor self)
{
return self.World.Actors.FirstOrDefault(
return self.World.Queries.OwnedBy[self.Owner].FirstOrDefault(
a => a.Info.Name == "hpad" &&
a.Owner == self.Owner &&
!Reservable.IsReserved(a));
}

View File

@@ -18,9 +18,8 @@ namespace OpenRa.Traits.Activities
Actor ChooseAirfield(Actor self)
{
var airfield = self.World.Actors
var airfield = self.World.Queries.OwnedBy[self.Owner]
.Where(a => a.Info.Name == "afld"
&& a.Owner == self.Owner
&& !Reservable.IsReserved(a))
.FirstOrDefault();