diff --git a/OpenRa.Game/Game.cs b/OpenRa.Game/Game.cs index 5ac0eed4f4..09c24cccf1 100644 --- a/OpenRa.Game/Game.cs +++ b/OpenRa.Game/Game.cs @@ -74,6 +74,10 @@ namespace OpenRa.Game Game.world.Add(a); } + var worldActor = new Actor(null, new int2(int.MaxValue, int.MaxValue), null); + worldActor.traits.Add(new Traits.WaterPaletteRotation(worldActor)); + Game.world.Add(worldActor); + Rules.Map.InitOreDensity(); worldRenderer = new WorldRenderer(renderer); diff --git a/OpenRa.Game/OpenRa.Game.csproj b/OpenRa.Game/OpenRa.Game.csproj index ca5f68d865..108df335a8 100644 --- a/OpenRa.Game/OpenRa.Game.csproj +++ b/OpenRa.Game/OpenRa.Game.csproj @@ -201,6 +201,7 @@ + diff --git a/OpenRa.Game/Traits/WaterPaletteRotation.cs b/OpenRa.Game/Traits/WaterPaletteRotation.cs new file mode 100644 index 0000000000..02f7cf84b5 --- /dev/null +++ b/OpenRa.Game/Traits/WaterPaletteRotation.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Drawing; + +namespace OpenRa.Game.Traits +{ + class WaterPaletteRotation : ITick, IPaletteModifier + { + public WaterPaletteRotation(Actor self) { } + + float t = 0; + public void Tick(Actor self) + { + t += .25f; + } + + public void AdjustPalette(Bitmap b) + { + var rotate = (int)t % 7; + using (var bitmapCopy = new Bitmap(b)) + for (int j = 0; j < 16; j++) + for (int i = 0; i < 7; i++) + b.SetPixel(0x60 + (rotate + i) % 7, j, bitmapCopy.GetPixel(0x60 + i, j)); + } + } +}