Change cargo ownership when capturing actors with cargo

This commit is contained in:
Curtis Shmyr
2012-05-02 11:25:38 -06:00
committed by Chris Forbes
parent e1907364e6
commit 37f91542a9

View File

@@ -44,10 +44,8 @@ namespace OpenRA.Mods.RA
this.Captor = captor;
if (self.Owner != self.World.WorldActor.Owner)
{
self.ChangeOwner(self.World.WorldActor.Owner);
}
}
public void Tick(Actor self)
{
@@ -60,6 +58,7 @@ namespace OpenRA.Mods.RA
self.World.AddFrameEndTask(w =>
{
self.ChangeOwner(Captor.Owner);
ChangeCargoOwner(self, Captor.Owner);
foreach (var t in self.TraitsImplementing<INotifyCapture>())
t.OnCapture(self, Captor, self.Owner, Captor.Owner);
@@ -71,5 +70,15 @@ namespace OpenRA.Mods.RA
});
}
}
void ChangeCargoOwner(Actor self, Player captor)
{
var cargo = self.TraitOrDefault<Cargo>();
if (cargo == null)
return;
foreach (var c in cargo.Passengers)
c.Owner = captor;
}
}
}