fixed taking over sam/pillbox/etc. to stop firing

fixed issue with powered down samsites

more optimization

very small optimization

undo changes to powerdown samsite fixes

refixed powered down sam sites

removed debug line

redid the fix in another approach by queueing a sell activity on the top of the queue. This was already present but didn't always work

fixed line I removed

prevented attack activity to be queued when actor is disabled

another style fail of me

reverse and queueactivity activities are now executed on top of the queue for a sell action
This commit is contained in:
pevers
2015-02-24 22:17:39 +01:00
parent 92101a1393
commit 17fec82348
5 changed files with 15 additions and 8 deletions

View File

@@ -164,6 +164,9 @@ namespace OpenRA.Mods.Common.Traits
public void AttackTarget(Target target, bool queued, bool allowMove)
{
if (self.IsDisabled())
return;
if (!target.IsValidFor(self))
return;

View File

@@ -20,7 +20,7 @@ namespace OpenRA.Mods.Common.Traits
public override object Create(ActorInitializer init) { return new AttackFollow(init.Self, this); }
}
public class AttackFollow : AttackBase, ITick, ISync
public class AttackFollow : AttackBase, ITick, INotifyOwnerChanged, ISync
{
public Target Target { get; protected set; }
@@ -46,6 +46,11 @@ namespace OpenRA.Mods.Common.Traits
Target = Target.Invalid;
}
public void OnOwnerChanged(Actor self, Player oldOwner, Player newOwner)
{
Target = Target.Invalid;
}
class AttackActivity : Activity
{
readonly AttackFollow attack;

View File

@@ -35,12 +35,11 @@ namespace OpenRA.Mods.Common.Traits
if (!base.CanAttack(self, target))
return false;
var canAttack = false;
foreach (var t in turrets)
if (t.FaceTarget(self, target))
canAttack = true;
return true;
return canAttack;
return false;
}
}
}

View File

@@ -46,13 +46,13 @@ namespace OpenRA.Mods.Common.Traits
}
}
public void Reverse(Actor self, Activity activity)
public void Reverse(Actor self, Activity activity, bool queued = true)
{
renderBuilding.PlayCustomAnimBackwards(self, info.Sequence, () =>
{
// avoids visual glitches as we wait for the actor to get destroyed
renderBuilding.DefaultAnimation.PlayFetchIndex(info.Sequence, () => 0);
self.QueueActivity(activity);
self.QueueActivity(queued, activity);
});
}
}

View File

@@ -53,9 +53,9 @@ namespace OpenRA.Mods.Common.Traits
var makeAnimation = self.TraitOrDefault<WithMakeAnimation>();
if (makeAnimation != null)
makeAnimation.Reverse(self, new Sell());
makeAnimation.Reverse(self, new Sell(), false);
else
self.QueueActivity(new Sell());
self.QueueActivity(false, new Sell());
}
}
}