From 05609399ebe391e49f7bd8788e56ecdf7b41c8d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Sun, 22 Jun 2014 11:49:40 +0200 Subject: [PATCH] don't try to spawn resources when the cell is already full fixes #5699 --- OpenRA.Game/Traits/World/ResourceLayer.cs | 6 +++--- OpenRA.Mods.RA/SeedsResource.cs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/OpenRA.Game/Traits/World/ResourceLayer.cs b/OpenRA.Game/Traits/World/ResourceLayer.cs index 203bb22924..1efc612ddc 100644 --- a/OpenRA.Game/Traits/World/ResourceLayer.cs +++ b/OpenRA.Game/Traits/World/ResourceLayer.cs @@ -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) diff --git a/OpenRA.Mods.RA/SeedsResource.cs b/OpenRA.Mods.RA/SeedsResource.cs index aaf1491484..73bc803c2c 100644 --- a/OpenRA.Mods.RA/SeedsResource.cs +++ b/OpenRA.Mods.RA/SeedsResource.cs @@ -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().FirstOrDefault(); if (cell != null && resLayer.CanSpawnResourceAt(resourceType, cell.Value))