check name for Actor.GrantCondition()

This commit is contained in:
atlimit8
2020-04-26 01:19:31 -05:00
committed by abcdefg30
parent 1d2d8ed107
commit 1ef27d18c1
21 changed files with 38 additions and 44 deletions

View File

@@ -528,10 +528,16 @@ namespace OpenRA
notify(this, readOnlyConditionCache); notify(this, readOnlyConditionCache);
} }
/// <summary>Grants a specified condition.</summary> /// <summary>
/// Grants a specified condition if it is valid.
/// Otherwise, just returns InvalidConditionToken.
/// </summary>
/// <returns>The token that is used to revoke this condition.</returns> /// <returns>The token that is used to revoke this condition.</returns>
public int GrantCondition(string condition) public int GrantCondition(string condition)
{ {
if (string.IsNullOrEmpty(condition))
return InvalidConditionToken;
var token = nextConditionToken++; var token = nextConditionToken++;
conditionTokens.Add(token, condition); conditionTokens.Add(token, condition);
UpdateConditionState(condition, token, false); UpdateConditionState(condition, token, false);

View File

@@ -55,8 +55,7 @@ namespace OpenRA.Mods.Cnc.Traits
public void GrantLeapCondition(Actor self) public void GrantLeapCondition(Actor self)
{ {
if (!string.IsNullOrEmpty(info.LeapCondition)) leapToken = self.GrantCondition(info.LeapCondition);
leapToken = self.GrantCondition(info.LeapCondition);
} }
public void RevokeLeapCondition(Actor self) public void RevokeLeapCondition(Actor self)

View File

@@ -122,7 +122,7 @@ namespace OpenRA.Mods.Cnc.Traits
void TriggerVortex() void TriggerVortex()
{ {
if (!string.IsNullOrEmpty(info.Condition) && conditionToken == Actor.InvalidConditionToken) if (conditionToken == Actor.InvalidConditionToken)
conditionToken = self.GrantCondition(info.Condition); conditionToken = self.GrantCondition(info.Condition);
triggered = true; triggered = true;

View File

@@ -221,7 +221,7 @@ namespace OpenRA.Mods.Cnc.Traits
if (Disguised != oldDisguiseSetting) if (Disguised != oldDisguiseSetting)
{ {
if (Disguised && disguisedToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(info.DisguisedCondition)) if (Disguised && disguisedToken == Actor.InvalidConditionToken)
disguisedToken = self.GrantCondition(info.DisguisedCondition); disguisedToken = self.GrantCondition(info.DisguisedCondition);
else if (!Disguised && disguisedToken != Actor.InvalidConditionToken) else if (!Disguised && disguisedToken != Actor.InvalidConditionToken)
disguisedToken = self.RevokeCondition(disguisedToken); disguisedToken = self.RevokeCondition(disguisedToken);

View File

@@ -188,8 +188,7 @@ namespace OpenRA.Mods.Cnc.Traits
if (target.Type == TargetType.Invalid) if (target.Type == TargetType.Invalid)
return true; return true;
if (!string.IsNullOrEmpty(mad.info.DeployedCondition)) self.GrantCondition(mad.info.DeployedCondition);
self.GrantCondition(mad.info.DeployedCondition);
self.World.AddFrameEndTask(w => EjectDriver()); self.World.AddFrameEndTask(w => EjectDriver());
if (mad.info.ThumpSequence != null) if (mad.info.ThumpSequence != null)

View File

@@ -42,10 +42,10 @@ namespace OpenRA.Mods.Common.Activities
if (attackMove == null) if (attackMove == null)
return; return;
if (!isAssaultMove && !string.IsNullOrEmpty(attackMove.Info.AttackMoveCondition)) if (isAssaultMove)
token = self.GrantCondition(attackMove.Info.AttackMoveCondition);
else if (isAssaultMove && !string.IsNullOrEmpty(attackMove.Info.AssaultMoveCondition))
token = self.GrantCondition(attackMove.Info.AssaultMoveCondition); token = self.GrantCondition(attackMove.Info.AssaultMoveCondition);
else
token = self.GrantCondition(attackMove.Info.AttackMoveCondition);
} }
public override bool Tick(Actor self) public override bool Tick(Actor self)

View File

@@ -1114,7 +1114,7 @@ namespace OpenRA.Mods.Common.Traits
return; return;
airborne = true; airborne = true;
if (!string.IsNullOrEmpty(Info.AirborneCondition) && airborneToken == Actor.InvalidConditionToken) if (airborneToken == Actor.InvalidConditionToken)
airborneToken = self.GrantCondition(Info.AirborneCondition); airborneToken = self.GrantCondition(Info.AirborneCondition);
} }
@@ -1138,7 +1138,7 @@ namespace OpenRA.Mods.Common.Traits
return; return;
cruising = true; cruising = true;
if (!string.IsNullOrEmpty(Info.CruisingCondition) && cruisingToken == Actor.InvalidConditionToken) if (cruisingToken == Actor.InvalidConditionToken)
cruisingToken = self.GrantCondition(Info.CruisingCondition); cruisingToken = self.GrantCondition(Info.CruisingCondition);
} }

