moved Game.players, LocalPlayer, localPlayerIndex to World. Setting LocalPlayer via settings is broken.
This commit is contained in:
@@ -82,7 +82,7 @@ namespace OpenRa
|
|||||||
|
|
||||||
public Order Order( int2 xy, MouseInput mi )
|
public Order Order( int2 xy, MouseInput mi )
|
||||||
{
|
{
|
||||||
if (Owner != Game.LocalPlayer)
|
if (Owner != Game.world.LocalPlayer)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
if (!Game.world.Map.IsInMap(xy.X, xy.Y))
|
if (!Game.world.Map.IsInMap(xy.X, xy.Y))
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ namespace OpenRa
|
|||||||
{
|
{
|
||||||
if (isChatting && typing.Length > 0)
|
if (isChatting && typing.Length > 0)
|
||||||
{
|
{
|
||||||
Game.controller.AddOrder(Order.Chat(Game.LocalPlayer, typing));
|
Game.controller.AddOrder(Order.Chat(Game.world.LocalPlayer, typing));
|
||||||
AddLine(Game.LocalPlayer, typing);
|
AddLine(Game.world.LocalPlayer, typing);
|
||||||
}
|
}
|
||||||
|
|
||||||
typing = "";
|
typing = "";
|
||||||
|
|||||||
@@ -148,10 +148,10 @@ namespace OpenRa
|
|||||||
{
|
{
|
||||||
DrawDownloadBar();
|
DrawDownloadBar();
|
||||||
|
|
||||||
chromeCollection = (Game.LocalPlayer.Race == Race.Allies) ? "chrome-allies" : "chrome-soviet";
|
chromeCollection = (Game.world.LocalPlayer.Race == Race.Allies) ? "chrome-allies" : "chrome-soviet";
|
||||||
radarCollection = (Game.LocalPlayer.Race == Race.Allies) ? "radar-allies" : "radar-soviet";
|
radarCollection = (Game.world.LocalPlayer.Race == Race.Allies) ? "radar-allies" : "radar-soviet";
|
||||||
paletteCollection = (Game.LocalPlayer.Race == Race.Allies) ? "palette-allies" : "palette-soviet";
|
paletteCollection = (Game.world.LocalPlayer.Race == Race.Allies) ? "palette-allies" : "palette-soviet";
|
||||||
digitCollection = (Game.LocalPlayer.Race == Race.Allies) ? "digits-allies" : "digits-soviet";
|
digitCollection = (Game.world.LocalPlayer.Race == Race.Allies) ? "digits-allies" : "digits-soviet";
|
||||||
|
|
||||||
buttons.Clear();
|
buttons.Clear();
|
||||||
|
|
||||||
@@ -305,7 +305,7 @@ namespace OpenRa
|
|||||||
|
|
||||||
void DrawRadar()
|
void DrawRadar()
|
||||||
{
|
{
|
||||||
var hasNewRadar = Game.world.Actors.Any(a => a.Owner == Game.LocalPlayer
|
var hasNewRadar = Game.world.Actors.Any(a => a.Owner == Game.world.LocalPlayer
|
||||||
&& a.traits.Contains<ProvidesRadar>()
|
&& a.traits.Contains<ProvidesRadar>()
|
||||||
&& a.traits.Get<ProvidesRadar>().IsActive(a));
|
&& a.traits.Get<ProvidesRadar>().IsActive(a));
|
||||||
|
|
||||||
@@ -341,15 +341,15 @@ namespace OpenRa
|
|||||||
var x = paletteOrigin.X - tabWidth;
|
var x = paletteOrigin.X - tabWidth;
|
||||||
var y = paletteOrigin.Y + 9;
|
var y = paletteOrigin.Y + 9;
|
||||||
|
|
||||||
if (currentTab == null || !Rules.TechTree.BuildableItems(Game.LocalPlayer, currentTab).Any())
|
if (currentTab == null || !Rules.TechTree.BuildableItems(Game.world.LocalPlayer, currentTab).Any())
|
||||||
ChooseAvailableTab();
|
ChooseAvailableTab();
|
||||||
|
|
||||||
var queue = Game.LocalPlayer.PlayerActor.traits.Get<Traits.ProductionQueue>();
|
var queue = Game.world.LocalPlayer.PlayerActor.traits.Get<Traits.ProductionQueue>();
|
||||||
|
|
||||||
foreach (var q in tabImageNames)
|
foreach (var q in tabImageNames)
|
||||||
{
|
{
|
||||||
var groupName = q.Key;
|
var groupName = q.Key;
|
||||||
if (!Rules.TechTree.BuildableItems(Game.LocalPlayer, groupName).Any())
|
if (!Rules.TechTree.BuildableItems(Game.world.LocalPlayer, groupName).Any())
|
||||||
{
|
{
|
||||||
CheckDeadTab(groupName);
|
CheckDeadTab(groupName);
|
||||||
continue;
|
continue;
|
||||||
@@ -357,7 +357,7 @@ namespace OpenRa
|
|||||||
string[] tabKeys = { "normal", "ready", "selected" };
|
string[] tabKeys = { "normal", "ready", "selected" };
|
||||||
var producing = queue.CurrentItem(groupName);
|
var producing = queue.CurrentItem(groupName);
|
||||||
var index = q.Key == currentTab ? 2 : (producing != null && producing.Done) ? 1 : 0;
|
var index = q.Key == currentTab ? 2 : (producing != null && producing.Done) ? 1 : 0;
|
||||||
var race = (Game.LocalPlayer.Race == Race.Allies) ? "allies" : "soviet";
|
var race = (Game.world.LocalPlayer.Race == Race.Allies) ? "allies" : "soviet";
|
||||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer,"tabs-"+tabKeys[index], race+"-"+q.Key), new float2(x, y), PaletteType.Chrome);
|
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer,"tabs-"+tabKeys[index], race+"-"+q.Key), new float2(x, y), PaletteType.Chrome);
|
||||||
|
|
||||||
buttons.Add(Pair.New(new RectangleF(x, y, tabWidth, tabHeight),
|
buttons.Add(Pair.New(new RectangleF(x, y, tabWidth, tabHeight),
|
||||||
@@ -380,20 +380,20 @@ namespace OpenRa
|
|||||||
|
|
||||||
void CheckDeadTab( string groupName )
|
void CheckDeadTab( string groupName )
|
||||||
{
|
{
|
||||||
var queue = Game.LocalPlayer.PlayerActor.traits.Get<Traits.ProductionQueue>();
|
var queue = Game.world.LocalPlayer.PlayerActor.traits.Get<Traits.ProductionQueue>();
|
||||||
foreach( var item in queue.AllItems( groupName ) )
|
foreach( var item in queue.AllItems( groupName ) )
|
||||||
Game.controller.AddOrder(Order.CancelProduction(Game.LocalPlayer, item.Item));
|
Game.controller.AddOrder(Order.CancelProduction(Game.world.LocalPlayer, item.Item));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChooseAvailableTab()
|
void ChooseAvailableTab()
|
||||||
{
|
{
|
||||||
currentTab = tabImageNames.Select(q => q.Key).FirstOrDefault(
|
currentTab = tabImageNames.Select(q => q.Key).FirstOrDefault(
|
||||||
t => Rules.TechTree.BuildableItems(Game.LocalPlayer, t).Any());
|
t => Rules.TechTree.BuildableItems(Game.world.LocalPlayer, t).Any());
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawMoney()
|
void DrawMoney()
|
||||||
{
|
{
|
||||||
var moneyDigits = Game.LocalPlayer.DisplayCash.ToString();
|
var moneyDigits = Game.world.LocalPlayer.DisplayCash.ToString();
|
||||||
var x = Game.viewport.Width - 65;
|
var x = Game.viewport.Width - 65;
|
||||||
foreach (var d in moneyDigits.Reverse())
|
foreach (var d in moneyDigits.Reverse())
|
||||||
{
|
{
|
||||||
@@ -408,7 +408,7 @@ namespace OpenRa
|
|||||||
void DrawPower()
|
void DrawPower()
|
||||||
{
|
{
|
||||||
// Nothing to draw
|
// Nothing to draw
|
||||||
if (Game.LocalPlayer.PowerProvided == 0 && Game.LocalPlayer.PowerDrained == 0)
|
if (Game.world.LocalPlayer.PowerProvided == 0 && Game.world.LocalPlayer.PowerDrained == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Draw bar horizontally
|
// Draw bar horizontally
|
||||||
@@ -416,18 +416,18 @@ namespace OpenRa
|
|||||||
var barEnd = barStart + new float2(powerSize.Width, 0);
|
var barEnd = barStart + new float2(powerSize.Width, 0);
|
||||||
|
|
||||||
float powerScaleBy = 100;
|
float powerScaleBy = 100;
|
||||||
var maxPower = Math.Max(Game.LocalPlayer.PowerProvided, Game.LocalPlayer.PowerDrained);
|
var maxPower = Math.Max(Game.world.LocalPlayer.PowerProvided, Game.world.LocalPlayer.PowerDrained);
|
||||||
while (maxPower >= powerScaleBy) powerScaleBy *= 2;
|
while (maxPower >= powerScaleBy) powerScaleBy *= 2;
|
||||||
|
|
||||||
// Current power supply
|
// Current power supply
|
||||||
var powerLevelTemp = barStart.X + (barEnd.X - barStart.X) * (Game.LocalPlayer.PowerProvided / powerScaleBy);
|
var powerLevelTemp = barStart.X + (barEnd.X - barStart.X) * (Game.world.LocalPlayer.PowerProvided / powerScaleBy);
|
||||||
lastPowerProvidedPos = float2.Lerp(lastPowerProvidedPos.GetValueOrDefault(powerLevelTemp), powerLevelTemp, .3f);
|
lastPowerProvidedPos = float2.Lerp(lastPowerProvidedPos.GetValueOrDefault(powerLevelTemp), powerLevelTemp, .3f);
|
||||||
float2 powerLevel = new float2(lastPowerProvidedPos.Value, barStart.Y);
|
float2 powerLevel = new float2(lastPowerProvidedPos.Value, barStart.Y);
|
||||||
|
|
||||||
var color = Color.LimeGreen;
|
var color = Color.LimeGreen;
|
||||||
if (Game.LocalPlayer.GetPowerState() == PowerState.Low)
|
if (Game.world.LocalPlayer.GetPowerState() == PowerState.Low)
|
||||||
color = Color.Orange;
|
color = Color.Orange;
|
||||||
if (Game.LocalPlayer.GetPowerState() == PowerState.Critical)
|
if (Game.world.LocalPlayer.GetPowerState() == PowerState.Critical)
|
||||||
color = Color.Red;
|
color = Color.Red;
|
||||||
|
|
||||||
var colorDark = Graphics.Util.Lerp(0.25f, color, Color.Black);
|
var colorDark = Graphics.Util.Lerp(0.25f, color, Color.Black);
|
||||||
@@ -448,7 +448,7 @@ namespace OpenRa
|
|||||||
|
|
||||||
// Power usage indicator
|
// Power usage indicator
|
||||||
var indicator = ChromeProvider.GetImage(renderer, radarCollection, "power-indicator");
|
var indicator = ChromeProvider.GetImage(renderer, radarCollection, "power-indicator");
|
||||||
var powerDrainedTemp = barStart.X + (barEnd.X - barStart.X) * (Game.LocalPlayer.PowerDrained / powerScaleBy);
|
var powerDrainedTemp = barStart.X + (barEnd.X - barStart.X) * (Game.world.LocalPlayer.PowerDrained / powerScaleBy);
|
||||||
lastPowerDrainedPos = float2.Lerp(lastPowerDrainedPos.GetValueOrDefault(powerDrainedTemp), powerDrainedTemp, .3f);
|
lastPowerDrainedPos = float2.Lerp(lastPowerDrainedPos.GetValueOrDefault(powerDrainedTemp), powerDrainedTemp, .3f);
|
||||||
float2 powerDrainLevel = new float2(lastPowerDrainedPos.Value-indicator.size.X/2, barStart.Y-1);
|
float2 powerDrainLevel = new float2(lastPowerDrainedPos.Value-indicator.size.X/2, barStart.Y-1);
|
||||||
|
|
||||||
@@ -463,7 +463,7 @@ namespace OpenRa
|
|||||||
Rectangle repairRect = new Rectangle(buttonOrigin.X, buttonOrigin.Y, repairButton.Image.bounds.Width, repairButton.Image.bounds.Height);
|
Rectangle repairRect = new Rectangle(buttonOrigin.X, buttonOrigin.Y, repairButton.Image.bounds.Width, repairButton.Image.bounds.Height);
|
||||||
var repairDrawPos = new float2(repairRect.Location);
|
var repairDrawPos = new float2(repairRect.Location);
|
||||||
|
|
||||||
var hasFact = Game.world.Actors.Any(a => a.Owner == Game.LocalPlayer && a.traits.Contains<ConstructionYard>());
|
var hasFact = Game.world.Actors.Any(a => a.Owner == Game.world.LocalPlayer && a.traits.Contains<ConstructionYard>());
|
||||||
|
|
||||||
if (Game.Settings.RepairRequiresConyard && !hasFact)
|
if (Game.Settings.RepairRequiresConyard && !hasFact)
|
||||||
repairButton.ReplaceAnim("disabled");
|
repairButton.ReplaceAnim("disabled");
|
||||||
@@ -641,14 +641,14 @@ namespace OpenRa
|
|||||||
var x = 0;
|
var x = 0;
|
||||||
var y = 0;
|
var y = 0;
|
||||||
|
|
||||||
var buildableItems = Rules.TechTree.BuildableItems(Game.LocalPlayer, queueName).ToArray();
|
var buildableItems = Rules.TechTree.BuildableItems(Game.world.LocalPlayer, queueName).ToArray();
|
||||||
|
|
||||||
var allBuildables = Rules.TechTree.AllBuildables(Game.LocalPlayer, queueName)
|
var allBuildables = Rules.TechTree.AllBuildables(Game.world.LocalPlayer, queueName)
|
||||||
.Where(a => a.Traits.Contains<BuildableInfo>())
|
.Where(a => a.Traits.Contains<BuildableInfo>())
|
||||||
.Where(a => a.Traits.Get<BuildableInfo>().Owner.Contains(Game.LocalPlayer.Race))
|
.Where(a => a.Traits.Get<BuildableInfo>().Owner.Contains(Game.world.LocalPlayer.Race))
|
||||||
.OrderBy(a => a.Traits.Get<BuildableInfo>().TechLevel);
|
.OrderBy(a => a.Traits.Get<BuildableInfo>().TechLevel);
|
||||||
|
|
||||||
var queue = Game.LocalPlayer.PlayerActor.traits.Get<Traits.ProductionQueue>();
|
var queue = Game.world.LocalPlayer.PlayerActor.traits.Get<Traits.ProductionQueue>();
|
||||||
|
|
||||||
var overlayBits = new List<Pair<Sprite, float2>>();
|
var overlayBits = new List<Pair<Sprite, float2>>();
|
||||||
|
|
||||||
@@ -760,12 +760,12 @@ namespace OpenRa
|
|||||||
{
|
{
|
||||||
var unit = Rules.Info[item];
|
var unit = Rules.Info[item];
|
||||||
Sound.Play(unit.Traits.Contains<BuildingInfo>() ? "abldgin1.aud" : "train1.aud");
|
Sound.Play(unit.Traits.Contains<BuildingInfo>() ? "abldgin1.aud" : "train1.aud");
|
||||||
Game.controller.AddOrder(Order.StartProduction(Game.LocalPlayer, item));
|
Game.controller.AddOrder(Order.StartProduction(Game.world.LocalPlayer, item));
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandleBuildPalette(string item, bool isLmb)
|
void HandleBuildPalette(string item, bool isLmb)
|
||||||
{
|
{
|
||||||
var player = Game.LocalPlayer;
|
var player = Game.world.LocalPlayer;
|
||||||
var unit = Rules.Info[item];
|
var unit = Rules.Info[item];
|
||||||
var queue = player.PlayerActor.traits.Get<Traits.ProductionQueue>();
|
var queue = player.PlayerActor.traits.Get<Traits.ProductionQueue>();
|
||||||
var producing = queue.AllItems(unit.Category).FirstOrDefault( a => a.Item == item );
|
var producing = queue.AllItems(unit.Category).FirstOrDefault( a => a.Item == item );
|
||||||
@@ -857,18 +857,18 @@ namespace OpenRa
|
|||||||
renderer.DrawText2(buildable.Description, p.ToInt2() + new int2(5,5), Color.White);
|
renderer.DrawText2(buildable.Description, p.ToInt2() + new int2(5,5), Color.White);
|
||||||
|
|
||||||
DrawRightAligned( "${0}".F(buildable.Cost), pos + new int2(-5,5),
|
DrawRightAligned( "${0}".F(buildable.Cost), pos + new int2(-5,5),
|
||||||
Game.LocalPlayer.Cash + Game.LocalPlayer.Ore >= buildable.Cost ? Color.White : Color.Red);
|
Game.world.LocalPlayer.Cash + Game.world.LocalPlayer.Ore >= buildable.Cost ? Color.White : Color.Red);
|
||||||
|
|
||||||
var bi = info.Traits.GetOrDefault<BuildingInfo>();
|
var bi = info.Traits.GetOrDefault<BuildingInfo>();
|
||||||
if (bi != null)
|
if (bi != null)
|
||||||
DrawRightAligned("ϟ{0}".F(bi.Power), pos + new int2(-5, 20),
|
DrawRightAligned("ϟ{0}".F(bi.Power), pos + new int2(-5, 20),
|
||||||
Game.LocalPlayer.PowerProvided - Game.LocalPlayer.PowerDrained + bi.Power >= 0
|
Game.world.LocalPlayer.PowerProvided - Game.world.LocalPlayer.PowerDrained + bi.Power >= 0
|
||||||
? Color.White : Color.Red);
|
? Color.White : Color.Red);
|
||||||
|
|
||||||
var buildings = Rules.TechTree.GatherBuildings( Game.LocalPlayer );
|
var buildings = Rules.TechTree.GatherBuildings( Game.world.LocalPlayer );
|
||||||
p += new int2(5, 5);
|
p += new int2(5, 5);
|
||||||
p += new int2(0, 15);
|
p += new int2(0, 15);
|
||||||
if (!Rules.TechTree.CanBuild(info, Game.LocalPlayer, buildings))
|
if (!Rules.TechTree.CanBuild(info, Game.world.LocalPlayer, buildings))
|
||||||
{
|
{
|
||||||
var prereqs = buildable.Prerequisites
|
var prereqs = buildable.Prerequisites
|
||||||
.Select( a => Description( a ) );
|
.Select( a => Description( a ) );
|
||||||
@@ -893,7 +893,7 @@ namespace OpenRa
|
|||||||
|
|
||||||
void DrawSupportPowers()
|
void DrawSupportPowers()
|
||||||
{
|
{
|
||||||
var numPowers = Game.LocalPlayer.SupportPowers.Values
|
var numPowers = Game.world.LocalPlayer.SupportPowers.Values
|
||||||
.Where(a => a.IsAvailable).Count();
|
.Where(a => a.IsAvailable).Count();
|
||||||
|
|
||||||
if (numPowers == 0) return;
|
if (numPowers == 0) return;
|
||||||
@@ -910,7 +910,7 @@ namespace OpenRa
|
|||||||
string tooltipItem = null;
|
string tooltipItem = null;
|
||||||
int2 tooltipPos = int2.Zero;
|
int2 tooltipPos = int2.Zero;
|
||||||
|
|
||||||
foreach (var sp in Game.LocalPlayer.SupportPowers)
|
foreach (var sp in Game.world.LocalPlayer.SupportPowers)
|
||||||
{
|
{
|
||||||
var image = spsprites[sp.Key];
|
var image = spsprites[sp.Key];
|
||||||
if (sp.Value.IsAvailable)
|
if (sp.Value.IsAvailable)
|
||||||
@@ -977,7 +977,7 @@ namespace OpenRa
|
|||||||
|
|
||||||
renderer.DrawText2(info.Description, pos, Color.White);
|
renderer.DrawText2(info.Description, pos, Color.White);
|
||||||
|
|
||||||
var timer = "Charge Time: {0}".F(FormatTime(Game.LocalPlayer.SupportPowers[sp].RemainingTime));
|
var timer = "Charge Time: {0}".F(FormatTime(Game.world.LocalPlayer.SupportPowers[sp].RemainingTime));
|
||||||
DrawRightAligned(timer, pos + new int2((int)tooltipSprite.size.X - 10, 0), Color.White);
|
DrawRightAligned(timer, pos + new int2((int)tooltipSprite.size.X - 10, 0), Color.White);
|
||||||
|
|
||||||
if (info.LongDesc != null)
|
if (info.LongDesc != null)
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ namespace OpenRa
|
|||||||
recentOrders.AddRange( orders );
|
recentOrders.AddRange( orders );
|
||||||
|
|
||||||
var voicedActor = orders.Select(o => o.Subject)
|
var voicedActor = orders.Select(o => o.Subject)
|
||||||
.FirstOrDefault(a => a.Owner == Game.LocalPlayer && a.traits.Contains<Unit>());
|
.FirstOrDefault(a => a.Owner == Game.world.LocalPlayer && a.traits.Contains<Unit>());
|
||||||
|
|
||||||
var isMove = orders.Any(o => o.OrderString == "Move");
|
var isMove = orders.Any(o => o.OrderString == "Move");
|
||||||
var isAttack = orders.Any( o => o.OrderString == "Attack" );
|
var isAttack = orders.Any( o => o.OrderString == "Attack" );
|
||||||
@@ -127,7 +127,7 @@ namespace OpenRa
|
|||||||
|
|
||||||
var voicedUnit = ((UnitOrderGenerator)orderGenerator).selection
|
var voicedUnit = ((UnitOrderGenerator)orderGenerator).selection
|
||||||
.Where(a => a.traits.Contains<Unit>()
|
.Where(a => a.traits.Contains<Unit>()
|
||||||
&& a.Owner == Game.LocalPlayer)
|
&& a.Owner == Game.world.LocalPlayer)
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
|
|
||||||
Sound.PlayVoice("Select", voicedUnit);
|
Sound.PlayVoice("Select", voicedUnit);
|
||||||
|
|||||||
@@ -24,20 +24,6 @@ namespace OpenRa
|
|||||||
|
|
||||||
internal static OrderManager orderManager;
|
internal static OrderManager orderManager;
|
||||||
|
|
||||||
static int localPlayerIndex;
|
|
||||||
|
|
||||||
public static Dictionary<int, Player> players = new Dictionary<int, Player>();
|
|
||||||
|
|
||||||
public static Player LocalPlayer
|
|
||||||
{
|
|
||||||
get { return players[localPlayerIndex]; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
localPlayerIndex = value.Index;
|
|
||||||
viewport.GoToStartLocation();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static bool skipMakeAnims = true;
|
public static bool skipMakeAnims = true;
|
||||||
|
|
||||||
internal static Renderer renderer;
|
internal static Renderer renderer;
|
||||||
@@ -73,13 +59,6 @@ namespace OpenRa
|
|||||||
|
|
||||||
palette = new HardwarePalette(renderer, world.Map);
|
palette = new HardwarePalette(renderer, world.Map);
|
||||||
|
|
||||||
for (int i = 0; i < 8; i++)
|
|
||||||
{
|
|
||||||
var race = players.ContainsKey(i) ? players[i].Race : Race.Allies;
|
|
||||||
var name = players.ContainsKey(i) ? players[i].PlayerName : "Player {0}".F(i+1);
|
|
||||||
players[i] = new Player(i, LobbyInfo.Clients.FirstOrDefault(a => a.Index == i));
|
|
||||||
}
|
|
||||||
|
|
||||||
SequenceProvider.Initialize(manifest.Sequences);
|
SequenceProvider.Initialize(manifest.Sequences);
|
||||||
viewport = new Viewport(clientSize, Game.world.Map.Offset, Game.world.Map.Offset + Game.world.Map.Size, renderer);
|
viewport = new Viewport(clientSize, Game.world.Map.Offset, Game.world.Map.Offset + Game.world.Map.Size, renderer);
|
||||||
|
|
||||||
@@ -87,7 +66,7 @@ namespace OpenRa
|
|||||||
foreach (var treeReference in Game.world.Map.Trees)
|
foreach (var treeReference in Game.world.Map.Trees)
|
||||||
world.CreateActor(treeReference.Image, new int2(treeReference.Location), null);
|
world.CreateActor(treeReference.Image, new int2(treeReference.Location), null);
|
||||||
|
|
||||||
LoadMapActors(Rules.AllRules);
|
world.LoadMapActors(Rules.AllRules);
|
||||||
skipMakeAnims = false;
|
skipMakeAnims = false;
|
||||||
|
|
||||||
chrome = new Chrome(renderer);
|
chrome = new Chrome(renderer);
|
||||||
@@ -95,7 +74,7 @@ namespace OpenRa
|
|||||||
|
|
||||||
internal static void Initialize(string mapName, Renderer renderer, int2 clientSize, int localPlayer, Controller controller)
|
internal static void Initialize(string mapName, Renderer renderer, int2 clientSize, int localPlayer, Controller controller)
|
||||||
{
|
{
|
||||||
localPlayerIndex = localPlayer;
|
//localPlayerIndex = localPlayer;
|
||||||
Game.renderer = renderer;
|
Game.renderer = renderer;
|
||||||
Game.clientSize = clientSize;
|
Game.clientSize = clientSize;
|
||||||
|
|
||||||
@@ -120,22 +99,6 @@ namespace OpenRa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LoadMapActors(IniFile mapfile)
|
|
||||||
{
|
|
||||||
var toLoad =
|
|
||||||
mapfile.GetSection("STRUCTURES", true)
|
|
||||||
.Concat(mapfile.GetSection("UNITS", true));
|
|
||||||
|
|
||||||
foreach (var s in toLoad)
|
|
||||||
{
|
|
||||||
//num=owner,type,health,location,facing,...
|
|
||||||
var parts = s.Value.Split( ',' );
|
|
||||||
var loc = int.Parse(parts[3]);
|
|
||||||
world.CreateActor(parts[1].ToLowerInvariant(), new int2(loc % 128, loc / 128),
|
|
||||||
players.Values.FirstOrDefault(p => p.InternalName == parts[0]) ?? players[0]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static int lastTime = Environment.TickCount;
|
static int lastTime = Environment.TickCount;
|
||||||
|
|
||||||
public static void ResetTimer()
|
public static void ResetTimer()
|
||||||
@@ -173,8 +136,6 @@ namespace OpenRa
|
|||||||
controller.orderGenerator.Tick();
|
controller.orderGenerator.Tick();
|
||||||
|
|
||||||
world.Tick();
|
world.Tick();
|
||||||
foreach (var player in players.Values)
|
|
||||||
player.Tick();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (orderManager.FrameNumber == 0)
|
if (orderManager.FrameNumber == 0)
|
||||||
@@ -229,7 +190,7 @@ namespace OpenRa
|
|||||||
FieldLoader.Load(client, y.Value);
|
FieldLoader.Load(client, y.Value);
|
||||||
session.Clients.Add(client);
|
session.Clients.Add(client);
|
||||||
|
|
||||||
players[index].SyncFromLobby(client);
|
world.players[index].SyncFromLobby(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
LobbyInfo = session;
|
LobbyInfo = session;
|
||||||
@@ -260,7 +221,7 @@ namespace OpenRa
|
|||||||
// todo: spawn more than one unit, in most cases!
|
// todo: spawn more than one unit, in most cases!
|
||||||
|
|
||||||
var sp = ChooseSpawnPoint(available, taken);
|
var sp = ChooseSpawnPoint(available, taken);
|
||||||
world.CreateActor("mcv", sp, players[client.Index]);
|
world.CreateActor("mcv", sp, world.players[client.Index]);
|
||||||
}
|
}
|
||||||
|
|
||||||
Game.viewport.GoToStartLocation();
|
Game.viewport.GoToStartLocation();
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ namespace OpenRa.Graphics
|
|||||||
|
|
||||||
mapOnlySheet.Texture.SetData(oreLayer);
|
mapOnlySheet.Texture.SetData(oreLayer);
|
||||||
|
|
||||||
if (!world.Actors.Any(a => a.Owner == Game.LocalPlayer && a.traits.Contains<ProvidesRadar>()))
|
if (!world.Actors.Any(a => a.Owner == Game.world.LocalPlayer && a.traits.Contains<ProvidesRadar>()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var bitmap = new Bitmap(oreLayer);
|
var bitmap = new Bitmap(oreLayer);
|
||||||
@@ -109,7 +109,7 @@ namespace OpenRa.Graphics
|
|||||||
{
|
{
|
||||||
for (var y = 0; y < 128; y++)
|
for (var y = 0; y < 128; y++)
|
||||||
for (var x = 0; x < 128; x++)
|
for (var x = 0; x < 128; x++)
|
||||||
if (!Game.LocalPlayer.Shroud.DisplayOnRadar(x, y))
|
if (!Game.world.LocalPlayer.Shroud.DisplayOnRadar(x, y))
|
||||||
*(c + (y * bitmapData.Stride >> 2) + x) = shroudColor.ToArgb();
|
*(c + (y * bitmapData.Stride >> 2) + x) = shroudColor.ToArgb();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ namespace OpenRa.Graphics
|
|||||||
|
|
||||||
public void GoToStartLocation()
|
public void GoToStartLocation()
|
||||||
{
|
{
|
||||||
Center(Game.world.Actors.Where(a => a.Owner == Game.LocalPlayer && a.traits.Contains<Selectable>()));
|
Center(Game.world.Actors.Where(a => a.Owner == Game.world.LocalPlayer && a.traits.Contains<Selectable>()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ namespace OpenRa.Graphics
|
|||||||
if (Game.controller.orderGenerator != null)
|
if (Game.controller.orderGenerator != null)
|
||||||
Game.controller.orderGenerator.Render();
|
Game.controller.orderGenerator.Render();
|
||||||
|
|
||||||
Game.LocalPlayer.Shroud.Draw(spriteRenderer);
|
Game.world.LocalPlayer.Shroud.Draw(spriteRenderer);
|
||||||
|
|
||||||
lineRenderer.Flush();
|
lineRenderer.Flush();
|
||||||
spriteRenderer.Flush();
|
spriteRenderer.Flush();
|
||||||
@@ -131,7 +131,7 @@ namespace OpenRa.Graphics
|
|||||||
DrawControlGroup(selectedUnit, xy);
|
DrawControlGroup(selectedUnit, xy);
|
||||||
|
|
||||||
// Only display pips and tags to the owner
|
// Only display pips and tags to the owner
|
||||||
if (selectedUnit.Owner == Game.LocalPlayer)
|
if (selectedUnit.Owner == Game.world.LocalPlayer)
|
||||||
{
|
{
|
||||||
DrawPips(selectedUnit, xY);
|
DrawPips(selectedUnit, xY);
|
||||||
DrawTags(selectedUnit, new float2(.5f * (bounds.Left + bounds.Right ), xy.Y));
|
DrawTags(selectedUnit, new float2(.5f * (bounds.Left + bounds.Right ), xy.Y));
|
||||||
|
|||||||
@@ -144,12 +144,12 @@ namespace OpenRa
|
|||||||
if (e.KeyCode == Keys.F8 && !Game.orderManager.GameStarted)
|
if (e.KeyCode == Keys.F8 && !Game.orderManager.GameStarted)
|
||||||
{
|
{
|
||||||
Game.controller.AddOrder(
|
Game.controller.AddOrder(
|
||||||
new Order( "ToggleReady", Game.LocalPlayer.PlayerActor, null, int2.Zero, "") { IsImmediate = true });
|
new Order( "ToggleReady", Game.world.LocalPlayer.PlayerActor, null, int2.Zero, "") { IsImmediate = true });
|
||||||
}
|
}
|
||||||
|
|
||||||
/* temporary hack: DO NOT LEAVE IN */
|
/* temporary hack: DO NOT LEAVE IN */
|
||||||
if (e.KeyCode == Keys.F2)
|
if (e.KeyCode == Keys.F2)
|
||||||
Game.LocalPlayer = Game.players[(Game.LocalPlayer.Index + 1) % 4];
|
Game.world.LocalPlayer = Game.world.players[(Game.world.LocalPlayer.Index + 1) % 4];
|
||||||
if (e.KeyCode == Keys.F3)
|
if (e.KeyCode == Keys.F3)
|
||||||
Game.controller.orderGenerator = new SellOrderGenerator();
|
Game.controller.orderGenerator = new SellOrderGenerator();
|
||||||
if (e.KeyCode == Keys.F4)
|
if (e.KeyCode == Keys.F4)
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ namespace OpenRa.Orders
|
|||||||
|
|
||||||
public Cursor GetCursor(int2 xy, MouseInput mi)
|
public Cursor GetCursor(int2 xy, MouseInput mi)
|
||||||
{
|
{
|
||||||
if (!Game.LocalPlayer.Shroud.IsExplored(xy))
|
if (!Game.world.LocalPlayer.Shroud.IsExplored(xy))
|
||||||
return Cursor.MoveBlocked;
|
return Cursor.MoveBlocked;
|
||||||
|
|
||||||
var movement = self.traits.GetOrDefault<IMovement>();
|
var movement = self.traits.GetOrDefault<IMovement>();
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ namespace OpenRa.Orders
|
|||||||
{
|
{
|
||||||
var loc = mi.Location + Game.viewport.Location;
|
var loc = mi.Location + Game.viewport.Location;
|
||||||
var underCursor = Game.world.FindUnits(loc, loc)
|
var underCursor = Game.world.FindUnits(loc, loc)
|
||||||
.Where(a => a.Owner == Game.LocalPlayer
|
.Where(a => a.Owner == Game.world.LocalPlayer
|
||||||
&& a.traits.Contains<Chronoshiftable>()
|
&& a.traits.Contains<Chronoshiftable>()
|
||||||
&& a.traits.Contains<Selectable>()).FirstOrDefault();
|
&& a.traits.Contains<Selectable>()).FirstOrDefault();
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ namespace OpenRa.Orders
|
|||||||
public void Tick()
|
public void Tick()
|
||||||
{
|
{
|
||||||
var hasChronosphere = Game.world.Actors
|
var hasChronosphere = Game.world.Actors
|
||||||
.Any(a => a.Owner == Game.LocalPlayer && a.traits.Contains<Chronosphere>());
|
.Any(a => a.Owner == Game.world.LocalPlayer && a.traits.Contains<Chronosphere>());
|
||||||
|
|
||||||
if (!hasChronosphere)
|
if (!hasChronosphere)
|
||||||
Game.controller.CancelInputMode();
|
Game.controller.CancelInputMode();
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ namespace OpenRa.Orders
|
|||||||
{
|
{
|
||||||
var loc = mi.Location + Game.viewport.Location;
|
var loc = mi.Location + Game.viewport.Location;
|
||||||
var underCursor = Game.world.FindUnits(loc, loc)
|
var underCursor = Game.world.FindUnits(loc, loc)
|
||||||
.Where(a => a.Owner == Game.LocalPlayer
|
.Where(a => a.Owner == Game.world.LocalPlayer
|
||||||
&& a.traits.Contains<IronCurtainable>()
|
&& a.traits.Contains<IronCurtainable>()
|
||||||
&& a.traits.Contains<Selectable>()).FirstOrDefault();
|
&& a.traits.Contains<Selectable>()).FirstOrDefault();
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ namespace OpenRa.Orders
|
|||||||
public void Tick()
|
public void Tick()
|
||||||
{
|
{
|
||||||
var hasStructure = Game.world.Actors
|
var hasStructure = Game.world.Actors
|
||||||
.Any(a => a.Owner == Game.LocalPlayer && a.traits.Contains<IronCurtain>());
|
.Any(a => a.Owner == Game.world.LocalPlayer && a.traits.Contains<IronCurtain>());
|
||||||
|
|
||||||
if (!hasStructure)
|
if (!hasStructure)
|
||||||
Game.controller.CancelInputMode();
|
Game.controller.CancelInputMode();
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ namespace OpenRa
|
|||||||
|
|
||||||
static Player LookupPlayer(uint index)
|
static Player LookupPlayer(uint index)
|
||||||
{
|
{
|
||||||
return Game.players
|
return Game.world.players
|
||||||
.Where(x => x.Value.Index == index)
|
.Where(x => x.Value.Index == index)
|
||||||
.First().Value;
|
.First().Value;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace OpenRa.Orders
|
|||||||
{
|
{
|
||||||
var loc = mi.Location + Game.viewport.Location;
|
var loc = mi.Location + Game.viewport.Location;
|
||||||
var underCursor = Game.world.FindUnits(loc, loc)
|
var underCursor = Game.world.FindUnits(loc, loc)
|
||||||
.Where(a => a.Owner == Game.LocalPlayer
|
.Where(a => a.Owner == Game.world.LocalPlayer
|
||||||
&& a.traits.Contains<Building>()
|
&& a.traits.Contains<Building>()
|
||||||
&& a.traits.Contains<Selectable>()).FirstOrDefault();
|
&& a.traits.Contains<Selectable>()).FirstOrDefault();
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace OpenRa.Orders
|
|||||||
{
|
{
|
||||||
var loc = mi.Location + Game.viewport.Location;
|
var loc = mi.Location + Game.viewport.Location;
|
||||||
var underCursor = Game.world.FindUnits(loc, loc)
|
var underCursor = Game.world.FindUnits(loc, loc)
|
||||||
.Where(a => a.Owner == Game.LocalPlayer
|
.Where(a => a.Owner == Game.world.LocalPlayer
|
||||||
&& a.traits.Contains<Building>()
|
&& a.traits.Contains<Building>()
|
||||||
&& a.traits.Contains<Selectable>()).FirstOrDefault();
|
&& a.traits.Contains<Selectable>()).FirstOrDefault();
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ namespace OpenRa.Orders
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
var hasFact = Game.world.Actors
|
var hasFact = Game.world.Actors
|
||||||
.Any(a => a.Owner == Game.LocalPlayer && a.traits.Contains<ConstructionYard>());
|
.Any(a => a.Owner == Game.world.LocalPlayer && a.traits.Contains<ConstructionYard>());
|
||||||
|
|
||||||
if (!hasFact)
|
if (!hasFact)
|
||||||
Game.controller.CancelInputMode();
|
Game.controller.CancelInputMode();
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace OpenRa.Orders
|
|||||||
{
|
{
|
||||||
var loc = mi.Location + Game.viewport.Location;
|
var loc = mi.Location + Game.viewport.Location;
|
||||||
var underCursor = Game.world.FindUnits(loc, loc)
|
var underCursor = Game.world.FindUnits(loc, loc)
|
||||||
.Where(a => a.Owner == Game.LocalPlayer
|
.Where(a => a.Owner == Game.world.LocalPlayer
|
||||||
&& a.traits.Contains<Building>()
|
&& a.traits.Contains<Building>()
|
||||||
&& a.traits.Contains<Selectable>()).FirstOrDefault();
|
&& a.traits.Contains<Selectable>()).FirstOrDefault();
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ namespace OpenRa.Orders
|
|||||||
}
|
}
|
||||||
case "AssignPlayer":
|
case "AssignPlayer":
|
||||||
{
|
{
|
||||||
Game.LocalPlayer = order.Player;
|
Game.world.LocalPlayer = order.Player;
|
||||||
Game.chat.AddLine(order.Player, "is now YOU.");
|
Game.chat.AddLine(order.Player, "is now YOU.");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ namespace OpenRa
|
|||||||
Game.chat.AddLine(Color.White, "Debug", "Requesting package: {0}".F(currentPackage));
|
Game.chat.AddLine(Color.White, "Debug", "Requesting package: {0}".F(currentPackage));
|
||||||
|
|
||||||
Game.controller.AddOrder(
|
Game.controller.AddOrder(
|
||||||
new Order("RequestFile", Game.LocalPlayer.PlayerActor, null, int2.Zero, currentPackage) { IsImmediate = true });
|
new Order("RequestFile", Game.world.LocalPlayer.PlayerActor, null, int2.Zero, currentPackage) { IsImmediate = true });
|
||||||
|
|
||||||
Fraction = 0f;
|
Fraction = 0f;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,10 +29,10 @@ namespace OpenRa
|
|||||||
public Shroud Shroud;
|
public Shroud Shroud;
|
||||||
public Dictionary<string, SupportPower> SupportPowers;
|
public Dictionary<string, SupportPower> SupportPowers;
|
||||||
|
|
||||||
public Player( int index, Session.Client client )
|
public Player( World world, int index, Session.Client client )
|
||||||
{
|
{
|
||||||
Shroud = new Shroud(this);
|
Shroud = new Shroud(this);
|
||||||
this.PlayerActor = Game.world.CreateActor("Player", new int2(int.MaxValue, int.MaxValue), this);
|
this.PlayerActor = world.CreateActor("Player", new int2(int.MaxValue, int.MaxValue), this);
|
||||||
this.Index = index;
|
this.Index = index;
|
||||||
this.InternalName = "Multi{0}".F(index);
|
this.InternalName = "Multi{0}".F(index);
|
||||||
|
|
||||||
@@ -91,7 +91,7 @@ namespace OpenRa
|
|||||||
|
|
||||||
void GiveAdvice(string advice)
|
void GiveAdvice(string advice)
|
||||||
{
|
{
|
||||||
if (this != Game.LocalPlayer) return;
|
if (this != Game.world.LocalPlayer) return;
|
||||||
// todo: store the condition or something.
|
// todo: store the condition or something.
|
||||||
// repeat after Rules.General.SpeakDelay, as long as the condition holds.
|
// repeat after Rules.General.SpeakDelay, as long as the condition holds.
|
||||||
Sound.Play(advice);
|
Sound.Play(advice);
|
||||||
@@ -135,7 +135,7 @@ namespace OpenRa
|
|||||||
foreach (var sp in SupportPowers.Values)
|
foreach (var sp in SupportPowers.Values)
|
||||||
sp.Tick();
|
sp.Tick();
|
||||||
|
|
||||||
if (this == Game.LocalPlayer)
|
if (this == Game.world.LocalPlayer)
|
||||||
{
|
{
|
||||||
var totalMoney = Cash + Ore;
|
var totalMoney = Cash + Ore;
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ namespace OpenRa.Traits.Activities
|
|||||||
{
|
{
|
||||||
self.Health = 0;
|
self.Health = 0;
|
||||||
Game.world.Remove( self );
|
Game.world.Remove( self );
|
||||||
if (self.Owner == Game.LocalPlayer)
|
if (self.Owner == Game.world.LocalPlayer)
|
||||||
{
|
{
|
||||||
Sound.Play("placbldg.aud");
|
Sound.Play("placbldg.aud");
|
||||||
Sound.Play("build5.aud");
|
Sound.Play("build5.aud");
|
||||||
|
|||||||
@@ -205,7 +205,7 @@ namespace OpenRa.Traits
|
|||||||
self.CancelActivity();
|
self.CancelActivity();
|
||||||
QueueAttack(self, order);
|
QueueAttack(self, order);
|
||||||
|
|
||||||
if (self.Owner == Game.LocalPlayer)
|
if (self.Owner == Game.world.LocalPlayer)
|
||||||
Game.world.AddFrameEndTask(w => w.Add(new FlashTarget(order.TargetActor)));
|
Game.world.AddFrameEndTask(w => w.Add(new FlashTarget(order.TargetActor)));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ namespace OpenRa.Traits
|
|||||||
if (remainingUncloakTime > 0)
|
if (remainingUncloakTime > 0)
|
||||||
return rs;
|
return rs;
|
||||||
|
|
||||||
if (self.Owner == Game.LocalPlayer)
|
if (self.Owner == Game.world.LocalPlayer)
|
||||||
return rs.Select(a => a.WithPalette(PaletteType.Shadow));
|
return rs.Select(a => a.WithPalette(PaletteType.Shadow));
|
||||||
else
|
else
|
||||||
return new Renderable[] { };
|
return new Renderable[] { };
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ namespace OpenRa.Traits
|
|||||||
{
|
{
|
||||||
public IEnumerable<Renderable> ModifyRender(Actor self, IEnumerable<Renderable> r)
|
public IEnumerable<Renderable> ModifyRender(Actor self, IEnumerable<Renderable> r)
|
||||||
{
|
{
|
||||||
return Game.LocalPlayer == self.Owner
|
return Game.world.LocalPlayer == self.Owner
|
||||||
? r : new Renderable[] { };
|
? r : new Renderable[] { };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace OpenRa.Traits
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
Game.world.CreateActor( order.TargetString, order.TargetLocation, order.Player );
|
Game.world.CreateActor( order.TargetString, order.TargetLocation, order.Player );
|
||||||
if (order.Player == Game.LocalPlayer)
|
if (order.Player == Game.world.LocalPlayer)
|
||||||
{
|
{
|
||||||
Sound.Play("placbldg.aud");
|
Sound.Play("placbldg.aud");
|
||||||
Sound.Play("build5.aud");
|
Sound.Play("build5.aud");
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ namespace OpenRa.Traits
|
|||||||
_ =>
|
_ =>
|
||||||
{
|
{
|
||||||
var isBuilding = unit.Traits.Contains<BuildingInfo>();
|
var isBuilding = unit.Traits.Contains<BuildingInfo>();
|
||||||
if( !hasPlayedSound && order.Player == Game.LocalPlayer )
|
if( !hasPlayedSound && order.Player == Game.world.LocalPlayer )
|
||||||
{
|
{
|
||||||
Sound.Play( isBuilding ? "conscmp1.aud" : "unitrdy1.aud" );
|
Sound.Play( isBuilding ? "conscmp1.aud" : "unitrdy1.aud" );
|
||||||
hasPlayedSound = true;
|
hasPlayedSound = true;
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ namespace OpenRa.Traits
|
|||||||
public IEnumerable<Renderable> Render(Actor self)
|
public IEnumerable<Renderable> Render(Actor self)
|
||||||
{
|
{
|
||||||
var uog = Game.controller.orderGenerator as UnitOrderGenerator;
|
var uog = Game.controller.orderGenerator as UnitOrderGenerator;
|
||||||
if (uog != null && self.Owner == Game.LocalPlayer && uog.selection.Contains(self))
|
if (uog != null && self.Owner == Game.world.LocalPlayer && uog.selection.Contains(self))
|
||||||
yield return Util.Centered(self,
|
yield return Util.Centered(self,
|
||||||
anim.Image, Util.CenterOfCell(rallyPoint));
|
anim.Image, Util.CenterOfCell(rallyPoint));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ namespace OpenRa.Traits
|
|||||||
|
|
||||||
public bool IsCrushableBy(UnitMovementType umt, Player player)
|
public bool IsCrushableBy(UnitMovementType umt, Player player)
|
||||||
{
|
{
|
||||||
if (player == Game.LocalPlayer) return false;
|
if (player == Game.world.LocalPlayer) return false;
|
||||||
switch (umt)
|
switch (umt)
|
||||||
{
|
{
|
||||||
case UnitMovementType.Track: return true;
|
case UnitMovementType.Track: return true;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ namespace OpenRa.Traits
|
|||||||
self.Owner.TakeCash(toSteal);
|
self.Owner.TakeCash(toSteal);
|
||||||
thief.Owner.GiveCash(toSteal);
|
thief.Owner.GiveCash(toSteal);
|
||||||
|
|
||||||
if (Game.LocalPlayer == thief.Owner)
|
if (Game.world.LocalPlayer == thief.Owner)
|
||||||
Sound.Play("credit1.aud");
|
Sound.Play("credit1.aud");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@ namespace OpenRa.Traits
|
|||||||
var numPips = self.Info.Traits.Get<StoresOreInfo>().Pips;
|
var numPips = self.Info.Traits.Get<StoresOreInfo>().Pips;
|
||||||
|
|
||||||
return Graphics.Util.MakeArray( numPips,
|
return Graphics.Util.MakeArray( numPips,
|
||||||
i => (Game.LocalPlayer.GetSiloFullness() > i * 1.0f / numPips)
|
i => (Game.world.LocalPlayer.GetSiloFullness() > i * 1.0f / numPips)
|
||||||
? PipType.Yellow : PipType.Transparent );
|
? PipType.Yellow : PipType.Transparent );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ namespace OpenRa.Traits
|
|||||||
if (remainingSurfaceTime > 0)
|
if (remainingSurfaceTime > 0)
|
||||||
return rs;
|
return rs;
|
||||||
|
|
||||||
if (self.Owner == Game.LocalPlayer)
|
if (self.Owner == Game.world.LocalPlayer)
|
||||||
return rs.Select(a => a.WithPalette(PaletteType.Shadow));
|
return rs.Select(a => a.WithPalette(PaletteType.Shadow));
|
||||||
else
|
else
|
||||||
return new Renderable[] { };
|
return new Renderable[] { };
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace OpenRa.Traits
|
|||||||
public void Damaged(Actor self, AttackInfo e)
|
public void Damaged(Actor self, AttackInfo e)
|
||||||
{
|
{
|
||||||
if (e.DamageState == DamageState.Dead)
|
if (e.DamageState == DamageState.Dead)
|
||||||
if (self.Owner == Game.LocalPlayer)
|
if (self.Owner == Game.world.LocalPlayer)
|
||||||
Sound.Play(self.Info.Traits.Get<OwnedActorInfo>().WaterBound
|
Sound.Play(self.Info.Traits.Get<OwnedActorInfo>().WaterBound
|
||||||
? "navylst1.aud" : "unitlst1.aud");
|
? "navylst1.aud" : "unitlst1.aud");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ namespace OpenRa
|
|||||||
{
|
{
|
||||||
var position = Game.controller.MousePosition.ToInt2();
|
var position = Game.controller.MousePosition.ToInt2();
|
||||||
var topLeft = position - Footprint.AdjustForBuildingSize( bi );
|
var topLeft = position - Footprint.AdjustForBuildingSize( bi );
|
||||||
var isCloseEnough = Game.world.IsCloseEnoughToBase(Game.LocalPlayer, name, bi, topLeft);
|
var isCloseEnough = Game.world.IsCloseEnoughToBase(Game.world.LocalPlayer, name, bi, topLeft);
|
||||||
|
|
||||||
foreach( var t in Footprint.Tiles( name, bi, topLeft ) )
|
foreach( var t in Footprint.Tiles( name, bi, topLeft ) )
|
||||||
spriteRenderer.DrawSprite( ( isCloseEnough && Game.world.IsCellBuildable( t, bi.WaterBound
|
spriteRenderer.DrawSprite( ( isCloseEnough && Game.world.IsCellBuildable( t, bi.WaterBound
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using OpenRa.Effects;
|
using OpenRa.Effects;
|
||||||
using OpenRa.Support;
|
using OpenRa.Support;
|
||||||
using OpenRa.FileFormats;
|
using OpenRa.FileFormats;
|
||||||
@@ -14,6 +15,19 @@ namespace OpenRa
|
|||||||
List<IEffect> effects = new List<IEffect>();
|
List<IEffect> effects = new List<IEffect>();
|
||||||
List<Action<World>> frameEndActions = new List<Action<World>>();
|
List<Action<World>> frameEndActions = new List<Action<World>>();
|
||||||
|
|
||||||
|
public readonly Dictionary<int, Player> players = new Dictionary<int, Player>();
|
||||||
|
|
||||||
|
int localPlayerIndex;
|
||||||
|
public Player LocalPlayer
|
||||||
|
{
|
||||||
|
get { return players[localPlayerIndex]; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
localPlayerIndex = value.Index;
|
||||||
|
Game.viewport.GoToStartLocation();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public readonly BuildingInfluenceMap BuildingInfluence;
|
public readonly BuildingInfluenceMap BuildingInfluence;
|
||||||
public readonly UnitInfluenceMap UnitInfluence;
|
public readonly UnitInfluenceMap UnitInfluence;
|
||||||
|
|
||||||
@@ -46,6 +60,9 @@ namespace OpenRa
|
|||||||
|
|
||||||
CreateActor("World", new int2(int.MaxValue, int.MaxValue), null);
|
CreateActor("World", new int2(int.MaxValue, int.MaxValue), null);
|
||||||
|
|
||||||
|
for (int i = 0; i < 8; i++)
|
||||||
|
players[i] = new Player(this, i, Game.LobbyInfo.Clients.FirstOrDefault(a => a.Index == i));
|
||||||
|
|
||||||
Bridges.MakeBridges(this);
|
Bridges.MakeBridges(this);
|
||||||
PathFinder = new PathFinder(this);
|
PathFinder = new PathFinder(this);
|
||||||
|
|
||||||
@@ -104,6 +121,8 @@ namespace OpenRa
|
|||||||
UnitInfluence.Tick();
|
UnitInfluence.Tick();
|
||||||
|
|
||||||
Minimap.Update();
|
Minimap.Update();
|
||||||
|
foreach (var player in players.Values)
|
||||||
|
player.Tick();
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<Actor> Actors { get { return actors; } }
|
public IEnumerable<Actor> Actors { get { return actors; } }
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using System.Linq;
|
|||||||
using OpenRa.Traits;
|
using OpenRa.Traits;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using OpenRa.GameRules;
|
using OpenRa.GameRules;
|
||||||
|
using OpenRa.FileFormats;
|
||||||
|
|
||||||
namespace OpenRa
|
namespace OpenRa
|
||||||
{
|
{
|
||||||
@@ -92,7 +93,7 @@ namespace OpenRa
|
|||||||
{
|
{
|
||||||
return world.FindUnits(a, b)
|
return world.FindUnits(a, b)
|
||||||
.Where( x => x.traits.Contains<Selectable>() )
|
.Where( x => x.traits.Contains<Selectable>() )
|
||||||
.GroupBy(x => (x.Owner == Game.LocalPlayer) ? x.Info.Traits.Get<SelectableInfo>().Priority : 0)
|
.GroupBy(x => (x.Owner == Game.world.LocalPlayer) ? x.Info.Traits.Get<SelectableInfo>().Priority : 0)
|
||||||
.OrderByDescending(g => g.Key)
|
.OrderByDescending(g => g.Key)
|
||||||
.Select( g => g.AsEnumerable() )
|
.Select( g => g.AsEnumerable() )
|
||||||
.DefaultIfEmpty( new Actor[] {} )
|
.DefaultIfEmpty( new Actor[] {} )
|
||||||
@@ -150,5 +151,21 @@ namespace OpenRa
|
|||||||
|
|
||||||
return xy;
|
return xy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void LoadMapActors(this World world, IniFile mapfile)
|
||||||
|
{
|
||||||
|
var toLoad =
|
||||||
|
mapfile.GetSection("STRUCTURES", true)
|
||||||
|
.Concat(mapfile.GetSection("UNITS", true));
|
||||||
|
|
||||||
|
foreach (var s in toLoad)
|
||||||
|
{
|
||||||
|
//num=owner,type,health,location,facing,...
|
||||||
|
var parts = s.Value.Split( ',' );
|
||||||
|
var loc = int.Parse(parts[3]);
|
||||||
|
world.CreateActor(parts[1].ToLowerInvariant(), new int2(loc % 128, loc / 128),
|
||||||
|
world.players.Values.FirstOrDefault(p => p.InternalName == parts[0]) ?? world.players[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ namespace OpenRa.Mods.Aftermath.Orders
|
|||||||
|
|
||||||
public Cursor GetCursor(int2 xy, MouseInput mi)
|
public Cursor GetCursor(int2 xy, MouseInput mi)
|
||||||
{
|
{
|
||||||
if (!Game.LocalPlayer.Shroud.IsExplored(xy))
|
if (!Game.world.LocalPlayer.Shroud.IsExplored(xy))
|
||||||
return Cursor.MoveBlocked;
|
return Cursor.MoveBlocked;
|
||||||
|
|
||||||
var movement = self.traits.GetOrDefault<IMovement>();
|
var movement = self.traits.GetOrDefault<IMovement>();
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ namespace OpenRa.Mods.RA
|
|||||||
|
|
||||||
public bool IsPathableCrush(UnitMovementType umt, Player player)
|
public bool IsPathableCrush(UnitMovementType umt, Player player)
|
||||||
{
|
{
|
||||||
return !self.Info.Traits.Get<MineInfo>().AvoidFriendly || (player != Game.LocalPlayer);
|
return !self.Info.Traits.Get<MineInfo>().AvoidFriendly || (player != Game.world.LocalPlayer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsCrushableBy(UnitMovementType umt, Player player)
|
public bool IsCrushableBy(UnitMovementType umt, Player player)
|
||||||
|
|||||||
@@ -21,15 +21,15 @@ namespace OpenRa.Mods.RA
|
|||||||
|
|
||||||
public IEnumerable<Renderable> ModifyRender(Actor self, IEnumerable<Renderable> r)
|
public IEnumerable<Renderable> ModifyRender(Actor self, IEnumerable<Renderable> r)
|
||||||
{
|
{
|
||||||
if (self.Owner == Game.LocalPlayer)
|
if (self.Owner == Game.world.LocalPlayer)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
return r.Select(a => a.WithPalette(Game.LocalPlayer.Palette));
|
return r.Select(a => a.WithPalette(Game.world.LocalPlayer.Palette));
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Tick(Actor self)
|
public override void Tick(Actor self)
|
||||||
{
|
{
|
||||||
anim.ChangeImage(self.Owner == Game.LocalPlayer ? GetImage(self) : "e1");
|
anim.ChangeImage(self.Owner == Game.world.LocalPlayer ? GetImage(self) : "e1");
|
||||||
base.Tick(self);
|
base.Tick(self);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user