@@ -156,7 +156,7 @@ namespace OpenRA.Traits
|
||||
public bool CanSpawnResourceAt(ResourceType newResourceType, CPos cell)
|
||||
{
|
||||
var currentResourceType = GetResource(cell);
|
||||
return currentResourceType == newResourceType
|
||||
return (currentResourceType == newResourceType && !IsFull(cell))
|
||||
|| (currentResourceType == null && AllowResourceAt(newResourceType, cell));
|
||||
}
|
||||
|
||||
@@ -186,9 +186,9 @@ namespace OpenRA.Traits
|
||||
dirty.Add(p);
|
||||
}
|
||||
|
||||
public bool IsFull(int i, int j)
|
||||
public bool IsFull(CPos c)
|
||||
{
|
||||
return content[i, j].Density == content[i, j].Type.Info.MaxDensity;
|
||||
return content[c.X, c.Y].Density == content[c.X, c.Y].Type.Info.MaxDensity;
|
||||
}
|
||||
|
||||
public ResourceType Harvest(CPos p)
|
||||
|
||||
@@ -60,7 +60,7 @@ namespace OpenRA.Mods.RA
|
||||
|
||||
var cell = RandomWalk(self.Location, self.World.SharedRandom)
|
||||
.Take(info.MaxRange)
|
||||
.SkipWhile(p => resLayer.GetResource(p) == resourceType && resLayer.IsFull(p.X, p.Y))
|
||||
.SkipWhile(p => resLayer.GetResource(p) == resourceType && resLayer.IsFull(p))
|
||||
.Cast<CPos?>().FirstOrDefault();
|
||||
|
||||
if (cell != null && resLayer.CanSpawnResourceAt(resourceType, cell.Value))
|
||||
|
||||
Reference in New Issue
Block a user