no more stateless garbage

This commit is contained in:
Chris Forbes
2010-04-13 18:46:49 +12:00
parent d8748397d1
commit e224c64ccc
45 changed files with 46 additions and 53 deletions

View File

@@ -23,7 +23,7 @@ using OpenRA.Traits.Activities;
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
class AutoHealInfo : StatelessTraitInfo<AutoHeal> { } class AutoHealInfo : TraitInfo<AutoHeal> { }
class AutoHeal : ITick class AutoHeal : ITick
{ {

View File

@@ -23,12 +23,10 @@ using System.Drawing;
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
class AutoTargetInfo : ITraitInfo class AutoTargetInfo : TraitInfo<AutoTarget>
{ {
public readonly float ScanTimeAverage = 2f; public readonly float ScanTimeAverage = 2f;
public readonly float ScanTimeSpread = .5f; public readonly float ScanTimeSpread = .5f;
public object Create(Actor self) { return new AutoTarget(); }
} }
class AutoTarget : ITick, INotifyDamage class AutoTarget : ITick, INotifyDamage

View File

@@ -6,7 +6,7 @@ using OpenRA.GameRules;
namespace OpenRA.Traits.AI namespace OpenRA.Traits.AI
{ {
class EmitInfantryOnSellInfo : StatelessTraitInfo<EmitInfantryOnSell> class EmitInfantryOnSellInfo : TraitInfo<EmitInfantryOnSell>
{ {
public readonly float ValueFraction = .4f; public readonly float ValueFraction = .4f;
public readonly float MinHpFraction = .3f; public readonly float MinHpFraction = .3f;

View File

@@ -24,7 +24,7 @@ using System.Drawing;
namespace OpenRA.Traits.AI namespace OpenRA.Traits.AI
{ {
class ReturnOnIdleInfo : StatelessTraitInfo<ReturnOnIdle> { } class ReturnOnIdleInfo : TraitInfo<ReturnOnIdle> { }
// fly home or fly-off-map behavior for idle planes // fly home or fly-off-map behavior for idle planes

View File

@@ -20,7 +20,7 @@
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
class BuildableInfo : StatelessTraitInfo<Buildable> class BuildableInfo : TraitInfo<Buildable>
{ {
public readonly int TechLevel = -1; public readonly int TechLevel = -1;
public readonly string[] Prerequisites = { }; public readonly string[] Prerequisites = { };

View File

@@ -4,7 +4,7 @@ using OpenRA.Orders;
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
class PowerDownButtonInfo : StatelessTraitInfo<PowerDownButton> { } class PowerDownButtonInfo : TraitInfo<PowerDownButton> { }
class PowerDownButton : IChromeButton class PowerDownButton : IChromeButton
{ {
@@ -14,7 +14,7 @@ namespace OpenRA.Traits
public void OnClick() { Game.controller.ToggleInputMode<PowerDownOrderGenerator>(); } public void OnClick() { Game.controller.ToggleInputMode<PowerDownOrderGenerator>(); }
} }
class SellButtonInfo : StatelessTraitInfo<SellButton> { } class SellButtonInfo : TraitInfo<SellButton> { }
class SellButton : IChromeButton class SellButton : IChromeButton
{ {

View File

@@ -23,7 +23,7 @@ namespace OpenRA.Traits
// allow a nonstandard sell/repair value to avoid // allow a nonstandard sell/repair value to avoid
// buy-sell exploits like c&c's PROC. // buy-sell exploits like c&c's PROC.
class CustomSellValueInfo : StatelessTraitInfo<CustomSellValue> class CustomSellValueInfo : TraitInfo<CustomSellValue>
{ {
public readonly int Value = 0; public readonly int Value = 0;
} }

View File

@@ -22,7 +22,7 @@ using OpenRA.Effects;
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
class ExplodesInfo : StatelessTraitInfo<Explodes> { } class ExplodesInfo : TraitInfo<Explodes> { }
class Explodes : INotifyDamage class Explodes : INotifyDamage
{ {

View File

@@ -22,7 +22,7 @@ using System.Collections.Generic;
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
class FakeInfo : StatelessTraitInfo<Fake> { } class FakeInfo : TraitInfo<Fake> { }
class Fake : ITags class Fake : ITags
{ {

View File

@@ -27,7 +27,7 @@ using OpenRA.Traits.Activities;
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
public class LineBuildInfo : StatelessTraitInfo<LineBuild> public class LineBuildInfo : TraitInfo<LineBuild>
{ {
public readonly int Range = 5; public readonly int Range = 5;
} }

View File

@@ -23,7 +23,7 @@ using System.Linq;
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
class BelowUnitsInfo : StatelessTraitInfo<BelowUnits> { } class BelowUnitsInfo : TraitInfo<BelowUnits> { }
class BelowUnits : IRenderModifier class BelowUnits : IRenderModifier
{ {

View File

@@ -22,7 +22,7 @@ using System.Collections.Generic;
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
class InvisibleToOthersInfo : StatelessTraitInfo<InvisibleToOthers> { } class InvisibleToOthersInfo : TraitInfo<InvisibleToOthers> { }
class InvisibleToOthers : IRenderModifier class InvisibleToOthers : IRenderModifier
{ {

View File

@@ -23,7 +23,7 @@ using System.Linq;
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
class WithShadowInfo : StatelessTraitInfo<WithShadow> {} class WithShadowInfo : TraitInfo<WithShadow> {}
class WithShadow : IRenderModifier class WithShadow : IRenderModifier
{ {

View File

@@ -23,7 +23,7 @@ using OpenRA.Traits.Activities;
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
class PassengerInfo : StatelessTraitInfo<Passenger> class PassengerInfo : TraitInfo<Passenger>
{ {
public readonly PipType ColorOfCargoPip = PipType.Green; public readonly PipType ColorOfCargoPip = PipType.Green;
} }

View File

@@ -21,7 +21,7 @@
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
class EvaAlertsInfo : StatelessTraitInfo<EvaAlerts> class EvaAlertsInfo : TraitInfo<EvaAlerts>
{ {
// Sound effects // Sound effects
public readonly string TabClick = "ramenu1.aud"; public readonly string TabClick = "ramenu1.aud";

View File

@@ -23,7 +23,7 @@ using OpenRA.Effects;
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
class PlaceBuildingInfo : StatelessTraitInfo<PlaceBuilding> {} class PlaceBuildingInfo : TraitInfo<PlaceBuilding> {}
class PlaceBuilding : IResolveOrder class PlaceBuilding : IResolveOrder
{ {

View File

@@ -46,7 +46,7 @@ namespace OpenRA.Traits
} }
} }
class JamsRadarInfo : StatelessTraitInfo<JamsRadar> class JamsRadarInfo : TraitInfo<JamsRadar>
{ {
public readonly int Range = 0; public readonly int Range = 0;
} }

View File

@@ -65,6 +65,6 @@ namespace OpenRA.Traits
} }
} }
class RenderRangeCircleInfo : StatelessTraitInfo<RenderRangeCircle> { } class RenderRangeCircleInfo : TraitInfo<RenderRangeCircle> { }
class RenderRangeCircle { } class RenderRangeCircle { }
} }

View File

@@ -4,7 +4,7 @@ using System;
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
public class RepairsUnitsInfo : StatelessTraitInfo<RepairsUnits> public class RepairsUnitsInfo : TraitInfo<RepairsUnits>
{ {
public readonly float URepairPercent = 0.2f; public readonly float URepairPercent = 0.2f;
public readonly int URepairStep = 10; public readonly int URepairStep = 10;

View File

@@ -20,7 +20,7 @@
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
public class SelectableInfo : StatelessTraitInfo<Selectable> public class SelectableInfo : TraitInfo<Selectable>
{ {
public readonly int Priority = 10; public readonly int Priority = 10;
public readonly int[] Bounds = null; public readonly int[] Bounds = null;

View File

@@ -22,7 +22,7 @@ using System.Collections.Generic;
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
class StoresOreInfo : StatelessTraitInfo<StoresOre> class StoresOreInfo : TraitInfo<StoresOre>
{ {
public readonly int Pips = 0; public readonly int Pips = 0;
public readonly int Capacity = 0; public readonly int Capacity = 0;

View File

@@ -102,12 +102,7 @@ namespace OpenRA.Traits
public interface ITraitInfo { object Create(Actor self); } public interface ITraitInfo { object Create(Actor self); }
public class StatelessTraitInfo<T> : ITraitInfo public class TraitInfo<T> : ITraitInfo where T : new() { public object Create(Actor self) { return new T(); } }
where T : new()
{
static Lazy<T> Instance = Lazy.New(() => new T());
public object Create(Actor self) { return Instance.Value; }
}
public interface ITraitPrerequisite<T> { } public interface ITraitPrerequisite<T> { }

View File

@@ -20,6 +20,6 @@
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
public class WallInfo : StatelessTraitInfo<Wall> {} public class WallInfo : TraitInfo<Wall> {}
public class Wall {} public class Wall {}
} }

View File

@@ -102,6 +102,6 @@ namespace OpenRA.Traits
} }
} }
class BibInfo : StatelessTraitInfo<Bib> { } class BibInfo : TraitInfo<Bib> { }
public class Bib { } public class Bib { }
} }

View File

@@ -23,7 +23,7 @@ using System.Linq;
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
class BridgeLoadHookInfo : StatelessTraitInfo<BridgeLoadHook> { } class BridgeLoadHookInfo : TraitInfo<BridgeLoadHook> { }
class BridgeLoadHook : ILoadWorldHook class BridgeLoadHook : ILoadWorldHook
{ {

View File

@@ -22,7 +22,7 @@ using System.Linq;
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
class ChoosePaletteOnSelectInfo : StatelessTraitInfo<ChoosePaletteOnSelect> { } class ChoosePaletteOnSelectInfo : TraitInfo<ChoosePaletteOnSelect> { }
class ChoosePaletteOnSelect : INotifySelection class ChoosePaletteOnSelect : INotifySelection
{ {

View File

@@ -3,7 +3,7 @@ using System;
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
public class GlobalDefaultsInfo : StatelessTraitInfo<GlobalDefaults> public class GlobalDefaultsInfo : TraitInfo<GlobalDefaults>
{ {
/* Special Weapons */ /* Special Weapons */
public readonly float GapRegenInterval = 0.1f; public readonly float GapRegenInterval = 0.1f;

View File

@@ -22,7 +22,7 @@ using System.Drawing;
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
class LightPaletteRotatorInfo : StatelessTraitInfo<LightPaletteRotator> { } class LightPaletteRotatorInfo : TraitInfo<LightPaletteRotator> { }
class LightPaletteRotator : ITick, IPaletteModifier class LightPaletteRotator : ITick, IPaletteModifier
{ {
float t = 0; float t = 0;

View File

@@ -25,7 +25,7 @@ using OpenRA.FileFormats;
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
class SpawnDefaultUnitsInfo : StatelessTraitInfo<SpawnDefaultUnits> class SpawnDefaultUnitsInfo : TraitInfo<SpawnDefaultUnits>
{ {
public readonly int InitialExploreRange = 5; public readonly int InitialExploreRange = 5;
} }

View File

@@ -5,7 +5,7 @@ using System.Text;
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
class SpawnMapActorsInfo : StatelessTraitInfo<SpawnMapActors> { } class SpawnMapActorsInfo : TraitInfo<SpawnMapActors> { }
class SpawnMapActors : IGameStarted class SpawnMapActors : IGameStarted
{ {

View File

@@ -20,7 +20,7 @@
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
class TheaterInfo : StatelessTraitInfo<Theater> class TheaterInfo : TraitInfo<Theater>
{ {
public readonly string Name = null; public readonly string Name = null;
public readonly string Theater = null; public readonly string Theater = null;

View File

@@ -22,7 +22,7 @@ using System.Drawing;
namespace OpenRA.Traits namespace OpenRA.Traits
{ {
class WaterPaletteRotationInfo : StatelessTraitInfo<WaterPaletteRotation> { } class WaterPaletteRotationInfo : TraitInfo<WaterPaletteRotation> { }
class WaterPaletteRotation : ITick, IPaletteModifier class WaterPaletteRotation : ITick, IPaletteModifier
{ {

View File

@@ -57,6 +57,6 @@ namespace OpenRA.Mods.Cnc
} }
} }
class IonControlInfo : StatelessTraitInfo<IonControl> { } class IonControlInfo : TraitInfo<IonControl> { }
class IonControl { } class IonControl { }
} }

View File

@@ -24,7 +24,7 @@ using OpenRA.Traits.Activities;
namespace OpenRA.Mods.RA namespace OpenRA.Mods.RA
{ {
class EngineerCaptureInfo : StatelessTraitInfo<EngineerCapture> { } class EngineerCaptureInfo : TraitInfo<EngineerCapture> { }
class EngineerCapture : IIssueOrder, IResolveOrder class EngineerCapture : IIssueOrder, IResolveOrder
{ {

View File

@@ -58,6 +58,6 @@ namespace OpenRA.Mods.RA
} }
// tag trait to identify the building // tag trait to identify the building
class GpsLaunchSiteInfo : StatelessTraitInfo<GpsLaunchSite> { } class GpsLaunchSiteInfo : TraitInfo<GpsLaunchSite> { }
class GpsLaunchSite { } class GpsLaunchSite { }
} }

View File

@@ -22,7 +22,7 @@ using OpenRA.Traits;
namespace OpenRA.Mods.RA namespace OpenRA.Mods.RA
{ {
class InfiltrateForSonarPulseInfo : StatelessTraitInfo<InfiltrateForSonarPulse> { } class InfiltrateForSonarPulseInfo : TraitInfo<InfiltrateForSonarPulse> { }
class InfiltrateForSonarPulse : IAcceptSpy class InfiltrateForSonarPulse : IAcceptSpy
{ {

View File

@@ -114,6 +114,6 @@ namespace OpenRA.Mods.RA
} }
// tag trait for the building // tag trait for the building
class IronCurtainInfo : StatelessTraitInfo<IronCurtain> { } class IronCurtainInfo : TraitInfo<IronCurtain> { }
class IronCurtain { } class IronCurtain { }
} }

View File

@@ -69,6 +69,6 @@ namespace OpenRA.Mods.RA
} }
/* tag trait for stuff that shouldnt trigger mines */ /* tag trait for stuff that shouldnt trigger mines */
class MineImmuneInfo : StatelessTraitInfo<MineImmune> { } class MineImmuneInfo : TraitInfo<MineImmune> { }
class MineImmune { } class MineImmune { }
} }

View File

@@ -24,7 +24,7 @@ using OpenRA.Traits;
namespace OpenRA.Mods.RA namespace OpenRA.Mods.RA
{ {
class MinelayerInfo : StatelessTraitInfo<Minelayer> class MinelayerInfo : TraitInfo<Minelayer>
{ {
public readonly string Mine = "minv"; public readonly string Mine = "minv";
} }

View File

@@ -23,7 +23,7 @@ using OpenRA.Traits.Activities;
namespace OpenRA.Mods.RA namespace OpenRA.Mods.RA
{ {
class RepairableNearInfo : StatelessTraitInfo<RepairableNear> { } class RepairableNearInfo : TraitInfo<RepairableNear> { }
class RepairableNear : IIssueOrder, IResolveOrder class RepairableNear : IIssueOrder, IResolveOrder
{ {

View File

@@ -24,7 +24,7 @@ using OpenRA.Traits.Activities;
namespace OpenRA.Mods.RA namespace OpenRA.Mods.RA
{ {
class SpyInfo : StatelessTraitInfo<Spy> { } class SpyInfo : TraitInfo<Spy> { }
class Spy : IIssueOrder, IResolveOrder class Spy : IIssueOrder, IResolveOrder
{ {

View File

@@ -23,7 +23,7 @@ using OpenRA.Traits;
namespace OpenRA.Mods.RA.SupportPowers namespace OpenRA.Mods.RA.SupportPowers
{ {
class ChronoshiftPaletteEffectInfo : StatelessTraitInfo<ChronoshiftPaletteEffect> { } class ChronoshiftPaletteEffectInfo : TraitInfo<ChronoshiftPaletteEffect> { }
public class ChronoshiftPaletteEffect : IPaletteModifier, ITick public class ChronoshiftPaletteEffect : IPaletteModifier, ITick
{ {

View File

@@ -183,6 +183,6 @@ namespace OpenRA.Mods.RA.SupportPowers
} }
// tag trait to identify the building // tag trait to identify the building
class ChronosphereInfo : StatelessTraitInfo<Chronosphere> { } class ChronosphereInfo : TraitInfo<Chronosphere> { }
public class Chronosphere { } public class Chronosphere { }
} }

View File

@@ -67,6 +67,6 @@ namespace OpenRA.Mods.RA.SupportPowers
} }
// tag trait for the building // tag trait for the building
class NukeSiloInfo : StatelessTraitInfo<NukeSilo> { } class NukeSiloInfo : TraitInfo<NukeSilo> { }
class NukeSilo { } class NukeSilo { }
} }

View File

@@ -24,7 +24,7 @@ using OpenRA.Traits.Activities;
namespace OpenRA.Mods.RA namespace OpenRA.Mods.RA
{ {
class ThiefInfo : StatelessTraitInfo<Thief> { } class ThiefInfo : TraitInfo<Thief> { }
class Thief : IIssueOrder, IResolveOrder class Thief : IIssueOrder, IResolveOrder
{ {