View File

@@ -54,8 +54,7 @@ namespace OpenRA.Mods.Common.Traits
var delta = charging ? info.ChargeRate : -info.DischargeRate; var delta = charging ? info.ChargeRate : -info.DischargeRate;
ChargeLevel = (ChargeLevel + delta).Clamp(0, info.ChargeLevel); ChargeLevel = (ChargeLevel + delta).Clamp(0, info.ChargeLevel);
if (ChargeLevel > 0 && !string.IsNullOrEmpty(info.ChargingCondition) if (ChargeLevel > 0 && chargingToken == Actor.InvalidConditionToken)
&& chargingToken == Actor.InvalidConditionToken)
chargingToken = self.GrantCondition(info.ChargingCondition); chargingToken = self.GrantCondition(info.ChargingCondition);
if (ChargeLevel == 0 && chargingToken != Actor.InvalidConditionToken) if (ChargeLevel == 0 && chargingToken != Actor.InvalidConditionToken)

View File

@@ -102,7 +102,7 @@ namespace OpenRA.Mods.Common.Traits
b.Trait.SetPrimaryProducer(b.Actor, false); b.Trait.SetPrimaryProducer(b.Actor, false);
} }
if (primaryToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(Info.PrimaryCondition)) if (primaryToken == Actor.InvalidConditionToken)
primaryToken = self.GrantCondition(Info.PrimaryCondition); primaryToken = self.GrantCondition(Info.PrimaryCondition);
Game.Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", Info.SelectionNotification, self.Owner.Faction.InternalName); Game.Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", Info.SelectionNotification, self.Owner.Faction.InternalName);

View File

@@ -204,12 +204,10 @@ namespace OpenRA.Mods.Common.Traits
else else
currentTargetDelay += 1; currentTargetDelay += 1;
if (!string.IsNullOrEmpty(info.CapturingCondition) && if (capturingToken == Actor.InvalidConditionToken)
capturingToken == Actor.InvalidConditionToken)
capturingToken = self.GrantCondition(info.CapturingCondition); capturingToken = self.GrantCondition(info.CapturingCondition);
if (!string.IsNullOrEmpty(targetManager.info.BeingCapturedCondition) && if (targetManager.beingCapturedToken == Actor.InvalidConditionToken)
targetManager.beingCapturedToken == Actor.InvalidConditionToken)
targetManager.beingCapturedToken = target.GrantCondition(targetManager.info.BeingCapturedCondition); targetManager.beingCapturedToken = target.GrantCondition(targetManager.info.BeingCapturedCondition);
captures = enabledCaptures captures = enabledCaptures

View File

@@ -262,7 +262,7 @@ namespace OpenRA.Mods.Common.Traits
if (!HasSpace(w)) if (!HasSpace(w))
return false; return false;
if (loadingToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(Info.LoadingCondition)) if (loadingToken == Actor.InvalidConditionToken)
loadingToken = self.GrantCondition(Info.LoadingCondition); loadingToken = self.GrantCondition(Info.LoadingCondition);
reserves.Add(a); reserves.Add(a);

View File

