コード例 #1
0
 public static void SaveData(int body, string path)
 {
     for (int i = 0; i <= 21; i++)
     {
         for (int j = 0; j <= 4; j++)
         {
             byte[] data = AnimationsXNA.GetData(body, i, j, 0, false);
             if (data != null)
             {
                 FileStream   stream = new FileStream(string.Format(path + "\\{0}-{1}-{2}", body, i, j), FileMode.Create);
                 BinaryWriter w      = new BinaryWriter(stream);
                 w.Write(data);
                 w.Close();
             }
         }
     }
 }
コード例 #2
0
        private static void transform(BinaryReader bin)
        {
            FrameXNA[] frames = AnimationsXNA.GetAnimation(bin);

            BitStream CellMatrixStream        = new BitStream();
            BitStream CellDeltaEncodingStream = new BitStream();
            BitStream CellDataStream          = new BitStream();

            int width, height, xoffset, yoffset;

            getWidthHeight(frames, out width, out height, out xoffset, out yoffset);

            uint[][] pixeldata = new uint[frames.Length][];
            for (int i = 0; i < frames.Length; i++)
            {
                pixeldata[i] = getPixelData(frames[i], width, height,
                                            xoffset - frames[i].Center.X,
                                            (height + (yoffset - frames[i].Center.Y)) - frames[i].Texture.Height);
            }

            uint[] palette           = new uint[0x100];
            uint[] palettesortvalues = new uint[0x100];
            uint[] paletteSimilars   = new uint[0x100];
            for (int i = 0; i < frames.Length; i++)
            {
                getPalette(pixeldata[i], palette, palettesortvalues);
            }
            palettesortvalues[0] = int.MaxValue;
            sortPalette(palette, palettesortvalues);
            // findSimilarShadesInPalette(palette, ref paletteSimilars);
            // combinePalette(palette, paletteSimilars, palettesortvalues);
            // sortPalette(palette, palettesortvalues, paletteSimilars);

            // debug = count num of pixels using top 16 colors.
            int topsixteen = 0; int others = 0;

            for (int i = 1; i < 17; i++)
            {
                topsixteen += (int)palettesortvalues[i];
            }
            for (int i = 17; i < 256; i++)
            {
                others += (int)palettesortvalues[i];
            }

            byte[][] framedata = new byte[frames.Length][];
            for (int i = 0; i < frames.Length; i++)
            {
                framedata[i] = palettedFrame(pixeldata[i], palette, paletteSimilars);
            }

            for (int i = 0; i < frames.Length; i++)
            {
                byte[][] framecells = getCells(framedata[i], width);
                byte[][] lastFrameCells;
                if (i > 0)
                {
                    lastFrameCells = getCells(buildFrame(width, height, CellMatrixStream, CellDeltaEncodingStream, CellDataStream), width);
                }
                else
                {
                    lastFrameCells = new byte[0][];
                }
                getStreams(framecells, lastFrameCells, i, width, palette, CellMatrixStream, CellDeltaEncodingStream, CellDataStream);
                byte[]   newframedata = buildFrame(width, height, CellMatrixStream, CellDeltaEncodingStream, CellDataStream);
                FrameXNA frame        = new FrameXNA(AnimationsXNA.DEBUG_GFX, palette, newframedata, width, height, 0, 0);
                frame.Texture.Save("test.bmp", Microsoft.Xna.Framework.Graphics.ImageFileFormat.Bmp);
            }
            int size =
                (int)(CellMatrixStream.Length >> 3) +
                (int)(CellDeltaEncodingStream.Length >> 3) +
                (int)(CellDataStream.Length >> 3);
        }