@@ -86,35 +86,6 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
var resources = w.WorldActor.TraitsImplementing<ResourceType>()
|
var resources = w.WorldActor.TraitsImplementing<ResourceType>()
|
||||||
.ToDictionary(r => r.Info.ResourceType, r => r);
|
.ToDictionary(r => r.Info.ResourceType, r => r);
|
||||||
|
|
||||||
foreach (var cell in w.Map.AllCells)
|
|
||||||
{
|
|
||||||
ResourceType t;
|
|
||||||
if (!resources.TryGetValue(w.Map.MapResources.Value[cell].Type, out t))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!AllowResourceAt(t, cell))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
Content[cell] = CreateResourceCell(t, cell);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set initial density based on the number of neighboring resources
|
|
||||||
foreach (var cell in w.Map.AllCells)
|
|
||||||
{
|
|
||||||
var type = Content[cell].Type;
|
|
||||||
if (type != null)
|
|
||||||
{
|
|
||||||
// Adjacent includes the current cell, so is always >= 1
|
|
||||||
var adjacent = GetAdjacentCellsWith(type, cell);
|
|
||||||
var density = int2.Lerp(0, type.Info.MaxDensity, adjacent, 9);
|
|
||||||
var temp = Content[cell];
|
|
||||||
temp.Density = Math.Max(density, 1);
|
|
||||||
|
|
||||||
Content[cell] = temp;
|
|
||||||
dirty.Add(cell);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Build the sprite layer dictionary for rendering resources
|
// Build the sprite layer dictionary for rendering resources
|
||||||
// All resources that have the same palette must also share a sheet and blend mode
|
// All resources that have the same palette must also share a sheet and blend mode
|
||||||
foreach (var r in resources)
|
foreach (var r in resources)
|
||||||
@@ -135,6 +106,37 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
throw new InvalidDataException("Resource sprites specify different blend modes. "
|
throw new InvalidDataException("Resource sprites specify different blend modes. "
|
||||||
+ "Try using different palettes for resource types that use different blend modes.");
|
+ "Try using different palettes for resource types that use different blend modes.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach (var cell in w.Map.AllCells)
|
||||||
|
{
|
||||||
|
ResourceType t;
|
||||||
|
if (!resources.TryGetValue(w.Map.MapResources.Value[cell].Type, out t))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!AllowResourceAt(t, cell))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
Content[cell] = CreateResourceCell(t, cell);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var cell in w.Map.AllCells)
|
||||||
|
{
|
||||||
|
var type = Content[cell].Type;
|
||||||
|
if (type != null)
|
||||||
|
{
|
||||||
|
// Set initial density based on the number of neighboring resources
|
||||||
|
// Adjacent includes the current cell, so is always >= 1
|
||||||
|
var adjacent = GetAdjacentCellsWith(type, cell);
|
||||||
|
var density = int2.Lerp(0, type.Info.MaxDensity, adjacent, 9);
|
||||||
|
var temp = Content[cell];
|
||||||
|
temp.Density = Math.Max(density, 1);
|
||||||
|
|
||||||
|
// Initialize the RenderContent with the initial map state
|
||||||
|
// because the shroud may not be enabled.
|
||||||
|
RenderContent[cell] = Content[cell] = temp;
|
||||||
|
UpdateRenderedSprite(cell);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void UpdateRenderedSprite(CPos cell)
|
protected virtual void UpdateRenderedSprite(CPos cell)
|
||||||
|
|||||||
Reference in New Issue
Block a user