Turn Actor.GetCurrentActivity into a property

This commit is contained in:
Oliver Brakmann
2016-10-29 16:56:31 +02:00
parent 04dbda6dcd
commit 3e9bf7aa4d
8 changed files with 19 additions and 24 deletions

View File

@@ -46,7 +46,7 @@ namespace OpenRA.Activities
{ {
public static IEnumerable<Target> GetTargetQueue(this Actor self) public static IEnumerable<Target> GetTargetQueue(this Actor self)
{ {
return self.GetCurrentActivity() return self.CurrentActivity
.Iterate(u => u.NextActivity) .Iterate(u => u.NextActivity)
.TakeWhile(u => u != null) .TakeWhile(u => u != null)
.SelectMany(u => u.GetTargets(self)); .SelectMany(u => u.GetTargets(self));

View File

@@ -43,7 +43,7 @@ namespace OpenRA
public bool IsInWorld { get; internal set; } public bool IsInWorld { get; internal set; }
public bool Disposed { get; private set; } public bool Disposed { get; private set; }
Activity currentActivity; public Activity CurrentActivity { get; private set; }
public Group Group; public Group Group;
public int Generation; public int Generation;
@@ -54,7 +54,7 @@ namespace OpenRA
public IOccupySpace OccupiesSpace { get; private set; } public IOccupySpace OccupiesSpace { get; private set; }
public ITargetable[] Targetables { get; private set; } public ITargetable[] Targetables { get; private set; }
public bool IsIdle { get { return currentActivity == null; } } public bool IsIdle { get { return CurrentActivity == null; } }
public bool IsDead { get { return Disposed || (health != null && health.IsDead); } } public bool IsDead { get { return Disposed || (health != null && health.IsDead); } }
public CPos Location { get { return OccupiesSpace.TopLeft; } } public CPos Location { get { return OccupiesSpace.TopLeft; } }
@@ -161,7 +161,7 @@ namespace OpenRA
public void Tick() public void Tick()
{ {
var wasIdle = IsIdle; var wasIdle = IsIdle;
currentActivity = ActivityUtils.RunActivity(this, currentActivity); CurrentActivity = ActivityUtils.RunActivity(this, CurrentActivity);
if (!wasIdle && IsIdle) if (!wasIdle && IsIdle)
foreach (var n in TraitsImplementing<INotifyBecomingIdle>()) foreach (var n in TraitsImplementing<INotifyBecomingIdle>())
@@ -200,21 +200,16 @@ namespace OpenRA
public void QueueActivity(Activity nextActivity) public void QueueActivity(Activity nextActivity)
{ {
if (currentActivity == null) if (CurrentActivity == null)
currentActivity = nextActivity; CurrentActivity = nextActivity;
else else
currentActivity.Queue(nextActivity); CurrentActivity.Queue(nextActivity);
} }
public void CancelActivity() public void CancelActivity()
{ {
if (currentActivity != null) if (CurrentActivity != null)
currentActivity.Cancel(this); CurrentActivity.Cancel(this);
}
public Activity GetCurrentActivity()
{
return currentActivity;
} }
public override int GetHashCode() public override int GetHashCode()

View File

@@ -794,8 +794,7 @@ namespace OpenRA.Mods.Common.AI
if (!harvester.IsIdle) if (!harvester.IsIdle)
{ {
var act = harvester.GetCurrentActivity(); var act = harvester.CurrentActivity;
if (act.NextActivity == null || act.NextActivity.GetType() != typeof(FindResources)) if (act.NextActivity == null || act.NextActivity.GetType() != typeof(FindResources))
continue; continue;
} }

View File

@@ -125,10 +125,10 @@ namespace OpenRA.Mods.Common.AI
protected static bool IsRearm(Actor a) protected static bool IsRearm(Actor a)
{ {
var activity = a.GetCurrentActivity(); if (a.IsIdle)
if (activity == null)
return false; return false;
var activity = a.CurrentActivity;
var type = activity.GetType(); var type = activity.GetType();
if (type == typeof(Rearm) || type == typeof(ResupplyAircraft)) if (type == typeof(Rearm) || type == typeof(ResupplyAircraft))
return true; return true;

View File

@@ -44,15 +44,16 @@ namespace OpenRA.Mods.Common.AI
if (a.IsIdle) if (a.IsIdle)
return false; return false;
var type = a.GetCurrentActivity().GetType(); var activity = a.CurrentActivity;
var type = activity.GetType();
if (type == typeof(Attack) || type == typeof(FlyAttack)) if (type == typeof(Attack) || type == typeof(FlyAttack))
return true; return true;
var next = a.GetCurrentActivity().NextActivity; var next = activity.NextActivity;
if (next == null) if (next == null)
return false; return false;
var nextType = a.GetCurrentActivity().NextActivity.GetType(); var nextType = next.GetType();
if (nextType == typeof(Attack) || nextType == typeof(FlyAttack)) if (nextType == typeof(Attack) || nextType == typeof(FlyAttack))
return true; return true;

View File

@@ -237,7 +237,7 @@ namespace OpenRA.Mods.Common.Traits
void INotifyBlockingMove.OnNotifyBlockingMove(Actor self, Actor blocking) void INotifyBlockingMove.OnNotifyBlockingMove(Actor self, Actor blocking)
{ {
// I'm blocking someone else from moving to my location: // I'm blocking someone else from moving to my location:
var act = self.GetCurrentActivity(); var act = self.CurrentActivity;
// If I'm just waiting around then get out of the way: // If I'm just waiting around then get out of the way:
if (act is Wait) if (act is Wait)

View File

@@ -76,7 +76,7 @@ namespace OpenRA.Mods.Common.Traits.Render
yield return new TextRenderable(font, self.CenterPosition - offset, 0, color, tagString); yield return new TextRenderable(font, self.CenterPosition - offset, 0, color, tagString);
// Get the actor's activity. // Get the actor's activity.
var activity = self.GetCurrentActivity(); var activity = self.CurrentActivity;
if (activity != null) if (activity != null)
{ {
var activityName = activity.GetType().ToString().Split('.').Last(); var activityName = activity.GetType().ToString().Split('.').Last();

View File

@@ -62,7 +62,7 @@ namespace OpenRA.Mods.Common.Traits.Render
if (!self.IsInWorld || self.IsDead) if (!self.IsInWorld || self.IsDead)
yield break; yield break;
var activity = self.GetCurrentActivity(); var activity = self.CurrentActivity;
if (activity != null) if (activity != null)
{ {
var targets = activity.GetTargets(self); var targets = activity.GetTargets(self);