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
{
class AutoHealInfo : StatelessTraitInfo<AutoHeal> { }
class AutoHealInfo : TraitInfo<AutoHeal> { }
class AutoHeal : ITick
{

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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