diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index fbd3f6b87d..bd6924fc4d 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -420,11 +420,10 @@ namespace OpenRA static Stance ChooseInitialStance(Player p, Player q) { - // HACK - return Stance.Enemy; - if (p == q) return Stance.Ally; - if (p == world.NeutralPlayer || q == world.NeutralPlayer) return Stance.Neutral; + + // Hack: All map players are neutral wrt everyone else + if (p.Index < 0 || q.Index < 0) return Stance.Neutral; var pc = GetClientForPlayer(p); var qc = GetClientForPlayer(q); diff --git a/OpenRA.Game/Traits/Player/TechTreeCache.cs b/OpenRA.Game/Traits/Player/TechTreeCache.cs index 0423a18353..9b721e5fdc 100755 --- a/OpenRA.Game/Traits/Player/TechTreeCache.cs +++ b/OpenRA.Game/Traits/Player/TechTreeCache.cs @@ -26,9 +26,6 @@ namespace OpenRA.Traits public void Tick( Player owner, Cache> buildings ) { - // HACK - return; - var effectivePrereq = prerequisites.Where( a => a.Traits.Get().Owner.Contains( owner.Country.Race ) ); var nowHasPrerequisites = effectivePrereq.Any() && effectivePrereq.All( a => buildings[ a.Name ].Any( b => !b.traits.Get().Disabled ) ); diff --git a/OpenRA.Game/World.cs b/OpenRA.Game/World.cs index 2f8e90ad1e..5c62f19d18 100644 --- a/OpenRA.Game/World.cs +++ b/OpenRA.Game/World.cs @@ -97,15 +97,18 @@ namespace OpenRA foreach (var kv in Map.Players) { var player = new Player(this, null); - Console.WriteLine("Creating Player {0}", kv.Key); // Lets just pretend that i didn't do this.... Will fix later player.GetType().GetField("Index").SetValue( player, mapPlayerIndex-- ); 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("Country").SetValue( player, this.GetCountries().FirstOrDefault(c => kv.Value.Race == c.Name) ); - + + var country = WorldActor.Info.Traits.WithInterface().FirstOrDefault(c => kv.Value.Race == c.Race); + if (country == null) + throw new NotImplementedException("Invalid country: {0}".F(kv.Value.Race)); + player.GetType().GetField("Country").SetValue( player, country); + AddPlayer(player); // Todo: Obsolete usage of "World.NeutralPlayer"