def __init__(self, typeId, size, data): Block.__init__(self, typeId, size, data) self.magic = str(data[0:4]) self.gameId = read32(data, 4) versionData = read16(data, 8) self.versionMajor = versionData >> 12 # First 4 bits self.versionMinor = (versionData >> 5) & 0x7F # Middle 7 bits self.versionIncrement = versionData & 0x1F # Last 5 bits self.turn = read16(data, 10) self.year = 2400 + self.turn playerData = read16(data, 12) self.salt = playerData >> 5 # First 11 bits self.playerIndex = playerData & 0x1F # Last 5 bits flags = data[15] self.turnSubmitted = (flags & (1 << 0)) == 1 self.hostUsing = (flags & (1 << 1)) == 1 self.multipleTurns = (flags & (1 << 2)) == 1 self.gameOver = (flags & (1 << 3)) == 1 self.shareware = (flags & (1 << 4)) == 1 pass
def __init__(self, typeId, size, data): Block.__init__(self, typeId, size, data) # TODO bytes 0-3 self.universeSize = read16(data, 4) # Uses all 16 bits? self.density = read16(data, 6) # Uses all 16 bits? self.playerCount = read16(data, 8) # Uses all 16 bits? self.planetCount = read16(data, 10) self.startingDistance = read32(data, 12) # 16 bits? self.gameSettings = read16(data, 16) """ Determined bits of game settings: Max Minerals - 0000000000000001 Slow tech advances - 0000000000000010 Accel. BBS play - 0000000000100000 No random events - 0000000010000000 Computer Alliances - 0000000000010000 Public scores - 0000000001000000 Galaxy Clumping - 0000000100000000 Single player (?) - 0000000000000100 What is bit 4? 0000000000001000 """ # TODO bytes 18-31 self.gameName = str(data[32:64]) # This is a list of planets with their nameId, x, and y coordinates self.planets = [] pass