passing refs to World in Chrome
This commit is contained in:
@@ -144,14 +144,14 @@ namespace OpenRa
|
|||||||
TickRadarAnimation();
|
TickRadarAnimation();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Draw()
|
public void Draw( World world )
|
||||||
{
|
{
|
||||||
DrawDownloadBar();
|
DrawDownloadBar();
|
||||||
|
|
||||||
chromeCollection = (Game.world.LocalPlayer.Race == Race.Allies) ? "chrome-allies" : "chrome-soviet";
|
chromeCollection = (world.LocalPlayer.Race == Race.Allies) ? "chrome-allies" : "chrome-soviet";
|
||||||
radarCollection = (Game.world.LocalPlayer.Race == Race.Allies) ? "radar-allies" : "radar-soviet";
|
radarCollection = (world.LocalPlayer.Race == Race.Allies) ? "radar-allies" : "radar-soviet";
|
||||||
paletteCollection = (Game.world.LocalPlayer.Race == Race.Allies) ? "palette-allies" : "palette-soviet";
|
paletteCollection = (world.LocalPlayer.Race == Race.Allies) ? "palette-allies" : "palette-soviet";
|
||||||
digitCollection = (Game.world.LocalPlayer.Race == Race.Allies) ? "digits-allies" : "digits-soviet";
|
digitCollection = (world.LocalPlayer.Race == Race.Allies) ? "digits-allies" : "digits-soviet";
|
||||||
|
|
||||||
buttons.Clear();
|
buttons.Clear();
|
||||||
|
|
||||||
@@ -164,18 +164,18 @@ namespace OpenRa
|
|||||||
new int2(140, 15), Color.White);
|
new int2(140, 15), Color.White);
|
||||||
|
|
||||||
if (Game.Settings.PerfGraph)
|
if (Game.Settings.PerfGraph)
|
||||||
PerfHistory.Render(renderer, Game.world.WorldRenderer.lineRenderer);
|
PerfHistory.Render(renderer, world.WorldRenderer.lineRenderer);
|
||||||
|
|
||||||
DrawRadar();
|
DrawRadar( world );
|
||||||
DrawPower();
|
DrawPower( world );
|
||||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, chromeCollection, "moneybin"), new float2(Game.viewport.Width - 320, 0), PaletteType.Chrome);
|
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, chromeCollection, "moneybin"), new float2(Game.viewport.Width - 320, 0), PaletteType.Chrome);
|
||||||
DrawMoney();
|
DrawMoney( world );
|
||||||
rgbaRenderer.Flush();
|
rgbaRenderer.Flush();
|
||||||
DrawButtons();
|
DrawButtons( world );
|
||||||
|
|
||||||
int paletteHeight = DrawBuildPalette(currentTab);
|
int paletteHeight = DrawBuildPalette(world, currentTab);
|
||||||
DrawSupportPowers();
|
DrawSupportPowers( world );
|
||||||
DrawBuildTabs(paletteHeight);
|
DrawBuildTabs(world, paletteHeight);
|
||||||
DrawChat();
|
DrawChat();
|
||||||
DrawOptionsMenu();
|
DrawOptionsMenu();
|
||||||
}
|
}
|
||||||
@@ -222,7 +222,7 @@ namespace OpenRa
|
|||||||
AddButton(r, _ => { });
|
AddButton(r, _ => { });
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DrawLobby()
|
public void DrawLobby( World world )
|
||||||
{
|
{
|
||||||
DrawDownloadBar();
|
DrawDownloadBar();
|
||||||
|
|
||||||
@@ -238,8 +238,8 @@ namespace OpenRa
|
|||||||
DrawDialogBackground(new Rectangle(r.Right - 330, r.Top + 40, 310, r.Bottom - 273 - r.Top - 40),
|
DrawDialogBackground(new Rectangle(r.Right - 330, r.Top + 40, 310, r.Bottom - 273 - r.Top - 40),
|
||||||
panelSprites, false);
|
panelSprites, false);
|
||||||
|
|
||||||
Game.world.Minimap.Update();
|
world.Minimap.Update();
|
||||||
Game.world.Minimap.Draw(new Rectangle(r.Right - 325, r.Top + 45, 300, 277), true);
|
world.Minimap.Draw(new Rectangle(r.Right - 325, r.Top + 45, 300, 277), true);
|
||||||
|
|
||||||
renderer.DrawText2("Name", new int2(r.Left + 30, r.Top + 50), Color.White);
|
renderer.DrawText2("Name", new int2(r.Left + 30, r.Top + 50), Color.White);
|
||||||
renderer.DrawText2("Color", new int2(r.Left + 230, r.Top + 50), Color.White);
|
renderer.DrawText2("Color", new int2(r.Left + 230, r.Top + 50), Color.White);
|
||||||
@@ -303,9 +303,9 @@ namespace OpenRa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawRadar()
|
void DrawRadar( World world )
|
||||||
{
|
{
|
||||||
var hasNewRadar = Game.world.Actors.Any(a => a.Owner == Game.world.LocalPlayer
|
var hasNewRadar = world.Actors.Any(a => a.Owner == world.LocalPlayer
|
||||||
&& a.traits.Contains<ProvidesRadar>()
|
&& a.traits.Contains<ProvidesRadar>()
|
||||||
&& a.traits.Get<ProvidesRadar>().IsActive(a));
|
&& a.traits.Get<ProvidesRadar>().IsActive(a));
|
||||||
|
|
||||||
@@ -328,36 +328,36 @@ namespace OpenRa
|
|||||||
if (radarAnimationFrame >= radarSlideAnimationLength)
|
if (radarAnimationFrame >= radarSlideAnimationLength)
|
||||||
{
|
{
|
||||||
RectangleF mapRect = new RectangleF(radarOrigin.X + 9, radarOrigin.Y+(192-radarMinimapHeight)/2, 192, radarMinimapHeight);
|
RectangleF mapRect = new RectangleF(radarOrigin.X + 9, radarOrigin.Y+(192-radarMinimapHeight)/2, 192, radarMinimapHeight);
|
||||||
Game.world.Minimap.Draw(mapRect, false);
|
world.Minimap.Draw(mapRect, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AddButton(RectangleF r, Action<bool> b) { buttons.Add(Pair.New(r, b)); }
|
void AddButton(RectangleF r, Action<bool> b) { buttons.Add(Pair.New(r, b)); }
|
||||||
|
|
||||||
void DrawBuildTabs(int paletteHeight)
|
void DrawBuildTabs( World world, int paletteHeight)
|
||||||
{
|
{
|
||||||
const int tabWidth = 24;
|
const int tabWidth = 24;
|
||||||
const int tabHeight = 40;
|
const int tabHeight = 40;
|
||||||
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.world.LocalPlayer, currentTab).Any())
|
if (currentTab == null || !Rules.TechTree.BuildableItems(world.LocalPlayer, currentTab).Any())
|
||||||
ChooseAvailableTab();
|
ChooseAvailableTab( world );
|
||||||
|
|
||||||
var queue = Game.world.LocalPlayer.PlayerActor.traits.Get<Traits.ProductionQueue>();
|
var queue = 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.world.LocalPlayer, groupName).Any())
|
if (!Rules.TechTree.BuildableItems(world.LocalPlayer, groupName).Any())
|
||||||
{
|
{
|
||||||
CheckDeadTab(groupName);
|
CheckDeadTab( world, groupName );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
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.world.LocalPlayer.Race == Race.Allies) ? "allies" : "soviet";
|
var race = (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),
|
||||||
@@ -378,22 +378,22 @@ namespace OpenRa
|
|||||||
paletteAnimating = true;
|
paletteAnimating = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CheckDeadTab( string groupName )
|
void CheckDeadTab( World world, string groupName )
|
||||||
{
|
{
|
||||||
var queue = Game.world.LocalPlayer.PlayerActor.traits.Get<Traits.ProductionQueue>();
|
var queue = 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.world.LocalPlayer, item.Item));
|
Game.controller.AddOrder(Order.CancelProduction(world.LocalPlayer, item.Item));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChooseAvailableTab()
|
void ChooseAvailableTab( World world )
|
||||||
{
|
{
|
||||||
currentTab = tabImageNames.Select(q => q.Key).FirstOrDefault(
|
currentTab = tabImageNames.Select(q => q.Key).FirstOrDefault(
|
||||||
t => Rules.TechTree.BuildableItems(Game.world.LocalPlayer, t).Any());
|
t => Rules.TechTree.BuildableItems(world.LocalPlayer, t).Any());
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawMoney()
|
void DrawMoney( World world )
|
||||||
{
|
{
|
||||||
var moneyDigits = Game.world.LocalPlayer.DisplayCash.ToString();
|
var moneyDigits = 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())
|
||||||
{
|
{
|
||||||
@@ -405,10 +405,10 @@ namespace OpenRa
|
|||||||
float? lastPowerProvidedPos;
|
float? lastPowerProvidedPos;
|
||||||
float? lastPowerDrainedPos;
|
float? lastPowerDrainedPos;
|
||||||
|
|
||||||
void DrawPower()
|
void DrawPower( World world )
|
||||||
{
|
{
|
||||||
// Nothing to draw
|
// Nothing to draw
|
||||||
if (Game.world.LocalPlayer.PowerProvided == 0 && Game.world.LocalPlayer.PowerDrained == 0)
|
if (world.LocalPlayer.PowerProvided == 0 && 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.world.LocalPlayer.PowerProvided, Game.world.LocalPlayer.PowerDrained);
|
var maxPower = Math.Max(world.LocalPlayer.PowerProvided, 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.world.LocalPlayer.PowerProvided / powerScaleBy);
|
var powerLevelTemp = barStart.X + (barEnd.X - barStart.X) * (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.world.LocalPlayer.GetPowerState() == PowerState.Low)
|
if (world.LocalPlayer.GetPowerState() == PowerState.Low)
|
||||||
color = Color.Orange;
|
color = Color.Orange;
|
||||||
if (Game.world.LocalPlayer.GetPowerState() == PowerState.Critical)
|
if (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.world.LocalPlayer.PowerDrained / powerScaleBy);
|
var powerDrainedTemp = barStart.X + (barEnd.X - barStart.X) * (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);
|
||||||
|
|
||||||
@@ -456,14 +456,14 @@ namespace OpenRa
|
|||||||
rgbaRenderer.Flush();
|
rgbaRenderer.Flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawButtons()
|
void DrawButtons( World world )
|
||||||
{
|
{
|
||||||
int2 buttonOrigin = new int2(Game.viewport.Width - 320, 2);
|
int2 buttonOrigin = new int2(Game.viewport.Width - 320, 2);
|
||||||
// Repair
|
// Repair
|
||||||
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.world.LocalPlayer && a.traits.Contains<ConstructionYard>());
|
var hasFact = world.Actors.Any(a => a.Owner == world.LocalPlayer && a.traits.Contains<ConstructionYard>());
|
||||||
|
|
||||||
if (Game.Settings.RepairRequiresConyard && !hasFact)
|
if (Game.Settings.RepairRequiresConyard && !hasFact)
|
||||||
repairButton.ReplaceAnim("disabled");
|
repairButton.ReplaceAnim("disabled");
|
||||||
@@ -630,7 +630,7 @@ namespace OpenRa
|
|||||||
|
|
||||||
|
|
||||||
// Return an int telling us the y coordinate at the bottom of the palette
|
// Return an int telling us the y coordinate at the bottom of the palette
|
||||||
int DrawBuildPalette(string queueName)
|
int DrawBuildPalette( World world, string queueName )
|
||||||
{
|
{
|
||||||
// Hack
|
// Hack
|
||||||
int columns = paletteColumns;
|
int columns = paletteColumns;
|
||||||
@@ -641,14 +641,14 @@ namespace OpenRa
|
|||||||
var x = 0;
|
var x = 0;
|
||||||
var y = 0;
|
var y = 0;
|
||||||
|
|
||||||
var buildableItems = Rules.TechTree.BuildableItems(Game.world.LocalPlayer, queueName).ToArray();
|
var buildableItems = Rules.TechTree.BuildableItems(world.LocalPlayer, queueName).ToArray();
|
||||||
|
|
||||||
var allBuildables = Rules.TechTree.AllBuildables(Game.world.LocalPlayer, queueName)
|
var allBuildables = Rules.TechTree.AllBuildables(world.LocalPlayer, queueName)
|
||||||
.Where(a => a.Traits.Contains<BuildableInfo>())
|
.Where(a => a.Traits.Contains<BuildableInfo>())
|
||||||
.Where(a => a.Traits.Get<BuildableInfo>().Owner.Contains(Game.world.LocalPlayer.Race))
|
.Where(a => a.Traits.Get<BuildableInfo>().Owner.Contains(world.LocalPlayer.Race))
|
||||||
.OrderBy(a => a.Traits.Get<BuildableInfo>().TechLevel);
|
.OrderBy(a => a.Traits.Get<BuildableInfo>().TechLevel);
|
||||||
|
|
||||||
var queue = Game.world.LocalPlayer.PlayerActor.traits.Get<Traits.ProductionQueue>();
|
var queue = world.LocalPlayer.PlayerActor.traits.Get<Traits.ProductionQueue>();
|
||||||
|
|
||||||
var overlayBits = new List<Pair<Sprite, float2>>();
|
var overlayBits = new List<Pair<Sprite, float2>>();
|
||||||
|
|
||||||
@@ -722,7 +722,7 @@ namespace OpenRa
|
|||||||
|
|
||||||
var closureItemName = item.Name;
|
var closureItemName = item.Name;
|
||||||
AddButton(rect, buildableItems.Contains(item.Name)
|
AddButton(rect, buildableItems.Contains(item.Name)
|
||||||
? isLmb => HandleBuildPalette(closureItemName, isLmb)
|
? isLmb => HandleBuildPalette(world, closureItemName, isLmb)
|
||||||
: (Action<bool>)(_ => Sound.Play("briefing.aud")));
|
: (Action<bool>)(_ => Sound.Play("briefing.aud")));
|
||||||
|
|
||||||
if (++x == columns) { x = 0; y++; }
|
if (++x == columns) { x = 0; y++; }
|
||||||
@@ -751,21 +751,21 @@ namespace OpenRa
|
|||||||
rgbaRenderer.Flush();
|
rgbaRenderer.Flush();
|
||||||
|
|
||||||
if (tooltipItem != null)
|
if (tooltipItem != null)
|
||||||
DrawProductionTooltip(tooltipItem, new float2(Game.viewport.Width, origin.Y + y * 48 + 9).ToInt2()/*tooltipPos*/);
|
DrawProductionTooltip(world, tooltipItem, new float2(Game.viewport.Width, origin.Y + y * 48 + 9).ToInt2()/*tooltipPos*/);
|
||||||
|
|
||||||
return y*48+9;
|
return y*48+9;
|
||||||
}
|
}
|
||||||
|
|
||||||
void StartProduction( string item )
|
void StartProduction( World world, string item )
|
||||||
{
|
{
|
||||||
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.world.LocalPlayer, item));
|
Game.controller.AddOrder(Order.StartProduction(world.LocalPlayer, item));
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandleBuildPalette(string item, bool isLmb)
|
void HandleBuildPalette( World world, string item, bool isLmb )
|
||||||
{
|
{
|
||||||
var player = Game.world.LocalPlayer;
|
var player = 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 );
|
||||||
@@ -790,7 +790,7 @@ namespace OpenRa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
StartProduction(item);
|
StartProduction(world, item);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -844,7 +844,7 @@ namespace OpenRa
|
|||||||
renderer.DrawText2(text, pos - new int2(renderer.MeasureText2(text).X/2, 0), c);
|
renderer.DrawText2(text, pos - new int2(renderer.MeasureText2(text).X/2, 0), c);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawProductionTooltip(string unit, int2 pos)
|
void DrawProductionTooltip(World world, string unit, int2 pos)
|
||||||
{
|
{
|
||||||
var tooltipSprite = ChromeProvider.GetImage(renderer, chromeCollection, "tooltip-bg");
|
var tooltipSprite = ChromeProvider.GetImage(renderer, chromeCollection, "tooltip-bg");
|
||||||
var p = pos.ToFloat2() - new float2(tooltipSprite.size.X, 0);
|
var p = pos.ToFloat2() - new float2(tooltipSprite.size.X, 0);
|
||||||
@@ -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.world.LocalPlayer.Cash + Game.world.LocalPlayer.Ore >= buildable.Cost ? Color.White : Color.Red);
|
world.LocalPlayer.Cash + 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.world.LocalPlayer.PowerProvided - Game.world.LocalPlayer.PowerDrained + bi.Power >= 0
|
world.LocalPlayer.PowerProvided - world.LocalPlayer.PowerDrained + bi.Power >= 0
|
||||||
? Color.White : Color.Red);
|
? Color.White : Color.Red);
|
||||||
|
|
||||||
var buildings = Rules.TechTree.GatherBuildings( Game.world.LocalPlayer );
|
var buildings = Rules.TechTree.GatherBuildings( 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.world.LocalPlayer, buildings))
|
if (!Rules.TechTree.CanBuild(info, world.LocalPlayer, buildings))
|
||||||
{
|
{
|
||||||
var prereqs = buildable.Prerequisites
|
var prereqs = buildable.Prerequisites
|
||||||
.Select( a => Description( a ) );
|
.Select( a => Description( a ) );
|
||||||
@@ -891,9 +891,9 @@ namespace OpenRa
|
|||||||
return Rules.Info[ a.ToLowerInvariant() ].Traits.Get<BuildableInfo>().Description;
|
return Rules.Info[ a.ToLowerInvariant() ].Traits.Get<BuildableInfo>().Description;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawSupportPowers()
|
void DrawSupportPowers( World world )
|
||||||
{
|
{
|
||||||
var numPowers = Game.world.LocalPlayer.SupportPowers.Values
|
var numPowers = 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.world.LocalPlayer.SupportPowers)
|
foreach (var sp in world.LocalPlayer.SupportPowers)
|
||||||
{
|
{
|
||||||
var image = spsprites[sp.Key];
|
var image = spsprites[sp.Key];
|
||||||
if (sp.Value.IsAvailable)
|
if (sp.Value.IsAvailable)
|
||||||
@@ -949,7 +949,7 @@ namespace OpenRa
|
|||||||
shpRenderer.Flush();
|
shpRenderer.Flush();
|
||||||
|
|
||||||
if (tooltipItem != null)
|
if (tooltipItem != null)
|
||||||
DrawSupportPowerTooltip(tooltipItem, tooltipPos);
|
DrawSupportPowerTooltip(world, tooltipItem, tooltipPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
Action<bool> HandleSupportPower(SupportPower sp)
|
Action<bool> HandleSupportPower(SupportPower sp)
|
||||||
@@ -965,7 +965,7 @@ namespace OpenRa
|
|||||||
return "{0:D2}:{1:D2}".F(minutes, seconds % 60);
|
return "{0:D2}:{1:D2}".F(minutes, seconds % 60);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawSupportPowerTooltip(string sp, int2 pos)
|
void DrawSupportPowerTooltip(World world, string sp, int2 pos)
|
||||||
{
|
{
|
||||||
var tooltipSprite = ChromeProvider.GetImage(renderer, chromeCollection, "tooltip-bg");
|
var tooltipSprite = ChromeProvider.GetImage(renderer, chromeCollection, "tooltip-bg");
|
||||||
rgbaRenderer.DrawSprite(tooltipSprite, pos, PaletteType.Chrome);
|
rgbaRenderer.DrawSprite(tooltipSprite, pos, PaletteType.Chrome);
|
||||||
@@ -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.world.LocalPlayer.SupportPowers[sp].RemainingTime));
|
var timer = "Charge Time: {0}".F(FormatTime(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)
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ namespace OpenRa
|
|||||||
using (new PerfSample("render"))
|
using (new PerfSample("render"))
|
||||||
{
|
{
|
||||||
++RenderFrame;
|
++RenderFrame;
|
||||||
viewport.DrawRegions();
|
viewport.DrawRegions( world );
|
||||||
}
|
}
|
||||||
|
|
||||||
PerfHistory.items["render"].Tick();
|
PerfHistory.items["render"].Tick();
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ namespace OpenRa.Graphics
|
|||||||
this.scrollPosition = Game.CellSize* mapStart;
|
this.scrollPosition = Game.CellSize* mapStart;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DrawRegions()
|
public void DrawRegions( World world )
|
||||||
{
|
{
|
||||||
Game.world.WorldRenderer.palette.Update(Game.world.Actors.SelectMany(
|
Game.world.WorldRenderer.palette.Update(Game.world.Actors.SelectMany(
|
||||||
a => a.traits.WithInterface<IPaletteModifier>()));
|
a => a.traits.WithInterface<IPaletteModifier>()));
|
||||||
@@ -55,7 +55,7 @@ namespace OpenRa.Graphics
|
|||||||
if( Game.orderManager.GameStarted )
|
if( Game.orderManager.GameStarted )
|
||||||
{
|
{
|
||||||
Game.world.WorldRenderer.Draw();
|
Game.world.WorldRenderer.Draw();
|
||||||
Game.chrome.Draw();
|
Game.chrome.Draw( world );
|
||||||
|
|
||||||
if (Game.orderManager.IsNetplay &&
|
if (Game.orderManager.IsNetplay &&
|
||||||
Game.orderManager.Sources.OfType<NetworkOrderSource>().First().State == ConnectionState.NotConnected)
|
Game.orderManager.Sources.OfType<NetworkOrderSource>().First().State == ConnectionState.NotConnected)
|
||||||
@@ -77,12 +77,12 @@ namespace OpenRa.Graphics
|
|||||||
Game.chrome.DrawDialog("Connection failed.");
|
Game.chrome.DrawDialog("Connection failed.");
|
||||||
break;
|
break;
|
||||||
case ConnectionState.Connected:
|
case ConnectionState.Connected:
|
||||||
Game.chrome.DrawLobby();
|
Game.chrome.DrawLobby( world );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Game.chrome.DrawLobby();
|
Game.chrome.DrawLobby( world );
|
||||||
}
|
}
|
||||||
|
|
||||||
var c = Game.chrome.HitTest(mousePos) ? Cursor.Default : Game.controller.ChooseCursor();
|
var c = Game.chrome.HitTest(mousePos) ? Cursor.Default : Game.controller.ChooseCursor();
|
||||||
|
|||||||
Reference in New Issue
Block a user