First attempt; works, but has regressions in several areas

This commit is contained in:
Paul Chote
2010-05-23 17:27:40 +12:00
parent b8b3ef61aa
commit d9931af5ae
8 changed files with 131 additions and 41 deletions

View File

@@ -420,6 +420,9 @@ 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;

View File

@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -26,6 +26,9 @@ namespace OpenRA.Traits
public void Tick( Player owner, Cache<string, List<Actor>> buildings )
{
// HACK
return;
var effectivePrereq = prerequisites.Where( a => a.Traits.Get<BuildableInfo>().Owner.Contains( owner.Country.Race ) );
var nowHasPrerequisites = effectivePrereq.Any() &&
effectivePrereq.All( a => buildings[ a.Name ].Any( b => !b.traits.Get<Building>().Disabled ) );

View File

@@ -91,7 +91,27 @@ namespace OpenRA
Timer.Time("renderer: {0}");
WorldActor = CreateActor("World", new int2(int.MaxValue, int.MaxValue), null);
AddPlayer(NeutralPlayer = new Player(this, null)); // add the neutral player
// Add Map Players
int mapPlayerIndex = -1;
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) );
AddPlayer(player);
// Todo: Obsolete usage of "World.NeutralPlayer"
if (kv.Value.Name == "Neutral")
NeutralPlayer = player;
}
Timer.Time( "worldActor: {0}" );