@@ -156,7 +156,7 @@ namespace OpenRA.Traits
|
|||||||
public bool CanSpawnResourceAt(ResourceType newResourceType, CPos cell)
|
public bool CanSpawnResourceAt(ResourceType newResourceType, CPos cell)
|
||||||
{
|
{
|
||||||
var currentResourceType = GetResource(cell);
|
var currentResourceType = GetResource(cell);
|
||||||
return currentResourceType == newResourceType
|
return (currentResourceType == newResourceType && !IsFull(cell))
|
||||||
|| (currentResourceType == null && AllowResourceAt(newResourceType, cell));
|
|| (currentResourceType == null && AllowResourceAt(newResourceType, cell));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,9 +186,9 @@ namespace OpenRA.Traits
|
|||||||
dirty.Add(p);
|
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)
|
public ResourceType Harvest(CPos p)
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ namespace OpenRA.Mods.RA
|
|||||||
|
|
||||||
var cell = RandomWalk(self.Location, self.World.SharedRandom)
|
var cell = RandomWalk(self.Location, self.World.SharedRandom)
|
||||||
.Take(info.MaxRange)
|
.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();
|
.Cast<CPos?>().FirstOrDefault();
|
||||||
|
|
||||||
if (cell != null && resLayer.CanSpawnResourceAt(resourceType, cell.Value))
|
if (cell != null && resLayer.CanSpawnResourceAt(resourceType, cell.Value))
|
||||||
|
|||||||
Reference in New Issue
Block a user