resources moved off player onto a synced trait
This commit is contained in:
@@ -487,17 +487,14 @@ namespace OpenRA.Widgets
|
||||
|
||||
Game.chrome.renderer.BoldFont.DrawText(buildable.Description, p.ToInt2() + new int2(5, 5), Color.White);
|
||||
|
||||
DrawRightAligned( "${0}".F(buildable.Cost), pos + new int2(-5,5),
|
||||
world.LocalPlayer.Cash + world.LocalPlayer.Ore >= buildable.Cost ? Color.White : Color.Red);
|
||||
DrawRightAligned("${0}".F(buildable.Cost), pos + new int2(-5, 5), Color.White);
|
||||
|
||||
if (buildable.Hotkey != null)
|
||||
DrawRightAligned("{0}".F(buildable.Hotkey.ToUpper()), pos + new int2(-5, 35),Color.White);
|
||||
|
||||
var bi = info.Traits.GetOrDefault<BuildingInfo>();
|
||||
if (bi != null)
|
||||
DrawRightAligned("{1}{0}".F(bi.Power, bi.Power > 0 ? "+" : ""), pos + new int2(-5, 20),
|
||||
world.LocalPlayer.PowerProvided - world.LocalPlayer.PowerDrained + bi.Power >= 0
|
||||
? Color.White : Color.Red);
|
||||
DrawRightAligned("{1}{0}".F(bi.Power, bi.Power > 0 ? "+" : ""), pos + new int2(-5, 20), Color.White);
|
||||
|
||||
|
||||
p += new int2(5, 20);
|
||||
|
||||
@@ -69,8 +69,8 @@ namespace OpenRA.Widgets.Delegates
|
||||
var color = template.GetWidget<ButtonWidget>("COLOR");
|
||||
color.OnMouseUp = CyclePalette;
|
||||
|
||||
var colorBlock = color.GetWidget<ColorBlockWidget>("COLORBLOCK");
|
||||
colorBlock.GetColor = () => Player.PlayerColors(Game.world)[c.PaletteIndex % Player.PlayerColors(Game.world).Count].Color;
|
||||
var colorBlock = color.GetWidget<ColorBlockWidget>("COLORBLOCK");
|
||||
colorBlock.GetColor = () => Game.world.PlayerColors()[c.PaletteIndex % Game.world.PlayerColors().Count].Color;
|
||||
|
||||
var faction = template.GetWidget<ButtonWidget>("FACTION");
|
||||
faction.OnMouseUp = CycleRace;
|
||||
@@ -90,8 +90,8 @@ namespace OpenRA.Widgets.Delegates
|
||||
}
|
||||
else
|
||||
{
|
||||
var color = template.GetWidget<ColorBlockWidget>("COLOR");
|
||||
color.GetColor = () => Player.PlayerColors(Game.world)[c.PaletteIndex % Player.PlayerColors(Game.world).Count].Color;
|
||||
var color = template.GetWidget<ColorBlockWidget>("COLOR");
|
||||
color.GetColor = () => Game.world.PlayerColors()[c.PaletteIndex % Game.world.PlayerColors().Count].Color;
|
||||
|
||||
var faction = template.GetWidget<LabelWidget>("FACTION");
|
||||
faction.GetText = () => c.Country;
|
||||
@@ -118,13 +118,13 @@ namespace OpenRA.Widgets.Delegates
|
||||
bool SpawnPointAvailable(int index) { return (index == 0) || Game.LobbyInfo.Clients.All(c => c.SpawnPoint != index); }
|
||||
|
||||
bool CyclePalette(MouseInput mi)
|
||||
{
|
||||
var d = (mi.Button == MouseButton.Left) ? +1 : Player.PlayerColors(Game.world).Count() - 1;
|
||||
|
||||
var newIndex = ((int)Game.LocalClient.PaletteIndex + d) % Player.PlayerColors(Game.world).Count();
|
||||
{
|
||||
var d = (mi.Button == MouseButton.Left) ? +1 : Game.world.PlayerColors().Count() - 1;
|
||||
|
||||
var newIndex = ((int)Game.LocalClient.PaletteIndex + d) % Game.world.PlayerColors().Count();
|
||||
|
||||
while (!PaletteAvailable(newIndex) && newIndex != (int)Game.LocalClient.PaletteIndex)
|
||||
newIndex = (newIndex + d) % Player.PlayerColors(Game.world).Count();
|
||||
while (!PaletteAvailable(newIndex) && newIndex != (int)Game.LocalClient.PaletteIndex)
|
||||
newIndex = (newIndex + d) % Game.world.PlayerColors().Count();
|
||||
|
||||
Game.IssueOrder(
|
||||
Order.Chat("/pal " + newIndex));
|
||||
|
||||
@@ -74,7 +74,7 @@ namespace OpenRA.Widgets
|
||||
ChromeProvider.GetImage(Game.chrome.renderer, "spawnpoints", "unowned"), pos, "chrome");
|
||||
else
|
||||
{
|
||||
var playerColors = Player.PlayerColors(world);
|
||||
var playerColors = Game.world.PlayerColors();
|
||||
Game.chrome.lineRenderer.FillRect(new RectangleF(
|
||||
Game.viewport.Location.X + pos.X + 2,
|
||||
Game.viewport.Location.Y + pos.Y + 2,
|
||||
|
||||
@@ -43,6 +43,8 @@ namespace OpenRA.Widgets
|
||||
|
||||
public override void Draw(World world)
|
||||
{
|
||||
var playerResources = world.LocalPlayer.PlayerActor.traits.Get<PlayerResources>();
|
||||
|
||||
var digitCollection = "digits-" + world.LocalPlayer.Country.Race;
|
||||
var chromeCollection = "chrome-" + world.LocalPlayer.Country.Race;
|
||||
|
||||
@@ -50,7 +52,7 @@ namespace OpenRA.Widgets
|
||||
ChromeProvider.GetImage(Game.chrome.renderer, chromeCollection, "moneybin"),
|
||||
new float2(Bounds.Left, 0), "chrome");
|
||||
|
||||
var moneyDigits = world.LocalPlayer.DisplayCash.ToString();
|
||||
var moneyDigits = playerResources.DisplayCash.ToString();
|
||||
var x = Bounds.Right - 65;
|
||||
|
||||
foreach (var d in moneyDigits.Reverse())
|
||||
|
||||
@@ -163,8 +163,11 @@ namespace OpenRA.Widgets
|
||||
|
||||
void DrawPower(World world)
|
||||
{
|
||||
var resources = world.LocalPlayer.PlayerActor.traits.Get<PlayerResources>();
|
||||
|
||||
// Nothing to draw
|
||||
if (world.LocalPlayer.PowerProvided == 0 && world.LocalPlayer.PowerDrained == 0)
|
||||
if (resources.PowerProvided == 0
|
||||
&& resources.PowerDrained == 0)
|
||||
return;
|
||||
|
||||
var renderer = Game.chrome.renderer;
|
||||
@@ -176,18 +179,18 @@ namespace OpenRA.Widgets
|
||||
var barEnd = barStart + new float2(powerSize.Width, 0);
|
||||
|
||||
float powerScaleBy = 100;
|
||||
var maxPower = Math.Max(world.LocalPlayer.PowerProvided, world.LocalPlayer.PowerDrained);
|
||||
var maxPower = Math.Max(resources.PowerProvided, resources.PowerDrained);
|
||||
while (maxPower >= powerScaleBy) powerScaleBy *= 2;
|
||||
|
||||
// Current power supply
|
||||
var powerLevelTemp = barStart.X + (barEnd.X - barStart.X) * (world.LocalPlayer.PowerProvided / powerScaleBy);
|
||||
var powerLevelTemp = barStart.X + (barEnd.X - barStart.X) * (resources.PowerProvided / powerScaleBy);
|
||||
lastPowerProvidedPos = float2.Lerp(lastPowerProvidedPos.GetValueOrDefault(powerLevelTemp), powerLevelTemp, .3f);
|
||||
float2 powerLevel = new float2(lastPowerProvidedPos.Value, barStart.Y);
|
||||
|
||||
var color = Color.LimeGreen;
|
||||
if (world.LocalPlayer.GetPowerState() == PowerState.Low)
|
||||
if (resources.GetPowerState() == PowerState.Low)
|
||||
color = Color.Orange;
|
||||
if (world.LocalPlayer.GetPowerState() == PowerState.Critical)
|
||||
if (resources.GetPowerState() == PowerState.Critical)
|
||||
color = Color.Red;
|
||||
|
||||
var colorDark = Graphics.Util.Lerp(0.25f, color, Color.Black);
|
||||
@@ -208,7 +211,7 @@ namespace OpenRA.Widgets
|
||||
|
||||
// Power usage indicator
|
||||
var indicator = ChromeProvider.GetImage(renderer, radarCollection, "power-indicator");
|
||||
var powerDrainedTemp = barStart.X + (barEnd.X - barStart.X) * (world.LocalPlayer.PowerDrained / powerScaleBy);
|
||||
var powerDrainedTemp = barStart.X + (barEnd.X - barStart.X) * (resources.PowerDrained / powerScaleBy);
|
||||
lastPowerDrainedPos = float2.Lerp(lastPowerDrainedPos.GetValueOrDefault(powerDrainedTemp), powerDrainedTemp, .3f);
|
||||
float2 powerDrainLevel = new float2(lastPowerDrainedPos.Value - indicator.size.X / 2, barStart.Y - 1);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user