Rename UpgradeManager to ConditionManager.
This commit is contained in:
@@ -64,7 +64,7 @@ namespace OpenRA.Mods.Common.Lint
|
||||
if (ungranted.Any())
|
||||
emitError("Actor type `{0}` consumes conditions that are not granted: {1}".F(actorInfo.Key, ungranted.JoinWith(", ")));
|
||||
|
||||
if ((consumed.Any() || granted.Any()) && actorInfo.Value.TraitInfoOrDefault<UpgradeManagerInfo>() == null)
|
||||
if ((consumed.Any() || granted.Any()) && actorInfo.Value.TraitInfoOrDefault<ConditionManagerInfo>() == null)
|
||||
emitError("Actor type `{0}` defines conditions but does not include an UpgradeManager".F(actorInfo.Key));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -498,7 +498,7 @@
|
||||
<Compile Include="Traits\Upgrades\GrantConditionOnDamageState.cs" />
|
||||
<Compile Include="Traits\Upgrades\GrantConditionOnTerrain.cs" />
|
||||
<Compile Include="Traits\Upgrades\GrantConditionOnMovement.cs" />
|
||||
<Compile Include="Traits\Upgrades\UpgradeManager.cs" />
|
||||
<Compile Include="Traits\Upgrades\ConditionManager.cs" />
|
||||
<Compile Include="Traits\Valued.cs" />
|
||||
<Compile Include="Traits\Voiced.cs" />
|
||||
<Compile Include="Traits\Wanders.cs" />
|
||||
|
||||
@@ -20,15 +20,15 @@ using OpenRA.Traits;
|
||||
namespace OpenRA.Mods.Common.Scripting
|
||||
{
|
||||
[ScriptPropertyGroup("General")]
|
||||
public class ConditionProperties : ScriptActorProperties, Requires<UpgradeManagerInfo>
|
||||
public class ConditionProperties : ScriptActorProperties, Requires<ConditionManagerInfo>
|
||||
{
|
||||
readonly UpgradeManager um;
|
||||
readonly ConditionManager um;
|
||||
readonly Dictionary<string, Stack<int>> legacyShim = new Dictionary<string, Stack<int>>();
|
||||
|
||||
public ConditionProperties(ScriptContext context, Actor self)
|
||||
: base(context, self)
|
||||
{
|
||||
um = self.Trait<UpgradeManager>();
|
||||
um = self.Trait<ConditionManager>();
|
||||
}
|
||||
|
||||
[Desc("Grant an external condition on this actor and return the revocation token.",
|
||||
|
||||
@@ -105,7 +105,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
public readonly AircraftInfo Info;
|
||||
readonly Actor self;
|
||||
|
||||
UpgradeManager um;
|
||||
ConditionManager um;
|
||||
IDisposable reservation;
|
||||
IEnumerable<int> speedModifiers;
|
||||
|
||||
@@ -119,8 +119,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
bool airborne;
|
||||
bool cruising;
|
||||
bool firstTick = true;
|
||||
int airborneToken = UpgradeManager.InvalidConditionToken;
|
||||
int cruisingToken = UpgradeManager.InvalidConditionToken;
|
||||
int airborneToken = ConditionManager.InvalidConditionToken;
|
||||
int cruisingToken = ConditionManager.InvalidConditionToken;
|
||||
|
||||
bool isMoving;
|
||||
bool isMovingVertically;
|
||||
@@ -146,7 +146,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
public void Created(Actor self)
|
||||
{
|
||||
um = self.TraitOrDefault<UpgradeManager>();
|
||||
um = self.TraitOrDefault<ConditionManager>();
|
||||
speedModifiers = self.TraitsImplementing<ISpeedModifier>().ToArray().Select(sm => sm.GetSpeedModifier());
|
||||
cachedPosition = self.CenterPosition;
|
||||
}
|
||||
@@ -669,7 +669,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
return;
|
||||
|
||||
airborne = true;
|
||||
if (um != null && !string.IsNullOrEmpty(Info.AirborneCondition) && airborneToken == UpgradeManager.InvalidConditionToken)
|
||||
if (um != null && !string.IsNullOrEmpty(Info.AirborneCondition) && airborneToken == ConditionManager.InvalidConditionToken)
|
||||
airborneToken = um.GrantCondition(self, Info.AirborneCondition);
|
||||
}
|
||||
|
||||
@@ -679,7 +679,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
return;
|
||||
|
||||
airborne = false;
|
||||
if (um != null && airborneToken != UpgradeManager.InvalidConditionToken)
|
||||
if (um != null && airborneToken != ConditionManager.InvalidConditionToken)
|
||||
airborneToken = um.RevokeCondition(self, airborneToken);
|
||||
}
|
||||
|
||||
@@ -693,7 +693,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
return;
|
||||
|
||||
cruising = true;
|
||||
if (um != null && !string.IsNullOrEmpty(Info.CruisingCondition) && cruisingToken == UpgradeManager.InvalidConditionToken)
|
||||
if (um != null && !string.IsNullOrEmpty(Info.CruisingCondition) && cruisingToken == ConditionManager.InvalidConditionToken)
|
||||
cruisingToken = um.GrantCondition(self, Info.CruisingCondition);
|
||||
}
|
||||
|
||||
@@ -702,7 +702,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (!cruising)
|
||||
return;
|
||||
cruising = false;
|
||||
if (um != null && cruisingToken != UpgradeManager.InvalidConditionToken)
|
||||
if (um != null && cruisingToken != ConditionManager.InvalidConditionToken)
|
||||
cruisingToken = um.RevokeCondition(self, cruisingToken);
|
||||
}
|
||||
|
||||
|
||||
@@ -41,8 +41,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
public class PrimaryBuilding : INotifyCreated, IIssueOrder, IResolveOrder
|
||||
{
|
||||
readonly PrimaryBuildingInfo info;
|
||||
UpgradeManager um;
|
||||
int primaryToken = UpgradeManager.InvalidConditionToken;
|
||||
ConditionManager um;
|
||||
int primaryToken = ConditionManager.InvalidConditionToken;
|
||||
|
||||
public bool IsPrimary { get; private set; }
|
||||
|
||||
@@ -53,7 +53,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
void INotifyCreated.Created(Actor self)
|
||||
{
|
||||
um = self.TraitOrDefault<UpgradeManager>();
|
||||
um = self.TraitOrDefault<ConditionManager>();
|
||||
}
|
||||
|
||||
IEnumerable<IOrderTargeter> IIssueOrder.Orders
|
||||
@@ -95,12 +95,12 @@ namespace OpenRA.Mods.Common.Traits
|
||||
b.Trait.SetPrimaryProducer(b.Actor, false);
|
||||
}
|
||||
|
||||
if (um != null && primaryToken == UpgradeManager.InvalidConditionToken && !string.IsNullOrEmpty(info.PrimaryCondition))
|
||||
if (um != null && primaryToken == ConditionManager.InvalidConditionToken && !string.IsNullOrEmpty(info.PrimaryCondition))
|
||||
primaryToken = um.GrantCondition(self, info.PrimaryCondition);
|
||||
|
||||
Game.Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", info.SelectionNotification, self.Owner.Faction.InternalName);
|
||||
}
|
||||
else if (primaryToken != UpgradeManager.InvalidConditionToken)
|
||||
else if (primaryToken != ConditionManager.InvalidConditionToken)
|
||||
primaryToken = um.RevokeCondition(self, primaryToken);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,8 +88,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
int totalWeight = 0;
|
||||
int reservedWeight = 0;
|
||||
Aircraft aircraft;
|
||||
UpgradeManager upgradeManager;
|
||||
int loadingToken = UpgradeManager.InvalidConditionToken;
|
||||
ConditionManager upgradeManager;
|
||||
int loadingToken = ConditionManager.InvalidConditionToken;
|
||||
Stack<int> loadedTokens = new Stack<int>();
|
||||
|
||||
CPos currentCell;
|
||||
@@ -141,7 +141,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
void INotifyCreated.Created(Actor self)
|
||||
{
|
||||
aircraft = self.TraitOrDefault<Aircraft>();
|
||||
upgradeManager = self.Trait<UpgradeManager>();
|
||||
upgradeManager = self.Trait<ConditionManager>();
|
||||
}
|
||||
|
||||
static int GetWeight(Actor a) { return a.Info.TraitInfo<PassengerInfo>().Weight; }
|
||||
@@ -208,7 +208,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (!HasSpace(w))
|
||||
return false;
|
||||
|
||||
if (upgradeManager != null && loadingToken == UpgradeManager.InvalidConditionToken && !string.IsNullOrEmpty(Info.LoadingCondition))
|
||||
if (upgradeManager != null && loadingToken == ConditionManager.InvalidConditionToken && !string.IsNullOrEmpty(Info.LoadingCondition))
|
||||
loadingToken = upgradeManager.GrantCondition(self, Info.LoadingCondition);
|
||||
|
||||
reserves.Add(a);
|
||||
@@ -225,7 +225,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
reservedWeight -= GetWeight(a);
|
||||
reserves.Remove(a);
|
||||
|
||||
if (loadingToken != UpgradeManager.InvalidConditionToken)
|
||||
if (loadingToken != ConditionManager.InvalidConditionToken)
|
||||
loadingToken = upgradeManager.RevokeCondition(self, loadingToken);
|
||||
}
|
||||
|
||||
@@ -321,7 +321,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
reservedWeight -= w;
|
||||
reserves.Remove(a);
|
||||
|
||||
if (loadingToken != UpgradeManager.InvalidConditionToken)
|
||||
if (loadingToken != ConditionManager.InvalidConditionToken)
|
||||
loadingToken = upgradeManager.RevokeCondition(self, loadingToken);
|
||||
}
|
||||
|
||||
|
||||
@@ -33,9 +33,9 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
public class Carryable : UpgradableTrait<CarryableInfo>
|
||||
{
|
||||
UpgradeManager upgradeManager;
|
||||
int reservedToken = UpgradeManager.InvalidConditionToken;
|
||||
int carriedToken = UpgradeManager.InvalidConditionToken;
|
||||
ConditionManager upgradeManager;
|
||||
int reservedToken = ConditionManager.InvalidConditionToken;
|
||||
int carriedToken = ConditionManager.InvalidConditionToken;
|
||||
|
||||
public Actor Carrier { get; private set; }
|
||||
public bool Reserved { get { return state != State.Free; } }
|
||||
@@ -51,7 +51,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
protected override void Created(Actor self)
|
||||
{
|
||||
upgradeManager = self.Trait<UpgradeManager>();
|
||||
upgradeManager = self.Trait<ConditionManager>();
|
||||
|
||||
base.Created(self);
|
||||
}
|
||||
@@ -63,7 +63,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
attached = true;
|
||||
|
||||
if (carriedToken == UpgradeManager.InvalidConditionToken && !string.IsNullOrEmpty(Info.CarriedCondition))
|
||||
if (carriedToken == ConditionManager.InvalidConditionToken && !string.IsNullOrEmpty(Info.CarriedCondition))
|
||||
carriedToken = upgradeManager.GrantCondition(self, Info.CarriedCondition);
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
attached = false;
|
||||
|
||||
if (carriedToken != UpgradeManager.InvalidConditionToken)
|
||||
if (carriedToken != ConditionManager.InvalidConditionToken)
|
||||
carriedToken = upgradeManager.RevokeCondition(self, carriedToken);
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
state = State.Reserved;
|
||||
Carrier = carrier;
|
||||
|
||||
if (reservedToken == UpgradeManager.InvalidConditionToken && !string.IsNullOrEmpty(Info.ReservedCondition))
|
||||
if (reservedToken == ConditionManager.InvalidConditionToken && !string.IsNullOrEmpty(Info.ReservedCondition))
|
||||
reservedToken = upgradeManager.GrantCondition(self, Info.ReservedCondition);
|
||||
|
||||
return true;
|
||||
@@ -98,7 +98,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
state = State.Free;
|
||||
Carrier = null;
|
||||
|
||||
if (reservedToken != UpgradeManager.InvalidConditionToken)
|
||||
if (reservedToken != ConditionManager.InvalidConditionToken)
|
||||
reservedToken = upgradeManager.RevokeCondition(self, reservedToken);
|
||||
}
|
||||
|
||||
|
||||
@@ -66,11 +66,11 @@ namespace OpenRA.Mods.Common.Traits
|
||||
[Sync] int remainingTime;
|
||||
[Sync] bool damageDisabled;
|
||||
bool isDocking;
|
||||
UpgradeManager upgradeManager;
|
||||
ConditionManager upgradeManager;
|
||||
|
||||
CPos? lastPos;
|
||||
bool wasCloaked = false;
|
||||
int cloakedToken = UpgradeManager.InvalidConditionToken;
|
||||
int cloakedToken = ConditionManager.InvalidConditionToken;
|
||||
|
||||
public Cloak(CloakInfo info)
|
||||
: base(info)
|
||||
@@ -80,12 +80,12 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
void INotifyCreated.Created(Actor self)
|
||||
{
|
||||
upgradeManager = self.TraitOrDefault<UpgradeManager>();
|
||||
upgradeManager = self.TraitOrDefault<ConditionManager>();
|
||||
|
||||
if (Cloaked)
|
||||
{
|
||||
wasCloaked = true;
|
||||
if (upgradeManager != null && cloakedToken == UpgradeManager.InvalidConditionToken && !string.IsNullOrEmpty(Info.CloakedCondition))
|
||||
if (upgradeManager != null && cloakedToken == ConditionManager.InvalidConditionToken && !string.IsNullOrEmpty(Info.CloakedCondition))
|
||||
cloakedToken = upgradeManager.GrantCondition(self, Info.CloakedCondition);
|
||||
}
|
||||
}
|
||||
@@ -144,7 +144,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
var isCloaked = Cloaked;
|
||||
if (isCloaked && !wasCloaked)
|
||||
{
|
||||
if (upgradeManager != null && cloakedToken == UpgradeManager.InvalidConditionToken && !string.IsNullOrEmpty(Info.CloakedCondition))
|
||||
if (upgradeManager != null && cloakedToken == ConditionManager.InvalidConditionToken && !string.IsNullOrEmpty(Info.CloakedCondition))
|
||||
cloakedToken = upgradeManager.GrantCondition(self, Info.CloakedCondition);
|
||||
|
||||
if (!self.TraitsImplementing<Cloak>().Any(a => a != this && a.Cloaked))
|
||||
@@ -152,7 +152,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
}
|
||||
else if (!isCloaked && wasCloaked)
|
||||
{
|
||||
if (cloakedToken != UpgradeManager.InvalidConditionToken)
|
||||
if (cloakedToken != ConditionManager.InvalidConditionToken)
|
||||
cloakedToken = upgradeManager.RevokeCondition(self, cloakedToken);
|
||||
|
||||
if (!self.TraitsImplementing<Cloak>().Any(a => a != this && a.Cloaked))
|
||||
|
||||
@@ -47,7 +47,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
bool AcceptsCondition(Actor a)
|
||||
{
|
||||
var um = a.TraitOrDefault<UpgradeManager>();
|
||||
var um = a.TraitOrDefault<ConditionManager>();
|
||||
return um != null && um.AcceptsExternalCondition(a, info.Condition);
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (!a.IsInWorld || a.IsDead)
|
||||
continue;
|
||||
|
||||
var um = a.TraitOrDefault<UpgradeManager>();
|
||||
var um = a.TraitOrDefault<ConditionManager>();
|
||||
|
||||
// Condition token is ignored because we never revoke this condition.
|
||||
if (um != null)
|
||||
|
||||
@@ -46,7 +46,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
readonly int initialExperience;
|
||||
|
||||
readonly List<Pair<int, string>> nextLevel = new List<Pair<int, string>>();
|
||||
UpgradeManager um;
|
||||
ConditionManager um;
|
||||
|
||||
// Stored as a percentage of our value
|
||||
[Sync] int experience = 0;
|
||||
@@ -70,7 +70,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
void INotifyCreated.Created(Actor self)
|
||||
{
|
||||
um = self.TraitOrDefault<UpgradeManager>();
|
||||
um = self.TraitOrDefault<ConditionManager>();
|
||||
if (initialExperience > 0)
|
||||
GiveExperience(initialExperience, info.SuppressLevelupAnimation);
|
||||
}
|
||||
|
||||
@@ -34,8 +34,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
readonly GrantConditionOnPrerequisiteInfo info;
|
||||
readonly GrantConditionOnPrerequisiteManager globalManager;
|
||||
|
||||
UpgradeManager manager;
|
||||
int conditionToken = UpgradeManager.InvalidConditionToken;
|
||||
ConditionManager manager;
|
||||
int conditionToken = ConditionManager.InvalidConditionToken;
|
||||
|
||||
bool wasAvailable;
|
||||
|
||||
@@ -47,7 +47,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
void INotifyCreated.Created(Actor self)
|
||||
{
|
||||
manager = self.TraitOrDefault<UpgradeManager>();
|
||||
manager = self.TraitOrDefault<ConditionManager>();
|
||||
}
|
||||
|
||||
void INotifyAddedToWorld.AddedToWorld(Actor self)
|
||||
@@ -67,9 +67,9 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (available == wasAvailable || manager == null)
|
||||
return;
|
||||
|
||||
if (available && conditionToken == UpgradeManager.InvalidConditionToken)
|
||||
if (available && conditionToken == ConditionManager.InvalidConditionToken)
|
||||
conditionToken = manager.GrantCondition(self, info.Condition);
|
||||
else if (!available && conditionToken != UpgradeManager.InvalidConditionToken)
|
||||
else if (!available && conditionToken != ConditionManager.InvalidConditionToken)
|
||||
conditionToken = manager.RevokeCondition(self, conditionToken);
|
||||
|
||||
wasAvailable = available;
|
||||
|
||||
@@ -50,8 +50,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
readonly ParachutableInfo info;
|
||||
readonly IPositionable positionable;
|
||||
|
||||
UpgradeManager um;
|
||||
int parachutingToken = UpgradeManager.InvalidConditionToken;
|
||||
ConditionManager um;
|
||||
int parachutingToken = ConditionManager.InvalidConditionToken;
|
||||
|
||||
public Parachutable(Actor self, ParachutableInfo info)
|
||||
{
|
||||
@@ -61,18 +61,18 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
void INotifyCreated.Created(Actor self)
|
||||
{
|
||||
um = self.TraitOrDefault<UpgradeManager>();
|
||||
um = self.TraitOrDefault<ConditionManager>();
|
||||
}
|
||||
|
||||
void INotifyParachute.OnParachute(Actor self)
|
||||
{
|
||||
if (um != null && parachutingToken == UpgradeManager.InvalidConditionToken && !string.IsNullOrEmpty(info.ParachutingCondition))
|
||||
if (um != null && parachutingToken == ConditionManager.InvalidConditionToken && !string.IsNullOrEmpty(info.ParachutingCondition))
|
||||
parachutingToken = um.GrantCondition(self, info.ParachutingCondition);
|
||||
}
|
||||
|
||||
void INotifyParachute.OnLanded(Actor self, Actor ignore)
|
||||
{
|
||||
if (parachutingToken != UpgradeManager.InvalidConditionToken)
|
||||
if (parachutingToken != ConditionManager.InvalidConditionToken)
|
||||
parachutingToken = um.RevokeCondition(self, parachutingToken);
|
||||
|
||||
if (!info.KilledOnImpassableTerrain)
|
||||
|
||||
@@ -34,8 +34,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
public readonly PluggableInfo Info;
|
||||
|
||||
readonly string initialPlug;
|
||||
UpgradeManager upgradeManager;
|
||||
int conditionToken = UpgradeManager.InvalidConditionToken;
|
||||
ConditionManager upgradeManager;
|
||||
int conditionToken = ConditionManager.InvalidConditionToken;
|
||||
|
||||
string active;
|
||||
|
||||
@@ -50,7 +50,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
public void Created(Actor self)
|
||||
{
|
||||
upgradeManager = self.TraitOrDefault<UpgradeManager>();
|
||||
upgradeManager = self.TraitOrDefault<ConditionManager>();
|
||||
|
||||
if (!string.IsNullOrEmpty(initialPlug))
|
||||
EnablePlug(self, initialPlug);
|
||||
@@ -76,7 +76,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (type != active)
|
||||
return;
|
||||
|
||||
if (conditionToken != UpgradeManager.InvalidConditionToken)
|
||||
if (conditionToken != ConditionManager.InvalidConditionToken)
|
||||
conditionToken = upgradeManager.RevokeCondition(self, conditionToken);
|
||||
|
||||
active = null;
|
||||
|
||||
@@ -15,7 +15,7 @@ using OpenRA.Traits;
|
||||
namespace OpenRA.Mods.Common.Traits.Render
|
||||
{
|
||||
[Desc("Visualizes the remaining time for an upgrade.")]
|
||||
class TimedConditionBarInfo : ITraitInfo, Requires<UpgradeManagerInfo>
|
||||
class TimedConditionBarInfo : ITraitInfo, Requires<ConditionManagerInfo>
|
||||
{
|
||||
[FieldLoader.Require]
|
||||
[Desc("Condition that this bar corresponds to")]
|
||||
|
||||
@@ -69,7 +69,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
foreach (var a in UnitsInRange(order.TargetLocation))
|
||||
{
|
||||
var um = a.TraitOrDefault<UpgradeManager>();
|
||||
var um = a.TraitOrDefault<ConditionManager>();
|
||||
|
||||
// Condition token is ignored because we never revoke this condition.
|
||||
if (um != null)
|
||||
@@ -90,7 +90,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (!a.Owner.IsAlliedWith(Self.Owner))
|
||||
return false;
|
||||
|
||||
var um = a.TraitOrDefault<UpgradeManager>();
|
||||
var um = a.TraitOrDefault<ConditionManager>();
|
||||
return um != null && um.AcceptsExternalCondition(a, info.Condition);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -25,9 +25,9 @@ namespace OpenRA.Mods.Common.Traits
|
||||
}
|
||||
|
||||
[Desc("Attach this to a unit to enable dynamic upgrades by warheads, experience, crates, support powers, etc.")]
|
||||
public class UpgradeManagerInfo : TraitInfo<UpgradeManager>, Requires<IConditionConsumerInfo> { }
|
||||
public class ConditionManagerInfo : TraitInfo<ConditionManager>, Requires<IConditionConsumerInfo> { }
|
||||
|
||||
public class UpgradeManager : INotifyCreated, ITick
|
||||
public class ConditionManager : INotifyCreated, ITick
|
||||
{
|
||||
/// <summary>Value used to represent an invalid token.</summary>
|
||||
public static readonly int InvalidConditionToken = -1;
|
||||
@@ -26,28 +26,28 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
class GrantCondition : UpgradableTrait<GrantConditionInfo>
|
||||
{
|
||||
UpgradeManager manager;
|
||||
int conditionToken = UpgradeManager.InvalidConditionToken;
|
||||
ConditionManager manager;
|
||||
int conditionToken = ConditionManager.InvalidConditionToken;
|
||||
|
||||
public GrantCondition(GrantConditionInfo info)
|
||||
: base(info) { }
|
||||
|
||||
protected override void Created(Actor self)
|
||||
{
|
||||
manager = self.Trait<UpgradeManager>();
|
||||
manager = self.Trait<ConditionManager>();
|
||||
|
||||
base.Created(self);
|
||||
}
|
||||
|
||||
protected override void TraitEnabled(Actor self)
|
||||
{
|
||||
if (conditionToken == UpgradeManager.InvalidConditionToken)
|
||||
if (conditionToken == ConditionManager.InvalidConditionToken)
|
||||
conditionToken = manager.GrantCondition(self, Info.Condition);
|
||||
}
|
||||
|
||||
protected override void TraitDisabled(Actor self)
|
||||
{
|
||||
if (conditionToken == UpgradeManager.InvalidConditionToken)
|
||||
if (conditionToken == ConditionManager.InvalidConditionToken)
|
||||
return;
|
||||
|
||||
conditionToken = manager.RevokeCondition(self, conditionToken);
|
||||
|
||||
@@ -41,8 +41,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
readonly GrantConditionOnDamageStateInfo info;
|
||||
readonly Health health;
|
||||
|
||||
UpgradeManager manager;
|
||||
int conditionToken = UpgradeManager.InvalidConditionToken;
|
||||
ConditionManager manager;
|
||||
int conditionToken = ConditionManager.InvalidConditionToken;
|
||||
|
||||
public GrantConditionOnDamageState(Actor self, GrantConditionOnDamageStateInfo info)
|
||||
{
|
||||
@@ -52,13 +52,13 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
void INotifyCreated.Created(Actor self)
|
||||
{
|
||||
manager = self.TraitOrDefault<UpgradeManager>();
|
||||
manager = self.TraitOrDefault<ConditionManager>();
|
||||
GrantUpgradeOnValidDamageState(self, health.DamageState);
|
||||
}
|
||||
|
||||
void GrantUpgradeOnValidDamageState(Actor self, DamageState state)
|
||||
{
|
||||
if (!info.ValidDamageStates.HasFlag(state) || conditionToken != UpgradeManager.InvalidConditionToken)
|
||||
if (!info.ValidDamageStates.HasFlag(state) || conditionToken != ConditionManager.InvalidConditionToken)
|
||||
return;
|
||||
|
||||
conditionToken = manager.GrantCondition(self, info.Condition);
|
||||
@@ -69,7 +69,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
void INotifyDamageStateChanged.DamageStateChanged(Actor self, AttackInfo e)
|
||||
{
|
||||
var granted = conditionToken != UpgradeManager.InvalidConditionToken;
|
||||
var granted = conditionToken != ConditionManager.InvalidConditionToken;
|
||||
if ((granted && info.GrantPermanently) || manager == null)
|
||||
return;
|
||||
|
||||
|
||||
@@ -72,9 +72,9 @@ namespace OpenRA.Mods.Common.Traits
|
||||
readonly Lazy<WithSpriteBody> body;
|
||||
|
||||
DeployState deployState;
|
||||
UpgradeManager manager;
|
||||
int deployedToken = UpgradeManager.InvalidConditionToken;
|
||||
int undeployedToken = UpgradeManager.InvalidConditionToken;
|
||||
ConditionManager manager;
|
||||
int deployedToken = ConditionManager.InvalidConditionToken;
|
||||
int undeployedToken = ConditionManager.InvalidConditionToken;
|
||||
|
||||
public GrantConditionOnDeploy(ActorInitializer init, GrantConditionOnDeployInfo info)
|
||||
{
|
||||
@@ -89,7 +89,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
public void Created(Actor self)
|
||||
{
|
||||
manager = self.TraitOrDefault<UpgradeManager>();
|
||||
manager = self.TraitOrDefault<ConditionManager>();
|
||||
|
||||
switch (deployState)
|
||||
{
|
||||
@@ -243,7 +243,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
void OnDeployStarted()
|
||||
{
|
||||
if (undeployedToken != UpgradeManager.InvalidConditionToken)
|
||||
if (undeployedToken != ConditionManager.InvalidConditionToken)
|
||||
undeployedToken = manager.RevokeCondition(self, undeployedToken);
|
||||
|
||||
deployState = DeployState.Deploying;
|
||||
@@ -251,7 +251,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
void OnDeployCompleted()
|
||||
{
|
||||
if (manager != null && !string.IsNullOrEmpty(info.DeployedCondition) && deployedToken == UpgradeManager.InvalidConditionToken)
|
||||
if (manager != null && !string.IsNullOrEmpty(info.DeployedCondition) && deployedToken == ConditionManager.InvalidConditionToken)
|
||||
deployedToken = manager.GrantCondition(self, info.DeployedCondition);
|
||||
|
||||
deployState = DeployState.Deployed;
|
||||
@@ -259,7 +259,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
void OnUndeployStarted()
|
||||
{
|
||||
if (deployedToken != UpgradeManager.InvalidConditionToken)
|
||||
if (deployedToken != ConditionManager.InvalidConditionToken)
|
||||
deployedToken = manager.RevokeCondition(self, deployedToken);
|
||||
|
||||
deployState = DeployState.Deploying;
|
||||
@@ -267,7 +267,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
void OnUndeployCompleted()
|
||||
{
|
||||
if (manager != null && !string.IsNullOrEmpty(info.UndeployedCondition) && undeployedToken == UpgradeManager.InvalidConditionToken)
|
||||
if (manager != null && !string.IsNullOrEmpty(info.UndeployedCondition) && undeployedToken == ConditionManager.InvalidConditionToken)
|
||||
undeployedToken = manager.GrantCondition(self, info.UndeployedCondition);
|
||||
|
||||
deployState = DeployState.Undeployed;
|
||||
|
||||
@@ -31,8 +31,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
{
|
||||
readonly IMove movement;
|
||||
|
||||
UpgradeManager manager;
|
||||
int conditionToken = UpgradeManager.InvalidConditionToken;
|
||||
ConditionManager manager;
|
||||
int conditionToken = ConditionManager.InvalidConditionToken;
|
||||
|
||||
public GrantConditionOnMovement(Actor self, GrantConditionOnMovementInfo info)
|
||||
: base(info)
|
||||
@@ -42,7 +42,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
protected override void Created(Actor self)
|
||||
{
|
||||
manager = self.TraitOrDefault<UpgradeManager>();
|
||||
manager = self.TraitOrDefault<ConditionManager>();
|
||||
base.Created(self);
|
||||
}
|
||||
|
||||
@@ -53,9 +53,9 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
var isMovingVertically = Info.ConsiderVerticalMovement ? movement.IsMovingVertically : false;
|
||||
var isMoving = !IsTraitDisabled && !self.IsDead && (movement.IsMoving || isMovingVertically);
|
||||
if (isMoving && conditionToken == UpgradeManager.InvalidConditionToken)
|
||||
if (isMoving && conditionToken == ConditionManager.InvalidConditionToken)
|
||||
conditionToken = manager.GrantCondition(self, Info.Condition);
|
||||
else if (!isMoving && conditionToken != UpgradeManager.InvalidConditionToken)
|
||||
else if (!isMoving && conditionToken != ConditionManager.InvalidConditionToken)
|
||||
conditionToken = manager.RevokeCondition(self, conditionToken);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,8 +32,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
{
|
||||
readonly GrantConditionOnTerrainInfo info;
|
||||
|
||||
UpgradeManager manager;
|
||||
int conditionToken = UpgradeManager.InvalidConditionToken;
|
||||
ConditionManager manager;
|
||||
int conditionToken = ConditionManager.InvalidConditionToken;
|
||||
string previousTerrain;
|
||||
|
||||
public GrantConditionOnTerrain(ActorInitializer init, GrantConditionOnTerrainInfo info)
|
||||
@@ -43,7 +43,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
void INotifyCreated.Created(Actor self)
|
||||
{
|
||||
manager = self.TraitOrDefault<UpgradeManager>();
|
||||
manager = self.TraitOrDefault<ConditionManager>();
|
||||
}
|
||||
|
||||
public void Tick(Actor self)
|
||||
@@ -55,9 +55,9 @@ namespace OpenRA.Mods.Common.Traits
|
||||
var wantsGranted = info.TerrainTypes.Contains(currentTerrain);
|
||||
if (currentTerrain != previousTerrain)
|
||||
{
|
||||
if (wantsGranted && conditionToken == UpgradeManager.InvalidConditionToken)
|
||||
if (wantsGranted && conditionToken == ConditionManager.InvalidConditionToken)
|
||||
conditionToken = manager.GrantCondition(self, info.Condition);
|
||||
else if (!wantsGranted && conditionToken != UpgradeManager.InvalidConditionToken)
|
||||
else if (!wantsGranted && conditionToken != ConditionManager.InvalidConditionToken)
|
||||
conditionToken = manager.RevokeCondition(self, conditionToken);
|
||||
}
|
||||
|
||||
|
||||
@@ -108,7 +108,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (!info.ValidStances.HasStance(stance))
|
||||
return;
|
||||
|
||||
var um = a.TraitOrDefault<UpgradeManager>();
|
||||
var um = a.TraitOrDefault<ConditionManager>();
|
||||
if (um != null && !tokens.ContainsKey(a) && um.AcceptsExternalCondition(a, info.Condition))
|
||||
tokens[a] = um.GrantCondition(a, info.Condition, true);
|
||||
}
|
||||
@@ -130,7 +130,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (!info.ValidStances.HasStance(stance))
|
||||
return;
|
||||
|
||||
var um = produced.TraitOrDefault<UpgradeManager>();
|
||||
var um = produced.TraitOrDefault<ConditionManager>();
|
||||
if (um != null && um.AcceptsExternalCondition(produced, info.Condition))
|
||||
tokens[produced] = um.GrantCondition(produced, info.Condition, true);
|
||||
}
|
||||
@@ -146,7 +146,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
return;
|
||||
|
||||
tokens.Remove(a);
|
||||
var um = a.TraitOrDefault<UpgradeManager>();
|
||||
var um = a.TraitOrDefault<ConditionManager>();
|
||||
if (um != null)
|
||||
um.RevokeCondition(a, token);
|
||||
}
|
||||
|
||||
@@ -64,7 +64,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
{
|
||||
Info = info;
|
||||
|
||||
// Conditional traits will be enabled (if appropriate) by the UpgradeManager
|
||||
// Conditional traits will be enabled (if appropriate) by the ConditionManager
|
||||
// calling IConditionConsumer.ConditionsChanged at the end of INotifyCreated.
|
||||
IsTraitDisabled = Info.RequiresCondition != null;
|
||||
}
|
||||
|
||||
@@ -695,6 +695,15 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
||||
RenameNodeKey(node, "DisableOnCondition");
|
||||
}
|
||||
|
||||
if (engineVersion < 20161223)
|
||||
{
|
||||
if (node.Key.StartsWith("UpgradeManager", StringComparison.Ordinal))
|
||||
RenameNodeKey(node, "ConditionManager");
|
||||
|
||||
if (node.Key.StartsWith("-UpgradeManager", StringComparison.Ordinal))
|
||||
RenameNodeKey(node, "-ConditionManager");
|
||||
}
|
||||
|
||||
UpgradeActorRules(modData, engineVersion, ref node.Value.Nodes, node, depth + 1);
|
||||
}
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace OpenRA.Mods.Common.Warheads
|
||||
if (!IsValidAgainst(a, firedBy))
|
||||
continue;
|
||||
|
||||
var um = a.TraitOrDefault<UpgradeManager>();
|
||||
var um = a.TraitOrDefault<ConditionManager>();
|
||||
|
||||
// Condition token is ignored because we never revoke this condition.
|
||||
if (um != null && um.AcceptsExternalCondition(a, Condition))
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace OpenRA.Mods.D2k.Activities
|
||||
|
||||
readonly Target target;
|
||||
readonly Sandworm sandworm;
|
||||
readonly UpgradeManager manager;
|
||||
readonly ConditionManager manager;
|
||||
readonly WeaponInfo weapon;
|
||||
readonly RadarPings radarPings;
|
||||
readonly AttackSwallow swallow;
|
||||
@@ -37,7 +37,7 @@ namespace OpenRA.Mods.D2k.Activities
|
||||
int countdown;
|
||||
CPos burrowLocation;
|
||||
AttackState stance;
|
||||
int attackingToken = UpgradeManager.InvalidConditionToken;
|
||||
int attackingToken = ConditionManager.InvalidConditionToken;
|
||||
|
||||
public SwallowActor(Actor self, Target target, WeaponInfo weapon)
|
||||
{
|
||||
@@ -46,7 +46,7 @@ namespace OpenRA.Mods.D2k.Activities
|
||||
sandworm = self.Trait<Sandworm>();
|
||||
positionable = self.Trait<Mobile>();
|
||||
swallow = self.Trait<AttackSwallow>();
|
||||
manager = self.TraitOrDefault<UpgradeManager>();
|
||||
manager = self.TraitOrDefault<ConditionManager>();
|
||||
radarPings = self.World.WorldActor.TraitOrDefault<RadarPings>();
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ namespace OpenRA.Mods.D2k.Activities
|
||||
stance = AttackState.Burrowed;
|
||||
countdown = swallow.Info.AttackDelay;
|
||||
burrowLocation = self.Location;
|
||||
if (manager != null && attackingToken == UpgradeManager.InvalidConditionToken &&
|
||||
if (manager != null && attackingToken == ConditionManager.InvalidConditionToken &&
|
||||
!string.IsNullOrEmpty(swallow.Info.AttackingCondition))
|
||||
attackingToken = manager.GrantCondition(self, swallow.Info.AttackingCondition);
|
||||
break;
|
||||
@@ -170,7 +170,7 @@ namespace OpenRA.Mods.D2k.Activities
|
||||
|
||||
void RevokeCondition(Actor self)
|
||||
{
|
||||
if (attackingToken != UpgradeManager.InvalidConditionToken)
|
||||
if (attackingToken != ConditionManager.InvalidConditionToken)
|
||||
attackingToken = manager.RevokeCondition(self, attackingToken);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,8 +83,8 @@ namespace OpenRA.Mods.RA.Traits
|
||||
readonly Actor self;
|
||||
readonly DisguiseInfo info;
|
||||
|
||||
UpgradeManager um;
|
||||
int disguisedToken = UpgradeManager.InvalidConditionToken;
|
||||
ConditionManager um;
|
||||
int disguisedToken = ConditionManager.InvalidConditionToken;
|
||||
|
||||
public Disguise(Actor self, DisguiseInfo info)
|
||||
{
|
||||
@@ -94,7 +94,7 @@ namespace OpenRA.Mods.RA.Traits
|
||||
|
||||
void INotifyCreated.Created(Actor self)
|
||||
{
|
||||
um = self.TraitOrDefault<UpgradeManager>();
|
||||
um = self.TraitOrDefault<ConditionManager>();
|
||||
}
|
||||
|
||||
public IEnumerable<IOrderTargeter> Orders
|
||||
@@ -189,9 +189,9 @@ namespace OpenRA.Mods.RA.Traits
|
||||
|
||||
if (Disguised != oldDisguiseSetting && um != null)
|
||||
{
|
||||
if (Disguised && disguisedToken == UpgradeManager.InvalidConditionToken && !string.IsNullOrEmpty(info.DisguisedCondition))
|
||||
if (Disguised && disguisedToken == ConditionManager.InvalidConditionToken && !string.IsNullOrEmpty(info.DisguisedCondition))
|
||||
disguisedToken = um.GrantCondition(self, info.DisguisedCondition);
|
||||
else if (!Disguised && disguisedToken != UpgradeManager.InvalidConditionToken)
|
||||
else if (!Disguised && disguisedToken != ConditionManager.InvalidConditionToken)
|
||||
disguisedToken = um.RevokeCondition(self, disguisedToken);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
GivesExperience:
|
||||
PlayerExperienceModifier: 1
|
||||
ScriptTriggers:
|
||||
UpgradeManager:
|
||||
ConditionManager:
|
||||
RenderDebugState:
|
||||
|
||||
^SpriteActor:
|
||||
@@ -605,7 +605,7 @@
|
||||
|
||||
^CivBuilding:
|
||||
Inherits: ^Building
|
||||
-UpgradeManager:
|
||||
-ConditionManager:
|
||||
Health:
|
||||
HP: 400
|
||||
Tooltip:
|
||||
|
||||
@@ -106,7 +106,7 @@ sandworm:
|
||||
TerrainTypes: Sand, Dune, SpiceSand, Spice
|
||||
MovingInterval: 3
|
||||
RequiresCondition: !attacking
|
||||
UpgradeManager:
|
||||
ConditionManager:
|
||||
Buildable:
|
||||
Description: Attracted by vibrations in the sand.\nWill eat units whole and has a large appetite.
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
GivesExperience:
|
||||
PlayerExperienceModifier: 1
|
||||
ScriptTriggers:
|
||||
UpgradeManager:
|
||||
ConditionManager:
|
||||
RenderDebugState:
|
||||
|
||||
^SpriteActor:
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
GivesExperience:
|
||||
PlayerExperienceModifier: 1
|
||||
ScriptTriggers:
|
||||
UpgradeManager:
|
||||
ConditionManager:
|
||||
RenderDebugState:
|
||||
|
||||
^SpriteActor:
|
||||
@@ -894,7 +894,7 @@
|
||||
ShadowImage: parach-shadow
|
||||
ShadowSequence: idle
|
||||
RequiresCondition: parachute
|
||||
UpgradeManager:
|
||||
ConditionManager:
|
||||
|
||||
^Mine:
|
||||
Inherits: ^SpriteActor
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
GivesExperience:
|
||||
PlayerExperienceModifier: 1
|
||||
ScriptTriggers:
|
||||
UpgradeManager:
|
||||
ConditionManager:
|
||||
RenderDebugState:
|
||||
|
||||
^SpriteActor:
|
||||
@@ -246,7 +246,7 @@
|
||||
SellSounds: cashturn.aud
|
||||
Demolishable:
|
||||
ScriptTriggers:
|
||||
UpgradeManager:
|
||||
ConditionManager:
|
||||
Health:
|
||||
Shape: Rectangle
|
||||
RotateToIsometry: true
|
||||
|
||||
Reference in New Issue
Block a user