Ejemplo n.º 1
0
 private void validateTileSizeForDimensions(HffHeader header)
 {
     if (header.width % header.tileSize != 0 || header.height % header.tileSize != 0)
     {
         throw new Exception("Map dimensions do not fit the tilesize");
     }
 }
Ejemplo n.º 2
0
        private float readValueFromReader(EndianBinaryReader reader, HffHeader header, uint xLocation, uint yLocation)
        {
            float value;

            if (header.floatingPointFlag)
            {
                float readSingleValue = reader.ReadSingle();
                debugLine("v: " + readSingleValue);
                value = header.verticalScale * readSingleValue + header.verticalOffset;
                debugLine("cv: " + value);
            }
            else
            {
                switch (header.dataSize)
                {
                    case 1:
                        sbyte readSbyteValue = reader.ReadSByte();
                        debugLine("v: " + readSbyteValue);
                        value = header.verticalScale * readSbyteValue + header.verticalOffset;
                        debugLine("cv: " + value);
                        break;
                    case 2:
                        ushort readShortValue = reader.ReadUInt16();
                        debugLine("v: " + readShortValue);
                        value = header.verticalScale * readShortValue + header.verticalOffset;
                        debugLine("cv: " + value);
                        break;
                    default: throw new Exception("Invalid pixel data at x: " + xLocation + ", y: " + yLocation);
                }
            }
            return value;
        }
Ejemplo n.º 3
0
 private void readTile(int x, int y, HffHeader header, EndianBinaryReader reader, HffFile file)
 {
     for (int j = 1; j <= header.tileSize; j++)
     {
         for (int i = 1; i <= header.tileSize; i++)
         {
             uint xLocation = (uint)((x * header.tileSize) + i);
             uint yLocation = (uint)((y * header.tileSize) + j);
             float value = readValueFromReader(reader, header, xLocation, yLocation);
             file.addPixel(new HffPixelInfo(xLocation, yLocation, value));
         }
     }
 }
Ejemplo n.º 4
0
        private void readTiledData(EndianBinaryReader reader, HffHeader header, HffFile file)
        {
            validateTileSizeForDimensions(header);

            uint horizontalTiles = header.width / header.tileSize;
            uint verticalTiles = header.height / header.tileSize;

            for (int y = 0; y < verticalTiles; y++)
            {
                for (int x = 0; x < horizontalTiles; x++)
                {
                    readTile(x, y, header, reader, file);
                }
            }
        }
Ejemplo n.º 5
0
        private void readConventionalData(EndianBinaryReader reader, HffHeader header, HffFile file)
        {
            uint totalPixels = header.width * header.height;
            uint xLocation = 1;
            uint yLocation = 1;
            for (int i = 0; i < totalPixels; i++)
            {
                float value = readValueFromReader(reader, header, xLocation, yLocation);
                file.addPixel(new HffPixelInfo(xLocation, yLocation, value));

                xLocation++;
                if (xLocation > header.width)
                {
                    xLocation = 1;
                    yLocation++;
                }
            }

            debugLine("pixel count: " + file.pixels.Count());
        }