world.NeutralPlayer has been defeated
This commit is contained in:
@@ -25,6 +25,8 @@ namespace OpenRA.FileFormats
|
||||
public readonly string Name;
|
||||
public readonly string Palette;
|
||||
public readonly string Race;
|
||||
public readonly bool OwnsWorld = false;
|
||||
public readonly bool isSpecial = false;
|
||||
|
||||
public PlayerReference(MiniYaml my)
|
||||
{
|
||||
|
||||
@@ -41,7 +41,8 @@ namespace OpenRA
|
||||
public readonly string InternalName;
|
||||
public readonly CountryInfo Country;
|
||||
public readonly int Index;
|
||||
|
||||
public readonly bool isSpecial = false;
|
||||
|
||||
public ShroudRenderer Shroud;
|
||||
public World World { get; private set; }
|
||||
|
||||
|
||||
@@ -29,7 +29,6 @@ namespace OpenRA.Widgets.Delegates
|
||||
bg.Children.RemoveAll(w => controls.Contains(w));
|
||||
controls.Clear();
|
||||
|
||||
var unwantedPlayers = new[] { Game.world.NeutralPlayer, Game.world.LocalPlayer };
|
||||
var y = 50;
|
||||
var margin = 20;
|
||||
var labelWidth = (bg.Bounds.Width - 3 * margin) / 3;
|
||||
@@ -58,7 +57,7 @@ namespace OpenRA.Widgets.Delegates
|
||||
|
||||
y += 35;
|
||||
|
||||
foreach (var p in Game.world.players.Values.Except(unwantedPlayers))
|
||||
foreach (var p in Game.world.players.Values.Where(a => a != Game.world.LocalPlayer && !a.isSpecial))
|
||||
{
|
||||
var pp = p;
|
||||
var label = new LabelWidget
|
||||
|
||||
@@ -45,7 +45,7 @@ namespace OpenRA.Widgets
|
||||
if (world.players.Count > 2) /* more than just us + neutral */
|
||||
{
|
||||
var conds = world.Queries.WithTrait<IVictoryConditions>()
|
||||
.Where(c => c.Actor.Owner != world.NeutralPlayer);
|
||||
.Where(c => !c.Actor.Owner.isSpecial);
|
||||
|
||||
if (conds.Any(c => c.Actor.Owner == world.LocalPlayer && c.Trait.HasLost))
|
||||
DrawText("YOU ARE DEFEATED");
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace OpenRA.Widgets
|
||||
? actor.Info.Traits.Get<ValuedInfo>().Description
|
||||
: actor.Info.Name;
|
||||
var text2 = (actor.Owner == world.LocalPlayer)
|
||||
? "" : (actor.Owner == world.NeutralPlayer ? "{0}" : "{0} ({1})").F(actor.Owner.PlayerName, world.LocalPlayer.Stances[actor.Owner]);
|
||||
? "" : (actor.Owner.isSpecial ? "{0}" : "{0} ({1})").F(actor.Owner.PlayerName, world.LocalPlayer.Stances[actor.Owner]);
|
||||
|
||||
var renderer = Game.chrome.renderer;
|
||||
|
||||
|
||||
@@ -52,8 +52,6 @@ namespace OpenRA
|
||||
get { return players.ContainsKey(localPlayerIndex) ? players[localPlayerIndex] : null; }
|
||||
}
|
||||
|
||||
public Player NeutralPlayer { get; private set; }
|
||||
|
||||
public void SetLocalPlayer(int index)
|
||||
{
|
||||
localPlayerIndex = index;
|
||||
@@ -103,6 +101,7 @@ namespace OpenRA
|
||||
player.GetType().GetField("Palette").SetValue( player, kv.Value.Palette );// Todo: set Player.Color as well
|
||||
player.GetType().GetField("PlayerName").SetValue( player, kv.Value.Name );
|
||||
player.GetType().GetField("InternalName").SetValue( player, kv.Value.Name );
|
||||
player.GetType().GetField("isSpecial").SetValue( player, kv.Value.isSpecial );
|
||||
|
||||
var country = WorldActor.Info.Traits.WithInterface<CountryInfo>().FirstOrDefault(c => kv.Value.Race == c.Race);
|
||||
if (country == null)
|
||||
@@ -111,9 +110,8 @@ namespace OpenRA
|
||||
|
||||
AddPlayer(player);
|
||||
|
||||
// Todo: Obsolete usage of "World.NeutralPlayer"
|
||||
if (kv.Value.Name == "Neutral")
|
||||
NeutralPlayer = player;
|
||||
if (kv.Value.OwnsWorld)
|
||||
WorldActor.Owner = player;
|
||||
}
|
||||
|
||||
Timer.Time( "worldActor: {0}" );
|
||||
|
||||
@@ -80,7 +80,7 @@ namespace OpenRA.Mods.RA
|
||||
|
||||
if (replacedTiles.Any())
|
||||
{
|
||||
var a = w.CreateActor(template.Bridge, new int2(ni, nj), w.NeutralPlayer);
|
||||
var a = w.CreateActor(template.Bridge, new int2(ni, nj), w.WorldActor.Owner);
|
||||
var br = a.traits.Get<Bridge>();
|
||||
|
||||
foreach (var t in replacedTiles.Keys)
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace OpenRA.Mods.RA
|
||||
var hasAnything = self.World.Queries.OwnedBy[self.Owner]
|
||||
.WithTrait<MustBeDestroyed>().Any();
|
||||
|
||||
var hasLost = !hasAnything && self.Owner != self.World.NeutralPlayer;
|
||||
var hasLost = !hasAnything && !self.Owner.isSpecial;
|
||||
|
||||
if (hasLost && !HasLost)
|
||||
Surrender(self);
|
||||
|
||||
@@ -69,12 +69,12 @@ namespace OpenRA.Mods.RA
|
||||
{
|
||||
self.World.AddFrameEndTask(w =>
|
||||
{
|
||||
var crate = new Actor(w, "crate", new int2(0, 0), w.NeutralPlayer);
|
||||
var crate = new Actor(w, "crate", new int2(0, 0), w.WorldActor.Owner);
|
||||
crates.Add(crate);
|
||||
self.World.WorldActor.traits.Get<UnitInfluence>().Remove(crate, crate.traits.Get<IOccupySpace>());
|
||||
|
||||
var startPos = w.ChooseRandomEdgeCell();
|
||||
var plane = w.CreateActor("BADR", startPos, w.NeutralPlayer);
|
||||
var plane = w.CreateActor("BADR", startPos, w.WorldActor.Owner);
|
||||
plane.traits.Get<Unit>().Facing = Util.GetFacing(p - startPos, 0);
|
||||
plane.CancelActivity();
|
||||
plane.QueueActivity(new FlyCircle(p));
|
||||
|
||||
@@ -71,7 +71,7 @@ namespace OpenRA.Mods.RA
|
||||
if (self.World.IsCellBuildable(p, inWater))
|
||||
{
|
||||
self.World.AddFrameEndTask(
|
||||
w => crates.Add(w.CreateActor("crate", p, self.World.NeutralPlayer)));
|
||||
w => crates.Add(w.CreateActor("crate", p, self.World.WorldActor.Owner)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,8 +36,7 @@ namespace OpenRA.Mods.RA
|
||||
|
||||
foreach (var actorReference in world.Map.Actors)
|
||||
MapActors[actorReference.Key] = world.CreateActor(actorReference.Value.Name, actorReference.Value.Location,
|
||||
world.players.Values.FirstOrDefault(p => p.InternalName == actorReference.Value.Owner)
|
||||
?? world.NeutralPlayer);
|
||||
world.players.Values.FirstOrDefault(p => p.InternalName == actorReference.Value.Owner));
|
||||
|
||||
Game.skipMakeAnims = false;
|
||||
}
|
||||
|
||||
@@ -21,6 +21,8 @@ Players:
|
||||
Name: Neutral
|
||||
Palette: neutral
|
||||
Race: allies
|
||||
OwnsWorld:true
|
||||
isSpecial:true
|
||||
PlayerReference@GoodGuy:
|
||||
Name: GoodGuy
|
||||
Palette: player1
|
||||
|
||||
@@ -23,6 +23,8 @@ Players:
|
||||
Name: Neutral
|
||||
Palette: neutral
|
||||
Race: allies
|
||||
OwnsWorld:true
|
||||
isSpecial:true
|
||||
|
||||
Actors:
|
||||
Actor0: tc02 Neutral 25,39
|
||||
|
||||
Reference in New Issue
Block a user