Merge pull request #12292 from pchote/fix-cargo-capture
Prevent mod-code from manpulating actor owners directly.
This commit is contained in:
@@ -38,7 +38,7 @@ namespace OpenRA
|
|||||||
|
|
||||||
public readonly uint ActorID;
|
public readonly uint ActorID;
|
||||||
|
|
||||||
public Player Owner { get; set; }
|
public Player Owner { get; internal set; }
|
||||||
|
|
||||||
public bool IsInWorld { get; internal set; }
|
public bool IsInWorld { get; internal set; }
|
||||||
public bool Disposed { get; private set; }
|
public bool Disposed { get; private set; }
|
||||||
|
|||||||
@@ -240,6 +240,11 @@ namespace OpenRA
|
|||||||
rc.Metadata = new ReplayMetadata(gameInfo);
|
rc.Metadata = new ReplayMetadata(gameInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetWorldOwner(Player p)
|
||||||
|
{
|
||||||
|
WorldActor.Owner = p;
|
||||||
|
}
|
||||||
|
|
||||||
public Actor CreateActor(string name, TypeDictionary initDict)
|
public Actor CreateActor(string name, TypeDictionary initDict)
|
||||||
{
|
{
|
||||||
return CreateActor(true, name, initDict);
|
return CreateActor(true, name, initDict);
|
||||||
|
|||||||
@@ -382,11 +382,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (cargo == null)
|
if (cargo == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
self.World.AddFrameEndTask(w =>
|
|
||||||
{
|
|
||||||
foreach (var p in Passengers)
|
foreach (var p in Passengers)
|
||||||
p.Owner = newOwner;
|
p.ChangeOwner(newOwner);
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void INotifyAddedToWorld.AddedToWorld(Actor self)
|
void INotifyAddedToWorld.AddedToWorld(Actor self)
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
var player = new Player(w, null, kv.Value);
|
var player = new Player(w, null, kv.Value);
|
||||||
worldPlayers.Add(player);
|
worldPlayers.Add(player);
|
||||||
if (kv.Value.OwnsWorld)
|
if (kv.Value.OwnsWorld)
|
||||||
w.WorldActor.Owner = player;
|
w.SetWorldOwner(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
Player localPlayer = null;
|
Player localPlayer = null;
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
Players = new MapPlayers(w.Map.PlayerDefinitions);
|
Players = new MapPlayers(w.Map.PlayerDefinitions);
|
||||||
|
|
||||||
var worldOwner = Players.Players.Select(kvp => kvp.Value).First(p => !p.Playable && p.OwnsWorld);
|
var worldOwner = Players.Players.Select(kvp => kvp.Value).First(p => !p.Playable && p.OwnsWorld);
|
||||||
w.WorldActor.Owner = new Player(w, null, worldOwner);
|
w.SetWorldOwner(new Player(w, null, worldOwner));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void WorldLoaded(World world, WorldRenderer wr)
|
public void WorldLoaded(World world, WorldRenderer wr)
|
||||||
|
|||||||
Reference in New Issue
Block a user