diff --git a/OpenRa.Game/Graphics/WorldRenderer.cs b/OpenRa.Game/Graphics/WorldRenderer.cs index c018f79f98..d151a7cac5 100644 --- a/OpenRa.Game/Graphics/WorldRenderer.cs +++ b/OpenRa.Game/Graphics/WorldRenderer.cs @@ -99,11 +99,12 @@ namespace OpenRa.Game.Graphics lineRenderer.Flush(); - renderer.DrawText(string.Format("RenderFrame {0} ({2:F1} ms)\nTick {1} ({3:F1} ms)\nOre ({4:F1} ms)", + renderer.DrawText(string.Format("RenderFrame {0} ({2:F1} ms)\nTick {1} ({3:F1} ms)\nOre ({4:F1} ms)\n$ {5}", Game.RenderFrame, Game.orderManager.FrameNumber, Game.RenderTime * 1000, Game.TickTime * 1000, - Game.OreTime * 1000), new int2(5, 5), Color.White); + Game.OreTime * 1000, + Game.LocalPlayer.Cash), new int2(5, 5), Color.White); } void DrawSelectionBox(Actor selectedUnit, Color c, bool drawHealthBar) diff --git a/OpenRa.Game/Player.cs b/OpenRa.Game/Player.cs index 6163c9ab3b..6d3418d21d 100644 --- a/OpenRa.Game/Player.cs +++ b/OpenRa.Game/Player.cs @@ -10,6 +10,7 @@ namespace OpenRa.Game public string PlayerName; public Race Race; public readonly int Index; + public int Cash; public Player( int index, int palette, string playerName, Race race ) { @@ -17,6 +18,7 @@ namespace OpenRa.Game this.Palette = palette; this.PlayerName = playerName; this.Race = race; + this.Cash = 10000; } public float GetSiloFullness() @@ -27,13 +29,21 @@ namespace OpenRa.Game public void GiveCash( int num ) { // TODO: increase cash + Cash += num; // TODO: slowly } public bool TakeCash( int num ) { + if (Cash >= num) + { + Cash -= num; + return true; + } + + return false; // TODO: decrease cash. // returns: if enough cash was available, true - return true; + //return true; } public void Tick() @@ -103,7 +113,7 @@ namespace OpenRa.Game if( Paused || Done ) return; var costThisFrame = RemainingCost / RemainingTime; - if( costThisFrame == 0 && !player.TakeCash( costThisFrame ) ) return; + if( costThisFrame != 0 && !player.TakeCash( costThisFrame ) ) return; RemainingCost -= costThisFrame; RemainingTime -= 1; diff --git a/OpenRa.Game/Traits/Activities/DeliverOre.cs b/OpenRa.Game/Traits/Activities/DeliverOre.cs index 35ad0d283e..8e4eda8ed5 100644 --- a/OpenRa.Game/Traits/Activities/DeliverOre.cs +++ b/OpenRa.Game/Traits/Activities/DeliverOre.cs @@ -41,9 +41,7 @@ namespace OpenRa.Game.Traits.Activities { var harv = self.traits.Get(); - /* todo: give cash */ - harv.gemsCarried = 0; - harv.oreCarried = 0; + harv.Deliver(self); if( NextActivity == null ) NextActivity = new Harvest(); diff --git a/OpenRa.Game/Traits/Harvester.cs b/OpenRa.Game/Traits/Harvester.cs index 6adc363c83..d29b0e50c3 100644 --- a/OpenRa.Game/Traits/Harvester.cs +++ b/OpenRa.Game/Traits/Harvester.cs @@ -7,11 +7,10 @@ namespace OpenRa.Game.Traits { class Harvester : IOrder { - const int capacity = 28; public int oreCarried = 0; /* sum of these must not exceed capacity */ public int gemsCarried = 0; - public bool IsFull { get { return oreCarried + gemsCarried == capacity; } } + public bool IsFull { get { return oreCarried + gemsCarried == Rules.General.BailCount; } } public bool IsEmpty { get { return oreCarried == 0 && gemsCarried == 0; } } public void AcceptResource(bool isGem) @@ -20,6 +19,14 @@ namespace OpenRa.Game.Traits else oreCarried++; } + public void Deliver(Actor self) + { + self.Owner.GiveCash(oreCarried * Rules.General.GoldValue); + self.Owner.GiveCash(gemsCarried * Rules.General.GemValue); + oreCarried = 0; + gemsCarried = 0; + } + public Order Order(Actor self, int2 xy, bool lmb, Actor underCursor) { if (lmb) return null;