From 78316655e05077581705e6e55a3367b11ba2a354 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sat, 13 Feb 2010 18:19:22 +1300 Subject: [PATCH] actually setup crate spawner --- OpenRa.Game/Traits/World/CrateSpawner.cs | 17 ++++++++--------- mods/ra/rules.yaml | 5 +++++ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/OpenRa.Game/Traits/World/CrateSpawner.cs b/OpenRa.Game/Traits/World/CrateSpawner.cs index b352ace947..1cf20e94a8 100644 --- a/OpenRa.Game/Traits/World/CrateSpawner.cs +++ b/OpenRa.Game/Traits/World/CrateSpawner.cs @@ -7,11 +7,10 @@ namespace OpenRa.Traits { class CrateSpawnerInfo : ITraitInfo { - public readonly int CrateMinimum = 1; // Minumum number of crates - public readonly int CrateMaximum = 255; // Maximum number of crates - public readonly int CrateRadius = 3; // Radius of crate effect TODO: This belongs on the crate effect itself - public readonly int CrateRegen = 180; // Average time (seconds) between crate spawn - public readonly float WaterCrateChance = .2f; // Chance of generating a water crate instead of a land crate + public readonly int Minimum = 1; // Minumum number of crates + public readonly int Maximum = 255; // Maximum number of crates + public readonly int SpawnInterval = 180; // Average time (seconds) between crate spawn + public readonly float WaterChance = .2f; // Chance of generating a water crate instead of a land crate public object Create(Actor self) { return new CrateSpawner(); } } @@ -28,20 +27,20 @@ namespace OpenRa.Traits if (--ticks <= 0) { var info = self.Info.Traits.Get(); - ticks = info.CrateRegen * 25; // todo: randomize + ticks = info.SpawnInterval * 25; // todo: randomize crates.RemoveAll(c => !c.IsInWorld); - while (crates.Count < info.CrateMinimum) + while (crates.Count < info.Minimum) SpawnCrate(self, info); - if (crates.Count < info.CrateMaximum) + if (crates.Count < info.Maximum) SpawnCrate(self, info); } } void SpawnCrate(Actor self, CrateSpawnerInfo info) { - var inWater = Game.SharedRandom.NextDouble() < info.WaterCrateChance; + var inWater = Game.SharedRandom.NextDouble() < info.WaterChance; var umt = inWater ? UnitMovementType.Float : UnitMovementType.Wheel; for (; ; ) diff --git a/mods/ra/rules.yaml b/mods/ra/rules.yaml index e94257b5fc..7914d19e71 100644 --- a/mods/ra/rules.yaml +++ b/mods/ra/rules.yaml @@ -66,6 +66,11 @@ World: UnitInfluence: ChoosePaletteOnSelect: BridgeLoadHook: + CrateSpawner: + Minimum: 0 + Maximum: 3 + SpawnInterval: 30 + WaterChance: .2 PaletteFromFile@terrain_temperat: Name: terrain Filename: temperat.pal