Add INotifyOwnerChanged interface

This commit is contained in:
Paul Chote
2013-02-25 21:37:52 +13:00
parent 82426e0e45
commit dddec1ec61
2 changed files with 6 additions and 0 deletions

View File

@@ -254,10 +254,15 @@ namespace OpenRA
{ {
World.AddFrameEndTask(w => World.AddFrameEndTask(w =>
{ {
var oldOwner = Owner;
// momentarily remove from world so the ownership queries don't get confused // momentarily remove from world so the ownership queries don't get confused
w.Remove(this); w.Remove(this);
Owner = newOwner; Owner = newOwner;
w.Add(this); w.Add(this);
foreach (var t in this.TraitsImplementing<INotifyOwnerChanged>())
t.OnOwnerChanged(this, oldOwner, newOwner);
}); });
} }
} }

View File

@@ -63,6 +63,7 @@ namespace OpenRA.Traits
public interface INotifyAppliedDamage { void AppliedDamage(Actor self, Actor damaged, AttackInfo e); } public interface INotifyAppliedDamage { void AppliedDamage(Actor self, Actor damaged, AttackInfo e); }
public interface INotifyBuildComplete { void BuildingComplete(Actor self); } public interface INotifyBuildComplete { void BuildingComplete(Actor self); }
public interface INotifyProduction { void UnitProduced(Actor self, Actor other, CPos exit); } public interface INotifyProduction { void UnitProduced(Actor self, Actor other, CPos exit); }
public interface INotifyOwnerChanged { void OnOwnerChanged(Actor self, Player oldOwner, Player newOwner); }
public interface INotifyCapture { void OnCapture(Actor self, Actor captor, Player oldOwner, Player newOwner); } public interface INotifyCapture { void OnCapture(Actor self, Actor captor, Player oldOwner, Player newOwner); }
public interface INotifyOtherCaptured { void OnActorCaptured(Actor self, Actor captured, Actor captor, Player oldOwner, Player newOwner); } public interface INotifyOtherCaptured { void OnActorCaptured(Actor self, Actor captured, Actor captor, Player oldOwner, Player newOwner); }
public interface IAcceptSpy { void OnInfiltrate(Actor self, Actor spy); } public interface IAcceptSpy { void OnInfiltrate(Actor self, Actor spy); }