Prevent mod code from changing Actor.Owner directly.

This commit is contained in:
Paul Chote
2016-10-23 12:21:03 +01:00
parent 8d688ab5f3
commit 635fc9e1e2
4 changed files with 8 additions and 3 deletions

View File

@@ -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; }

View File

@@ -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);

View File

@@ -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;

View File

@@ -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)