In map editor replace invalid actor owners with neutral.
This commit is contained in:
committed by
abcdefg30
parent
7c2be4ce3c
commit
6bcf2f718c
@@ -46,6 +46,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
WorldRenderer worldRenderer;
|
WorldRenderer worldRenderer;
|
||||||
|
|
||||||
public MapPlayers Players { get; private set; }
|
public MapPlayers Players { get; private set; }
|
||||||
|
PlayerReference worldOwner;
|
||||||
|
|
||||||
public EditorActorLayer(EditorActorLayerInfo info)
|
public EditorActorLayer(EditorActorLayerInfo info)
|
||||||
{
|
{
|
||||||
@@ -59,7 +60,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);
|
worldOwner = Players.Players.Select(kvp => kvp.Value).First(p => !p.Playable && p.OwnsWorld);
|
||||||
w.SetWorldOwner(new Player(w, null, worldOwner, playerRandom));
|
w.SetWorldOwner(new Player(w, null, worldOwner, playerRandom));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -126,11 +127,17 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public EditorActorPreview Add(string id, ActorReference reference, bool initialSetup = false)
|
public EditorActorPreview Add(string id, ActorReference reference, bool initialSetup = false)
|
||||||
{
|
{
|
||||||
var owner = Players.Players[reference.Get<OwnerInit>().InternalName];
|
// If an actor's doesn't have a valid owner transfer ownership to neutral
|
||||||
|
var ownerInit = reference.Get<OwnerInit>();
|
||||||
|
if (!Players.Players.TryGetValue(ownerInit.InternalName, out var owner))
|
||||||
|
{
|
||||||
|
owner = worldOwner;
|
||||||
|
reference.Remove(ownerInit);
|
||||||
|
reference.Add(new OwnerInit(worldOwner.Name));
|
||||||
|
}
|
||||||
|
|
||||||
var preview = new EditorActorPreview(worldRenderer, id, reference, owner);
|
var preview = new EditorActorPreview(worldRenderer, id, reference, owner);
|
||||||
|
|
||||||
Add(preview, initialSetup);
|
Add(preview, initialSetup);
|
||||||
|
|
||||||
return preview;
|
return preview;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user