def read(self, reader): ObjectLoader.read(self, reader) self.width = reader.readInt(True) self.height = reader.readInt(True) self.font = reader.readInt(True) self.color = reader.readColor() self.flags = reader.readInt(True) checkDefault(reader, reader.readInt(True), 0) self.items = [self.new(Paragraph, reader) for _ in xrange(reader.readInt(True))]
def read(self, reader): self.controlType = reader.readInt() count = reader.readInt(True) # 16 checkDefault(reader, count, 16) self.up = Key(reader.readInt()) self.down = Key(reader.readInt()) self.left = Key(reader.readInt()) self.right = Key(reader.readInt()) self.button1 = Key(reader.readInt()) self.button2 = Key(reader.readInt()) self.button3 = Key(reader.readInt()) self.button4 = Key(reader.readInt()) for _ in xrange(8): checkDefault(reader, reader.readInt(), 0)
def read(self, reader): header = reader.read(8) # read file header if header != PACK_HEADER: raise NotImplementedError('pack data header invalid') headerSize = reader.readInt() # total header size, including PACK_HEADER checkDefault(reader, headerSize, 32) dataSize = reader.readInt() # total pack data size + 32 self.formatVersion = reader.readInt() checkDefault(reader, reader.readInt(), 0) checkDefault(reader, reader.readInt(), 0) count = reader.readInt() offset = reader.tell() for _ in xrange(count): if not checkSize(reader, 2): break value = reader.readShort(True) if not checkSize(reader, value): break reader.skipBytes(value) if not checkSize(reader, 4): break value = reader.readInt(True) if not checkSize(reader, value): break reader.skipBytes(value) hasBingo = reader.read(4) != GAME_HEADER reader.seek(offset) self.items = [self.new(PackFile, reader, hasBingo = hasBingo) for _ in xrange(count)]
def read(self, reader): self.handle = reader.readInt() self.name = reader.read(reader.readInt()) self.size = (reader.readInt(), reader.readInt()) self.background = reader.readColor() self.flags.setFlags(reader.readInt(True)) self.maxObjects = reader.readInt() self.password = reader.read(reader.readInt()) checkDefault(reader, reader.readInt(), 0) self.lastViewedX = reader.readInt() self.lastViewedY = reader.readInt() self.palette = [reader.readColor() for _ in xrange(reader.readInt())] self.stampHandle = reader.readInt() self.activeLayer = reader.readInt() self.layers = [self.new(Layer, reader) for _ in xrange(reader.readInt())] if reader.readByte() != 0: self.fadeIn = self.new(Transition, reader) if reader.readByte() != 0: self.fadeOut = self.new(Transition, reader) self.items = items = [self.new(FrameItem, reader) for _ in xrange(reader.readInt())] self.folders = [self.new(ItemFolder, reader) for _ in xrange(reader.readInt(True))] self.instances = [self.new(FrameInstance, reader) for _ in xrange(reader.readInt())] self.events = self.new(Events, reader) self.chunks = self.new(ChunkList, reader)
def read(self, reader): header = reader.read(8) # read file header if header != PACK_HEADER: raise NotImplementedError('pack data header invalid') headerSize = reader.readInt() # total header size, including PACK_HEADER checkDefault(reader, headerSize, 32) dataSize = reader.readInt() # total pack data size + 32 self.formatVersion = reader.readInt() checkDefault(reader, reader.readInt(), 0) checkDefault(reader, reader.readInt(), 0) count = reader.readInt() offset = reader.tell() for _ in xrange(count): if not checkSize(reader, 2): break value = reader.readShort(True) if not checkSize(reader, value): break reader.skipBytes(value) if not checkSize(reader, 4): break value = reader.readInt(True) if not checkSize(reader, value): break reader.skipBytes(value) hasBingo = reader.read(4) != GAME_HEADER reader.seek(offset) self.items = [ self.new(PackFile, reader, hasBingo=hasBingo) for _ in xrange(count) ]
def read(self, reader): ObjectLoader.read(self, reader) self.width = reader.readInt(True) self.height = reader.readInt(True) self.questionFont = reader.readInt(True) self.questionColor = reader.readColor() checkDefault(reader, reader.readInt(True), 37) self.questionFlags = reader.readInt(True) # add relief? checkDefault(reader, reader.readInt(True), 1) # question count? self.question = reader.read(reader.readInt(True)) checkDefault(reader, reader.readInt(True), 0) self.answerFont = reader.readInt(True) self.answerColor = reader.readColor() checkDefault(reader, reader.readInt(True), 37) self.answerFlags = reader.readInt(True) # add relief? self.items = [self.new(Paragraph, reader) for _ in xrange(reader.readInt(True))]
def read(self, reader): start = reader.tell() header = reader.read(8) # read file header if header != PACK_HEADER: raise NotImplementedError('pack data header invalid') headerSize = reader.readInt() # total header size, including PACK_HEADER checkDefault(reader, headerSize, 32) dataSize = reader.readInt() # total pack data size + 32 reader.seek(start + dataSize - 32) if reader.read(4) == UNICODE_GAME_HEADER: self.settings['unicode'] = True reader.seek(start + 16) self.formatVersion = reader.readInt() # actually hash? checkDefault(reader, reader.readInt(), 0) checkDefault(reader, reader.readInt(), 0) count = reader.readInt() offset = reader.tell() for _ in xrange(count): if not checkSize(reader, 2): break value = reader.readShort(True) if not checkSize(reader, value): break reader.skipBytes(value) if not checkSize(reader, 4): break value = reader.readInt(True) if not checkSize(reader, value): break reader.skipBytes(value) header = reader.read(4) hasBingo = header not in (GAME_HEADER, UNICODE_GAME_HEADER) reader.seek(offset) self.items = [ self.new(PackFile, reader, hasBingo=hasBingo) for _ in xrange(count) ]
def read(self, reader): start = reader.tell() header = reader.read(8) # read file header if header != PACK_HEADER: raise NotImplementedError("pack data header invalid") headerSize = reader.readInt() # total header size, including PACK_HEADER checkDefault(reader, headerSize, 32) dataSize = reader.readInt() # total pack data size + 32 reader.seek(start + dataSize - 32) if reader.read(4) == UNICODE_GAME_HEADER: self.settings["unicode"] = True reader.seek(start + 16) self.formatVersion = reader.readInt() # actually hash? checkDefault(reader, reader.readInt(), 0) checkDefault(reader, reader.readInt(), 0) count = reader.readInt() offset = reader.tell() for _ in xrange(count): if not checkSize(reader, 2): break value = reader.readShort(True) if not checkSize(reader, value): break reader.skipBytes(value) if not checkSize(reader, 4): break value = reader.readInt(True) if not checkSize(reader, value): break reader.skipBytes(value) header = reader.read(4) hasBingo = header not in (GAME_HEADER, UNICODE_GAME_HEADER) reader.seek(offset) self.items = [self.new(PackFile, reader, hasBingo=hasBingo) for _ in xrange(count)]
def read(self, reader): if reader.read(4) != MFA_MAGIC: raise Exception('mfa header is invalid') self.mfaBuild = reader.readInt() self.product = reader.readInt() self.buildVersion = reader.readInt() self.settings['build'] = self.buildVersion if self.mfaBuild >= MFA_CURRENT_VERSION: self.languageId = reader.readInt() self.name = reader.read(reader.readInt()) self.description = reader.read(reader.readInt()) self.path = reader.read(reader.readInt()) # stamp? stampSize self.stamp = reader.read(reader.readInt()) if reader.read(4) != FONT_BANK: raise Exception('invalid font bank name') self.fonts = self.new(FontBank, reader, compressed = False) if reader.read(4) != SOUND_BANK: raise Exception('invalid sound bank name') self.sounds = self.new(SoundBank, reader, compressed = False) if reader.read(4) != MUSIC_BANK: raise Exception('invalid music bank name') self.music = self.new(MusicBank, reader, compressed = False) if reader.read(4) != IMAGE_BANK: raise Exception('invalid icon bank name') self.icons = self.new(AGMIBank, reader) if reader.read(4) != IMAGE_BANK: raise Exception('invalid image bank name') self.images = self.new(AGMIBank, reader) checkDefault(reader, reader.read(reader.readInt()), self.name) self.author = reader.read(reader.readInt()) checkDefault(reader, reader.read(reader.readInt()), self.description) self.copyright = reader.read(reader.readInt()) self.company = reader.read(reader.readInt()) self.version = reader.read(reader.readInt()) self.windowSize = (reader.readInt(), reader.readInt()) self.borderColor = reader.readColor() self.displaySettings.setFlags(reader.readInt(True)) self.graphicSettings.setFlags(reader.readInt(True)) self.helpFile = reader.read(reader.readInt()) self.vitalizePreview = reader.read(reader.readInt()) self.initialScore = reader.readInt(True) self.initialLifes = reader.readInt(True) self.frameRate = reader.readInt() self.buildType = reader.readInt() self.buildPath = reader.read(reader.readInt()) checkDefault(reader, reader.readInt(), 0) self.commandLine = reader.read(reader.readInt()) self.aboutBox = reader.read(reader.readInt()) checkDefault(reader, reader.readInt(), 0) self.binaryFiles = [reader.read(reader.readInt()) for _ in xrange(reader.readInt())] self.controls = self.new(Controls, reader) menuSize = reader.readInt(True) currentPosition = reader.tell() self.menu = self.new(AppMenu, reader) reader.seek(currentPosition + menuSize) self.windowMenuIndex = reader.readInt() self.menuImages = menuImages = {} for i in xrange(reader.readInt()): id = reader.readInt() menuImages[id] = reader.readInt() self.globalValues = ValueList(reader) self.globalStrings = ValueList(reader) self.globalEvents = reader.read(reader.readInt()) self.graphicMode = reader.readInt() self.iconImages = [reader.readInt() for _ in xrange(reader.readInt())] self.customQualifiers = qualifiers = [] for _ in xrange(reader.readInt()): name = reader.read(reader.readInt()) handle = reader.readInt() qualifiers.append((name, handle)) for _ in xrange(reader.readInt()): handle = reader.readInt() filename = reader.read(reader.readInt()) name = reader.read(reader.readInt()) # KPX_MAGICNUMBER magic = reader.readInt() subType = reader.read(reader.readInt()) self.extensions.append((handle, filename, name, magic, subType)) frameOffsets = [reader.readInt() for _ in xrange(reader.readInt())] nextOffset = reader.readInt() for offset in frameOffsets: reader.seek(offset) self.frames.append(self.new(Frame, reader)) reader.seek(nextOffset) self.chunks = self.new(ChunkList, reader)
def read(self, reader): if reader.read(4) != MFA_MAGIC: raise Exception('mfa header is invalid') self.mfaBuild = reader.readInt() self.product = reader.readInt() self.buildVersion = reader.readInt() if self.mfaBuild >= MFA_CURRENT_VERSION: self.languageId = reader.readInt() self.name = reader.read(reader.readInt()) self.description = reader.read(reader.readInt()) self.path = reader.read(reader.readInt()) # stamp? stampSize self.stamp = reader.read(reader.readInt()) if reader.read(4) != FONT_BANK: raise Exception('invalid font bank name') self.fonts = self.new(FontBank, reader, compressed = False) if reader.read(4) != SOUND_BANK: raise Exception('invalid sound bank name') self.sounds = self.new(SoundBank, reader, compressed = False) if reader.read(4) != MUSIC_BANK: raise Exception('invalid music bank name') self.music = self.new(MusicBank, reader, compressed = False) if reader.read(4) != IMAGE_BANK: raise Exception('invalid icon bank name') self.icons = self.new(AGMIBank, reader) if reader.read(4) != IMAGE_BANK: raise Exception('invalid image bank name') self.images = self.new(AGMIBank, reader) checkDefault(reader, reader.read(reader.readInt()), self.name) self.author = reader.read(reader.readInt()) checkDefault(reader, reader.read(reader.readInt()), self.description) self.copyright = reader.read(reader.readInt()) self.company = reader.read(reader.readInt()) self.version = reader.read(reader.readInt()) self.windowSize = (reader.readInt(), reader.readInt()) self.borderColor = reader.readColor() self.displaySettings.setFlags(reader.readInt(True)) self.graphicSettings.setFlags(reader.readInt(True)) self.helpFile = reader.read(reader.readInt()) self.vitalizePreview = reader.read(reader.readInt()) self.initialScore = reader.readInt(True) self.initialLifes = reader.readInt(True) self.frameRate = reader.readInt() self.buildType = reader.readInt() self.buildPath = reader.read(reader.readInt()) checkDefault(reader, reader.readInt(), 0) self.commandLine = reader.read(reader.readInt()) self.aboutBox = reader.read(reader.readInt()) checkDefault(reader, reader.readInt(), 0) self.binaryFiles = [reader.read(reader.readInt()) for _ in xrange(reader.readInt())] self.controls = self.new(Controls, reader) menuSize = reader.readInt(True) currentPosition = reader.tell() self.menu = self.new(AppMenu, reader) reader.seek(currentPosition + menuSize) self.windowMenuIndex = reader.readInt() self.menuImages = menuImages = {} for i in xrange(reader.readInt()): id = reader.readInt() menuImages[id] = reader.readInt() self.globalValues = ValueList(reader) self.globalStrings = ValueList(reader) self.globalEvents = reader.read(reader.readInt()) self.graphicMode = reader.readInt() self.iconImages = [reader.readInt() for _ in xrange(reader.readInt())] self.customQualifiers = qualifiers = [] for _ in xrange(reader.readInt()): name = reader.read(reader.readInt()) handle = reader.readInt() qualifiers.append((name, handle)) for _ in xrange(reader.readInt()): handle = reader.readInt() filename = reader.read(reader.readInt()) name = reader.read(reader.readInt()) # KPX_MAGICNUMBER magic = reader.readInt() subType = reader.read(reader.readInt()) self.extensions.append((handle, filename, name, magic, subType)) frameOffsets = [reader.readInt() for _ in xrange(reader.readInt())] nextOffset = reader.readInt() for offset in frameOffsets: reader.seek(offset) self.frames.append(self.new(Frame, reader)) reader.seek(nextOffset) self.chunks = self.new(ChunkList, reader)