Fix crash when unloading cargo from units with multiple cloaks.

This commit is contained in:
Paul Chote
2017-02-05 17:52:19 +00:00
parent b018c3d837
commit 7a22de268d

View File

@@ -23,14 +23,14 @@ namespace OpenRA.Mods.Common.Activities
{ {
readonly Actor self; readonly Actor self;
readonly Cargo cargo; readonly Cargo cargo;
readonly Cloak cloak; readonly Cloak[] cloaks;
readonly bool unloadAll; readonly bool unloadAll;
public UnloadCargo(Actor self, bool unloadAll) public UnloadCargo(Actor self, bool unloadAll)
{ {
this.self = self; this.self = self;
cargo = self.Trait<Cargo>(); cargo = self.Trait<Cargo>();
cloak = self.TraitOrDefault<Cloak>(); cloaks = self.TraitsImplementing<Cloak>().ToArray();
this.unloadAll = unloadAll; this.unloadAll = unloadAll;
} }
@@ -60,8 +60,9 @@ namespace OpenRA.Mods.Common.Activities
if (IsCanceled || cargo.IsEmpty(self)) if (IsCanceled || cargo.IsEmpty(self))
return NextActivity; return NextActivity;
if (cloak != null && cloak.Info.UncloakOn.HasFlag(UncloakType.Unload)) foreach (var cloak in cloaks)
cloak.Uncloak(); if (cloak.Info.UncloakOn.HasFlag(UncloakType.Unload))
cloak.Uncloak();
var actor = cargo.Peek(self); var actor = cargo.Peek(self);
var spawn = self.CenterPosition; var spawn = self.CenterPosition;