diff --git a/OpenRA.Mods.RA/Effects/CashTick.cs b/OpenRA.Mods.RA/Effects/CashTick.cs index 28fa8f24d7..d722aaaf24 100644 --- a/OpenRA.Mods.RA/Effects/CashTick.cs +++ b/OpenRA.Mods.RA/Effects/CashTick.cs @@ -19,7 +19,7 @@ namespace OpenRA.Mods.RA.Effects class CashTick : IEffect { string s; - int lifetime = 50; + int lifetime; int remaining; int velocity; float2 pos; diff --git a/OpenRA.Mods.RA/OreRefinery.cs b/OpenRA.Mods.RA/OreRefinery.cs index 6657e67826..055f8eb5fe 100644 --- a/OpenRA.Mods.RA/OreRefinery.cs +++ b/OpenRA.Mods.RA/OreRefinery.cs @@ -17,6 +17,7 @@ using OpenRA.Traits; using OpenRA.Mods.RA.Render; using OpenRA.Mods.RA.Move; using System.Drawing; +using OpenRA.Mods.RA.Effects; namespace OpenRA.Mods.RA { @@ -25,10 +26,11 @@ namespace OpenRA.Mods.RA public readonly int PipCount = 0; public readonly PipType PipColor = PipType.Red; public readonly int2 DockOffset = new int2 (1, 2); - public readonly int Capacity = 0; - public readonly int ProcessTick = 25; - public readonly int ProcessAmount = 50; - public readonly int LowPowerProcessTick = 50; + + public readonly bool ShowTicks = true; + public readonly int TickLifetime = 30; + public readonly int TickVelocity = 2; + public readonly int TickRate = 10; public virtual object Create(ActorInitializer init) { return new OreRefinery(init.self, this); } } @@ -38,7 +40,10 @@ namespace OpenRA.Mods.RA readonly Actor self; readonly OreRefineryInfo Info; PlayerResources PlayerResources; - + + int currentDisplayTick = 0; + int currentDisplayValue = 0; + [Sync] public int Ore = 0; @@ -74,6 +79,8 @@ namespace OpenRA.Mods.RA public void GiveOre(int amount) { PlayerResources.GiveOre(amount); + if (Info.ShowTicks) + currentDisplayValue += amount; } void CancelDock(Actor self) @@ -93,6 +100,15 @@ namespace OpenRA.Mods.RA self.Trait().CancelCustomAnim(self); dockedHarv = null; } + + if (Info.ShowTicks && currentDisplayValue > 0 && --currentDisplayTick <= 0) + { + var temp = currentDisplayValue; + if (self.World.LocalPlayer != null && self.Owner.Stances[self.World.LocalPlayer] == Stance.Ally) + self.World.AddFrameEndTask(w => w.Add(new CashTick(temp, Info.TickLifetime, Info.TickVelocity, self.CenterLocation, self.Owner.ColorRamp.GetColor(0)))); + currentDisplayTick = Info.TickRate; + currentDisplayValue = 0; + } } public void Damaged (Actor self, AttackInfo e)