@@ -78,7 +78,7 @@ namespace OpenRA.Mods.Common.Traits
attached = true; attached = true;
if (carriedToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(Info.CarriedCondition)) if (carriedToken == Actor.InvalidConditionToken)
carriedToken = self.GrantCondition(Info.CarriedCondition); carriedToken = self.GrantCondition(Info.CarriedCondition);
} }
@@ -102,7 +102,7 @@ namespace OpenRA.Mods.Common.Traits
state = State.Reserved; state = State.Reserved;
Carrier = carrier; Carrier = carrier;
if (reservedToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(Info.ReservedCondition)) if (reservedToken == Actor.InvalidConditionToken)
reservedToken = self.GrantCondition(Info.ReservedCondition); reservedToken = self.GrantCondition(Info.ReservedCondition);
return true; return true;
@@ -134,7 +134,7 @@ namespace OpenRA.Mods.Common.Traits
state = State.Locked; state = State.Locked;
Carrier = carrier; Carrier = carrier;
if (lockedToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(Info.LockedCondition)) if (lockedToken == Actor.InvalidConditionToken)
lockedToken = self.GrantCondition(Info.LockedCondition); lockedToken = self.GrantCondition(Info.LockedCondition);
} }

View File

@@ -95,7 +95,7 @@ namespace OpenRA.Mods.Common.Traits
if (Cloaked) if (Cloaked)
{ {
wasCloaked = true; wasCloaked = true;
if (cloakedToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(Info.CloakedCondition)) if (cloakedToken == Actor.InvalidConditionToken)
cloakedToken = self.GrantCondition(Info.CloakedCondition); cloakedToken = self.GrantCondition(Info.CloakedCondition);
} }
@@ -163,7 +163,7 @@ namespace OpenRA.Mods.Common.Traits
var isCloaked = Cloaked; var isCloaked = Cloaked;
if (isCloaked && !wasCloaked) if (isCloaked && !wasCloaked)
{ {
if (cloakedToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(Info.CloakedCondition)) if (cloakedToken == Actor.InvalidConditionToken)
cloakedToken = self.GrantCondition(Info.CloakedCondition); cloakedToken = self.GrantCondition(Info.CloakedCondition);
// Sounds shouldn't play if the actor starts cloaked // Sounds shouldn't play if the actor starts cloaked

View File

@@ -323,7 +323,7 @@ namespace OpenRA.Mods.Common.Traits
void OnDeployCompleted() void OnDeployCompleted()
{ {
if (!string.IsNullOrEmpty(Info.DeployedCondition) && deployedToken == Actor.InvalidConditionToken) if (deployedToken == Actor.InvalidConditionToken)
deployedToken = self.GrantCondition(Info.DeployedCondition); deployedToken = self.GrantCondition(Info.DeployedCondition);
deployState = DeployState.Deployed; deployState = DeployState.Deployed;
@@ -339,7 +339,7 @@ namespace OpenRA.Mods.Common.Traits
void OnUndeployCompleted() void OnUndeployCompleted()
{ {
if (!string.IsNullOrEmpty(Info.UndeployedCondition) && undeployedToken == Actor.InvalidConditionToken) if (undeployedToken == Actor.InvalidConditionToken)
undeployedToken = self.GrantCondition(Info.UndeployedCondition); undeployedToken = self.GrantCondition(Info.UndeployedCondition);
deployState = DeployState.Undeployed; deployState = DeployState.Undeployed;

View File

@@ -40,10 +40,7 @@ namespace OpenRA.Mods.Common.Traits
void INotifyCreated.Created(Actor self) void INotifyCreated.Created(Actor self)
{ {
if (direction != info.Direction) if (direction == info.Direction)
return;
if (!string.IsNullOrEmpty(info.Condition))
self.GrantCondition(info.Condition); self.GrantCondition(info.Condition);
} }
} }

View File

@@ -59,10 +59,7 @@ namespace OpenRA.Mods.Common.Traits
if (IsTraitDisabled) if (IsTraitDisabled)
return; return;
var token = Actor.InvalidConditionToken; var token = self.GrantCondition(Info.Condition);
if (!string.IsNullOrEmpty(Info.Condition))
token = self.GrantCondition(Info.Condition);
actions.Add(new DemolishAction(saboteur, delay, token)); actions.Add(new DemolishAction(saboteur, delay, token));
} }

View File

@@ -73,8 +73,7 @@ namespace OpenRA.Mods.Common.Traits
if (self.IsDead) if (self.IsDead)
return; return;
if (!string.IsNullOrEmpty(Info.GrantsCondition)) self.GrantCondition(Info.GrantsCondition);
self.GrantCondition(Info.GrantsCondition);
if (Info.RemoveInstead || !self.Info.HasTraitInfo<IHealthInfo>()) if (Info.RemoveInstead || !self.Info.HasTraitInfo<IHealthInfo>())
self.Dispose(); self.Dispose();

View File

@@ -78,7 +78,7 @@ namespace OpenRA.Mods.Common.Traits
{ {
IsInAir = true; IsInAir = true;
if (parachutingToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(info.ParachutingCondition)) if (parachutingToken == Actor.InvalidConditionToken)
parachutingToken = self.GrantCondition(info.ParachutingCondition); parachutingToken = self.GrantCondition(info.ParachutingCondition);
self.NotifyBlocker(self.Location); self.NotifyBlocker(self.Location);

View File

@@ -121,7 +121,7 @@ namespace OpenRA.Mods.Common.Traits
{ {
string specificCargoCondition; string specificCargoCondition;
if (anyCargoToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(Info.CargoCondition)) if (anyCargoToken == Actor.InvalidConditionToken)
anyCargoToken = self.GrantCondition(Info.CargoCondition); anyCargoToken = self.GrantCondition(Info.CargoCondition);
if (specificCargoToken == Actor.InvalidConditionToken && Info.CargoConditions.TryGetValue(cargo.Info.Name, out specificCargoCondition)) if (specificCargoToken == Actor.InvalidConditionToken && Info.CargoConditions.TryGetValue(cargo.Info.Name, out specificCargoCondition))

View File

@@ -57,7 +57,7 @@ namespace OpenRA.Mods.Common.Traits.Render
public void Forward(Actor self, Action onComplete) public void Forward(Actor self, Action onComplete)
{ {
if (!string.IsNullOrEmpty(info.Condition) && token == Actor.InvalidConditionToken) if (token == Actor.InvalidConditionToken)
token = self.GrantCondition(info.Condition); token = self.GrantCondition(info.Condition);
var wsb = wsbs.FirstEnabledTraitOrDefault(); var wsb = wsbs.FirstEnabledTraitOrDefault();
@@ -80,7 +80,7 @@ namespace OpenRA.Mods.Common.Traits.Render
public void Reverse(Actor self, Action onComplete) public void Reverse(Actor self, Action onComplete)
{ {
if (!string.IsNullOrEmpty(info.Condition) && token == Actor.InvalidConditionToken) if (token == Actor.InvalidConditionToken)
token = self.GrantCondition(info.Condition); token = self.GrantCondition(info.Condition);
var wsb = wsbs.FirstEnabledTraitOrDefault(); var wsb = wsbs.FirstEnabledTraitOrDefault();
@@ -114,8 +114,7 @@ namespace OpenRA.Mods.Common.Traits.Render
if (wsb != null) if (wsb != null)
wsb.DefaultAnimation.PlayFetchIndex(info.Sequence, () => 0); wsb.DefaultAnimation.PlayFetchIndex(info.Sequence, () => 0);
if (!string.IsNullOrEmpty(info.Condition)) token = self.GrantCondition(info.Condition);
token = self.GrantCondition(info.Condition);
self.QueueActivity(queued, activity); self.QueueActivity(queued, activity);
}); });

View File

@@ -101,8 +101,9 @@ namespace OpenRA.Mods.D2k.Activities
stance = AttackState.Burrowed; stance = AttackState.Burrowed;
countdown = swallow.Info.AttackDelay; countdown = swallow.Info.AttackDelay;
burrowLocation = self.Location; burrowLocation = self.Location;
if (attackingToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(swallow.Info.AttackingCondition)) if (attackingToken == Actor.InvalidConditionToken)
attackingToken = self.GrantCondition(swallow.Info.AttackingCondition); attackingToken = self.GrantCondition(swallow.Info.AttackingCondition);
break; break;
case AttackState.Burrowed: case AttackState.Burrowed:
if (--countdown > 0) if (--countdown > 0)