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