Advertisement
dalvorsn

Untitled

May 11th, 2012
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.66 KB | None | 0 0
  1. SpriteReader = {}
  2.  
  3. function SpriteReader:load(data)
  4.     attr = {version = 0, numberOfSprites = 0, posByte = 1, data = data:read("*a")}
  5.     return setmetatable(attr, {__index = self})
  6. end
  7.  
  8. function SpriteReader:getRanges(byte, signed)
  9.     local min, max = 0, 0
  10.     for var = byte, 1, -1 do
  11.         max = max +(2 ^ (8 * var))
  12.     end
  13.     if(signed)then
  14.         min, max = max/2, -max/2
  15.     end
  16.     return min, not signed and (max - 1) or max
  17. end
  18.  
  19. function SpriteReader:readBytes(byte, signed)
  20.     local min, _ = self:getRanges(byte, signed)
  21.     local value = self:nextByte()
  22.     for var = 2, byte do
  23.         value = value + (self:nextByte() ^ 2)
  24.     end
  25.     return value
  26. end
  27.  
  28. function SpriteReader:nextByte()
  29.     local byte = self.data:byte(self.posByte)
  30.     self.posByte = self.posByte + 1
  31.     return tonumber(byte)
  32. end
  33.  
  34. function SpriteReader:getUint64()
  35.     return self:readBytes(8, false)
  36. end
  37.  
  38. function SpriteReader:getInt64()
  39.     return self:readBytes(8, true)
  40. end
  41.  
  42. function SpriteReader:getUint32()
  43.     return self:readBytes(4, false)
  44. end
  45.  
  46. function SpriteReader:getInt32()
  47.     return self:readBytes(4, true)
  48. end
  49.  
  50. function SpriteReader:getUint16()
  51.     return self:readBytes(2, false)
  52. end
  53.  
  54. function SpriteReader:getInt16()
  55.     return self:readBytes(2, true)
  56. end
  57.  
  58. function SpriteReader:getUint8()
  59.     return self:readBytes(1, false)
  60. end
  61.  
  62. function SpriteReader:getInt8()
  63.     return self:readBytes(1, true)
  64. end
  65.  
  66. function SpriteReader:closeData()
  67.     return self.data:close()
  68. end
  69.  
  70.     local file = io.open("./ka.spr", "rb")
  71.     reader = SpriteReader:load(file)
  72.     reader.version = reader:getUint32()
  73.     reader.numberOfSprites = reader:getUint16()
  74.     io.write("Version: ",reader.version,"\nNumber Of Sprites: ", reader.numberOfSprites)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement