diff --git a/OpenRA.Utility/Command.cs b/OpenRA.Utility/Command.cs index 636c09e174..678a9ce830 100644 --- a/OpenRA.Utility/Command.cs +++ b/OpenRA.Utility/Command.cs @@ -55,7 +55,7 @@ namespace OpenRA.Utility ShpWriter.Write(destStream, width, srcImage.Height, srcImage.ToFrames(width)); - Console.WriteLine(dest+" saved."); + Console.WriteLine(dest + " saved."); } static IEnumerable ToFrames(this Bitmap bitmap, int width) @@ -82,15 +82,16 @@ namespace OpenRA.Utility var dest = Path.ChangeExtension(src, ".png"); var srcImage = ShpReader.Load(src); - int[] ShadowIndex = { }; + var shadowIndex = new int[] { }; if (args.Contains("--noshadow")) { - Array.Resize(ref ShadowIndex, ShadowIndex.Length + 3); - ShadowIndex[ShadowIndex.Length - 1] = 1; - ShadowIndex[ShadowIndex.Length - 2] = 3; - ShadowIndex[ShadowIndex.Length - 1] = 4; + Array.Resize(ref shadowIndex, shadowIndex.Length + 3); + shadowIndex[shadowIndex.Length - 1] = 1; + shadowIndex[shadowIndex.Length - 2] = 3; + shadowIndex[shadowIndex.Length - 1] = 4; } - var palette = Palette.Load(args[2], ShadowIndex); + + var palette = Palette.Load(args[2], shadowIndex); using (var bitmap = new Bitmap(srcImage.ImageCount * srcImage.Width, srcImage.Height, PixelFormat.Format8bppIndexed)) { @@ -112,48 +113,51 @@ namespace OpenRA.Utility } bitmap.Save(dest); - Console.WriteLine(dest+" saved"); + Console.WriteLine(dest + " saved"); } } public static void ConvertR8ToPng(string[] args) { var srcImage = new R8Reader(File.OpenRead(args[1])); - int[] ShadowIndex = { }; + var shadowIndex = new int[] { }; if (args.Contains("--noshadow")) { - Array.Resize(ref ShadowIndex, ShadowIndex.Length + 1); - ShadowIndex[ShadowIndex.Length - 1] = 3; + Array.Resize(ref shadowIndex, shadowIndex.Length + 1); + shadowIndex[shadowIndex.Length - 1] = 3; } - var palette = Palette.Load(args[2], ShadowIndex); + + var palette = Palette.Load(args[2], shadowIndex); var startFrame = int.Parse(args[3]); var endFrame = int.Parse(args[4]) + 1; var filename = args[5]; - var FrameCount = endFrame - startFrame; + var frameCount = endFrame - startFrame; var frame = srcImage[startFrame]; - var bitmap = new Bitmap(frame.FrameSize.Width * FrameCount, frame.FrameSize.Height, PixelFormat.Format8bppIndexed); + var bitmap = new Bitmap(frame.FrameSize.Width * frameCount, frame.FrameSize.Height, PixelFormat.Format8bppIndexed); bitmap.Palette = palette.AsSystemPalette(); int x = 0; frame = srcImage[startFrame]; - if (args.Contains("--infantry")) //resorting to RA/CnC compatible counter-clockwise frame order + // resorting to RA/CnC compatible counter-clockwise frame order + if (args.Contains("--infantry")) { - endFrame = startFrame-1; - for (int e = 8; e < FrameCount+1; e=e+8) //assuming 8 facings each animation set + endFrame = startFrame - 1; + + // assuming 8 facings each animation set + for (int e = 8; e < frameCount + 1; e = e + 8) { - - for (int f = startFrame+e-1; f > endFrame; f--) + for (int f = startFrame + e - 1; f > endFrame; f--) { - var OffsetX = frame.FrameSize.Width/2 - frame.Size.Width/2; - var OffsetY = frame.FrameSize.Height/2 - frame.Size.Height/2; + var offsetX = frame.FrameSize.Width / 2 - frame.Size.Width / 2; + var offsetY = frame.FrameSize.Height / 2 - frame.Size.Height / 2; - Console.WriteLine("calculated OffsetX: {0}", OffsetX); - Console.WriteLine("calculated OffsetY: {0}", OffsetY); + Console.WriteLine("calculated OffsetX: {0}", offsetX); + Console.WriteLine("calculated OffsetY: {0}", offsetY); - var data = bitmap.LockBits(new Rectangle(x+OffsetX, 0+OffsetY, frame.Size.Width, frame.Size.Height), ImageLockMode.WriteOnly, + var data = bitmap.LockBits(new Rectangle(x + offsetX, 0 + offsetY, frame.Size.Width, frame.Size.Height), ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed); for (var i = 0; i < frame.Size.Height; i++) @@ -167,26 +171,26 @@ namespace OpenRA.Utility frame = srcImage[f]; Console.WriteLine("f: {0}", f); } - endFrame = startFrame+e-1; - frame = srcImage[startFrame+e]; + + endFrame = startFrame + e - 1; + frame = srcImage[startFrame + e]; Console.WriteLine("e: {0}", e); - Console.WriteLine("FrameCount: {0}", FrameCount); + Console.WriteLine("FrameCount: {0}", frameCount); } } - //resorting to RA/CnC compatible counter-clockwise frame order else if (args.Contains("--vehicle") || args.Contains("--projectile")) { frame = srcImage[startFrame]; - for (int f = endFrame-1; f > startFrame-1; f--) + for (int f = endFrame - 1; f > startFrame - 1; f--) { - var OffsetX = frame.FrameSize.Width/2 - frame.Offset.X; - var OffsetY = frame.FrameSize.Height/2 - frame.Offset.Y; + var offsetX = frame.FrameSize.Width / 2 - frame.Offset.X; + var offsetY = frame.FrameSize.Height / 2 - frame.Offset.Y; - Console.WriteLine("calculated OffsetX: {0}", OffsetX); - Console.WriteLine("calculated OffsetY: {0}", OffsetY); + Console.WriteLine("calculated OffsetX: {0}", offsetX); + Console.WriteLine("calculated OffsetY: {0}", offsetY); - var data = bitmap.LockBits(new Rectangle(x+OffsetX, 0+OffsetY, frame.Size.Width, frame.Size.Height), ImageLockMode.WriteOnly, + var data = bitmap.LockBits(new Rectangle(x + offsetX, 0 + offsetY, frame.Size.Width, frame.Size.Height), ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed); for (var i = 0; i < frame.Size.Height; i++) @@ -200,19 +204,19 @@ namespace OpenRA.Utility frame = srcImage[f]; } } - else if (args.Contains("--turret")) //resorting to RA/CnC compatible counter-clockwise frame order + else if (args.Contains("--turret")) { frame = srcImage[startFrame]; - for (int f = endFrame-1; f > startFrame-1; f--) + for (int f = endFrame - 1; f > startFrame - 1; f--) { - var OffsetX = Math.Abs(frame.Offset.X); - var OffsetY = frame.FrameSize.Height - Math.Abs(frame.Offset.Y); + var offsetX = Math.Abs(frame.Offset.X); + var offsetY = frame.FrameSize.Height - Math.Abs(frame.Offset.Y); - Console.WriteLine("calculated OffsetX: {0}", OffsetX); - Console.WriteLine("calculated OffsetY: {0}", OffsetY); + Console.WriteLine("calculated OffsetX: {0}", offsetX); + Console.WriteLine("calculated OffsetY: {0}", offsetY); - var data = bitmap.LockBits(new Rectangle(x+OffsetX, 0+OffsetY, frame.Size.Width, frame.Size.Height), ImageLockMode.WriteOnly, + var data = bitmap.LockBits(new Rectangle(x + offsetX, 0 + offsetY, frame.Size.Width, frame.Size.Height), ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed); for (var i = 0; i < frame.Size.Height; i++) @@ -226,21 +230,22 @@ namespace OpenRA.Utility frame = srcImage[f]; } } - else if (args.Contains("--wall")) //complex resorting to RA/CnC compatible frame order + else if (args.Contains("--wall")) { - int[] D2kBrikFrameOrder = {1, 4, 2, 12, 5, 6, 16, 9, 3, 13, 7, 8, 14, 10, 11, 15, 17, 20, 18, 28, 21, 22, 32, 25, 19, 29, 23, 24, 30, 26, 27, 31}; - foreach (int o in D2kBrikFrameOrder) + // complex resorting to RA/CnC compatible frame order + var d2kBrikFrameOrder = new int[] { 1, 4, 2, 12, 5, 6, 16, 9, 3, 13, 7, 8, 14, 10, 11, 15, 17, 20, 18, 28, 21, 22, 32, 25, 19, 29, 23, 24, 30, 26, 27, 31 }; + foreach (int o in d2kBrikFrameOrder) { - int f = startFrame -1 + o; + var f = startFrame - 1 + o; frame = srcImage[f]; - var OffsetX = Math.Abs(frame.Offset.X); - var OffsetY = frame.FrameSize.Height - Math.Abs(frame.Offset.Y); - Console.WriteLine("calculated OffsetX: {0}", OffsetX); - Console.WriteLine("calculated OffsetY: {0}", OffsetY); + var offsetX = Math.Abs(frame.Offset.X); + var offsetY = frame.FrameSize.Height - Math.Abs(frame.Offset.Y); + Console.WriteLine("calculated OffsetX: {0}", offsetX); + Console.WriteLine("calculated OffsetY: {0}", offsetY); - var data = bitmap.LockBits(new Rectangle(x+OffsetX, 0+OffsetY, frame.Size.Width, frame.Size.Height), ImageLockMode.WriteOnly, + var data = bitmap.LockBits(new Rectangle(x + offsetX, 0 + offsetY, frame.Size.Width, frame.Size.Height), ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed); for (var i = 0; i < frame.Size.Height; i++) @@ -262,7 +267,7 @@ namespace OpenRA.Utility { for (int w = 0; w < 20; w++) { - if (h * 20 + w < FrameCount) + if (h * 20 + w < frameCount) { Console.WriteLine(f); frame = srcImage[f]; @@ -279,6 +284,7 @@ namespace OpenRA.Utility } } } + bitmap = tileset; } else @@ -286,22 +292,23 @@ namespace OpenRA.Utility for (int f = startFrame; f < endFrame; f++) { frame = srcImage[f]; - int OffsetX = 0; - int OffsetY = 0; + var offsetX = 0; + var offsetY = 0; if (args.Contains("--infantrydeath")) { - OffsetX = frame.FrameSize.Width/2 - frame.Size.Width/2; - OffsetY = frame.FrameSize.Height/2 - frame.Size.Height/2; + offsetX = frame.FrameSize.Width / 2 - frame.Size.Width / 2; + offsetY = frame.FrameSize.Height / 2 - frame.Size.Height / 2; } else if (args.Contains("--building")) { - OffsetX = Math.Abs(frame.Offset.X); - OffsetY = frame.FrameSize.Height - Math.Abs(frame.Offset.Y); + offsetX = Math.Abs(frame.Offset.X); + offsetY = frame.FrameSize.Height - Math.Abs(frame.Offset.Y); } - Console.WriteLine("calculated OffsetX: {0}", OffsetX); - Console.WriteLine("calculated OffsetY: {0}", OffsetY); - var data = bitmap.LockBits(new Rectangle(x+OffsetX, 0+OffsetY, frame.Size.Width, frame.Size.Height), ImageLockMode.WriteOnly, + Console.WriteLine("calculated OffsetX: {0}", offsetX); + Console.WriteLine("calculated OffsetY: {0}", offsetY); + + var data = bitmap.LockBits(new Rectangle(x + offsetX, 0 + offsetY, frame.Size.Width, frame.Size.Height), ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed); for (var i = 0; i < frame.Size.Height; i++) @@ -313,8 +320,9 @@ namespace OpenRA.Utility x += frame.FrameSize.Width; } } - bitmap.Save(filename+".png"); - Console.WriteLine(filename+".png saved"); + + bitmap.Save(filename + ".png"); + Console.WriteLine(filename + ".png saved"); } public static void ConvertTmpToPng(string[] args) @@ -322,21 +330,21 @@ namespace OpenRA.Utility var mods = args[1].Split(','); var theater = args[2]; var templateNames = args.Skip(3); - int[] ShadowIndex = { 3, 4 }; + var shadowIndex = new int[] { 3, 4 }; var manifest = new Manifest(mods); FileSystem.LoadFromManifest(manifest); - var tileset = manifest.TileSets.Select( a => new TileSet(a) ) - .FirstOrDefault( ts => ts.Name == theater ); + var tileset = manifest.TileSets.Select(a => new TileSet(a)) + .FirstOrDefault(ts => ts.Name == theater); if (tileset == null) throw new InvalidOperationException("No theater named '{0}'".F(theater)); tileset.LoadTiles(); - var palette = new Palette(FileSystem.Open(tileset.Palette), ShadowIndex); + var palette = new Palette(FileSystem.Open(tileset.Palette), shadowIndex); - foreach( var templateName in templateNames ) + foreach (var templateName in templateNames) { var template = tileset.Templates.FirstOrDefault(tt => tt.Value.Image == templateName); if (template.Value == null) @@ -353,7 +361,7 @@ namespace OpenRA.Utility var dest = args[2]; Dune2ShpReader srcImage = null; - using(var s = File.OpenRead(src)) + using (var s = File.OpenRead(src)) srcImage = new Dune2ShpReader(s); var size = srcImage.First().Size; @@ -383,9 +391,9 @@ namespace OpenRA.Utility if (src == null) throw new InvalidOperationException("File not found: {0}".F(f)); var data = src.ReadAllBytes(); - var output = args.Contains("--userdir") ? Platform.SupportDir+f : f; + var output = args.Contains("--userdir") ? Platform.SupportDir + f : f; File.WriteAllBytes(output, data); - Console.WriteLine(output+" saved."); + Console.WriteLine(output + " saved."); } } @@ -401,7 +409,7 @@ namespace OpenRA.Utility public static void RemapShp(string[] args) { - var remap = new Dictionary(); + var remap = new Dictionary(); /* the first 4 entries are fixed */ for (var i = 0; i < 4; i++) @@ -419,17 +427,17 @@ namespace OpenRA.Utility FileSystem.LoadFromManifest(Game.modData.Manifest); Rules.LoadRules(Game.modData.Manifest, new Map()); var destPaletteInfo = Rules.Info["player"].Traits.Get(); - int[] destRemapIndex = destPaletteInfo.RemapIndex; + var destRemapIndex = destPaletteInfo.RemapIndex; + var shadowIndex = new int[] { }; - int[] ShadowIndex = { }; // the remap range is always 16 entries, but their location and order changes for (var i = 0; i < 16; i++) remap[PlayerColorRemap.GetRemapIndex(srcRemapIndex, i)] = PlayerColorRemap.GetRemapIndex(destRemapIndex, i); // map everything else to the best match based on channel-wise distance - var srcPalette = Palette.Load(args[1].Split(':')[1], ShadowIndex); - var destPalette = Palette.Load(args[2].Split(':')[1], ShadowIndex); + var srcPalette = Palette.Load(args[1].Split(':')[1], shadowIndex); + var destPalette = Palette.Load(args[2].Split(':')[1], shadowIndex); var fullIndexRange = Exts.MakeArray(256, x => x); @@ -444,10 +452,9 @@ namespace OpenRA.Utility using (var destStream = File.Create(args[4])) ShpWriter.Write(destStream, srcImage.Width, srcImage.Height, - srcImage.Frames.Select( im => im.Image.Select(px => (byte)remap[px]).ToArray() )); + srcImage.Frames.Select(im => im.Image.Select(px => (byte)remap[px]).ToArray())); } - //This is needed because the run and shoot animation are next to each other for each sequence in RA/CnC, but not in D2k. public static void TransposeShp(string[] args) { var srcImage = ShpReader.Load(args[1]); @@ -455,18 +462,18 @@ namespace OpenRA.Utility var srcFrames = srcImage.Frames.ToArray(); var destFrames = srcImage.Frames.ToArray(); - for( var z = 3; z < args.Length - 2; z += 3 ) + for (var z = 3; z < args.Length - 2; z += 3) { var start = int.Parse(args[z]); - var m = int.Parse(args[z+1]); - var n = int.Parse(args[z+2]); + var m = int.Parse(args[z + 1]); + var n = int.Parse(args[z + 2]); - for( var i = 0; i < m; i++ ) - for( var j = 0; j < n; j++ ) - destFrames[ start + i*n + j ] = srcFrames[ start + j*m + i ]; + for (var i = 0; i < m; i++) + for (var j = 0; j < n; j++) + destFrames[start + i * n + j] = srcFrames[start + j * m + i]; } - using( var destStream = File.Create(args[2]) ) + using (var destStream = File.Create(args[2])) ShpWriter.Write(destStream, srcImage.Width, srcImage.Height, destFrames.Select(f => f.Image)); } diff --git a/OpenRA.Utility/Program.cs b/OpenRA.Utility/Program.cs index d891ef2218..9f63d468eb 100644 --- a/OpenRA.Utility/Program.cs +++ b/OpenRA.Utility/Program.cs @@ -38,10 +38,10 @@ namespace OpenRA.Utility try { - var action = Exts.WithDefault( _ => PrintUsage(), () => actions[args[0]]); + var action = Exts.WithDefault(_ => PrintUsage(), () => actions[args[0]]); action(args); } - catch( Exception e ) + catch (Exception e) { Log.AddChannel("utility", "utility.log"); Log.Write("utility", "Received args: {0}", args.JoinWith(" "));