moved growth/spread control onto ResourceType

This commit is contained in:
Chris Forbes
2010-03-03 21:30:31 +13:00
parent 15b82830a2
commit 9b0d8b8f3b
6 changed files with 37 additions and 16 deletions

View File

@@ -114,7 +114,6 @@
<Compile Include="Traits\World\ChoosePaletteOnSelect.cs" /> <Compile Include="Traits\World\ChoosePaletteOnSelect.cs" />
<Compile Include="Traits\World\Country.cs" /> <Compile Include="Traits\World\Country.cs" />
<Compile Include="Traits\World\CrateSpawner.cs" /> <Compile Include="Traits\World\CrateSpawner.cs" />
<Compile Include="Traits\World\OreGrowth.cs" />
<Compile Include="Traits\OreRefinery.cs" /> <Compile Include="Traits\OreRefinery.cs" />
<Compile Include="Traits\Activities\Attack.cs" /> <Compile Include="Traits\Activities\Attack.cs" />
<Compile Include="Traits\Activities\CallFunc.cs" /> <Compile Include="Traits\Activities\CallFunc.cs" />

View File

@@ -159,7 +159,7 @@ namespace OpenRA.Traits
++content[i, j].density; ++content[i, j].density;
} }
public void Spread(ResourceTypeInfo info, Random r, float chance) public void Spread(ResourceTypeInfo info)
{ {
var map = w.Map; var map = w.Map;
@@ -170,7 +170,6 @@ namespace OpenRA.Traits
for (int j = minj; j < maxj; j++) for (int j = minj; j < maxj; j++)
for (int i = mini; i < maxi; i++) for (int i = mini; i < maxi; i++)
if (content[i,j].type == null if (content[i,j].type == null
&& r.NextDouble() < chance
&& GetAdjacentCellsWith(info, i,j ) > 0 && GetAdjacentCellsWith(info, i,j ) > 0
&& w.IsCellBuildable(new int2(i, j), UnitMovementType.Wheel)) && w.IsCellBuildable(new int2(i, j), UnitMovementType.Wheel))
growMask[i, j] = true; growMask[i, j] = true;

View File

@@ -19,7 +19,7 @@
#endregion #endregion
using OpenRA.Graphics; using OpenRA.Graphics;
using System.Collections.Generic;
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
public class ResourceTypeInfo : ITraitInfo public class ResourceTypeInfo : ITraitInfo
@@ -27,13 +27,41 @@ namespace OpenRA.Traits
public readonly int[] Overlays = { }; public readonly int[] Overlays = { };
public readonly string[] SpriteNames = { }; public readonly string[] SpriteNames = { };
public readonly string Palette = "terrain"; public readonly string Palette = "terrain";
public readonly int ValuePerUnit = 0; public readonly int ValuePerUnit = 0;
public readonly string Name = null; public readonly string Name = null;
public readonly float GrowthInterval = 0;
public readonly float SpreadInterval = 0;
public Sprite[][] Sprites; public Sprite[][] Sprites;
public object Create(Actor self) { return new ResourceType(); } public object Create(Actor self) { return new ResourceType(this); }
} }
class ResourceType { } class ResourceType : ITick
{
int growthTicks;
int spreadTicks;
ResourceTypeInfo info;
public ResourceType(ResourceTypeInfo info) { this.info = info; }
public void Tick(Actor self)
{
if (info.GrowthInterval != 0 && --growthTicks <= 0)
{
growthTicks = (int)(info.GrowthInterval * 25 * 60);
self.World.WorldActor.traits.Get<ResourceLayer>().Grow(info);
self.World.Minimap.InvalidateOre();
}
if (info.SpreadInterval != 0 && --spreadTicks <= 0)
{
spreadTicks = (int)(info.SpreadInterval * 25 * 60);
self.World.WorldActor.traits.Get<ResourceLayer>().Spread(info);
self.World.Minimap.InvalidateOre();
}
}
}
} }

View File

@@ -38,4 +38,5 @@ MINE:
RenderBuilding: RenderBuilding:
Palette: terrain Palette: terrain
SeedsOre: SeedsOre:
ResourceType: Tiberium
-Selectable: -Selectable:

View File

@@ -153,11 +153,6 @@ World:
B: 0 B: 0
A: 180 A: 180
ShroudPalette: ShroudPalette:
OreGrowth:
Interval: .3
Chance: .02
Spreads: yes
Grows: yes
Country@gdi: Country@gdi:
Name: GDI Name: GDI
Race: gdi Race: gdi
@@ -173,3 +168,5 @@ World:
SpriteNames: ti1,ti2,ti3,ti4,ti5,ti6,ti7,ti8,ti9,ti10,ti11,ti12 SpriteNames: ti1,ti2,ti3,ti4,ti5,ti6,ti7,ti8,ti9,ti10,ti11,ti12
ValuePerUnit: 30 ValuePerUnit: 30
Name: Tiberium Name: Tiberium
GrowthInterval: .1
SpreadInterval: .1

View File

@@ -184,11 +184,6 @@ World:
B: 0 B: 0
A: 180 A: 180
ShroudPalette: ShroudPalette:
OreGrowth:
Interval: .3
Chance: .02
Spreads: yes
Grows: yes
Country@0: Country@0:
Name: England Name: England
Race: allies Race: allies
@@ -241,6 +236,8 @@ World:
SpriteNames: gold01,gold02,gold03,gold04 SpriteNames: gold01,gold02,gold03,gold04
ValuePerUnit: 30 ValuePerUnit: 30
Name: Ore Name: Ore
GrowthInterval: .3
SpreadInterval: .7
ResourceType@gem: ResourceType@gem:
Overlays: 9,10,11,12 Overlays: 9,10,11,12
Palette: terrain Palette: terrain