def load(self, ts_file): # Must be .ts file if path.splitext(ts_file)[1].lower() != ".ts": return False with open(ts_file) as tsf: data = json.load(tsf) print "Tileset Loaded: %s" % (data) # Let TileSet do its thing TileSet.__init__(self, paths.getLevelPath(data['image']), data['tileSize']) # direct store of the terrain border bitmask data terrain = data.get('terrain') if terrain: for t, mask in terrain.iteritems(): if len(mask) >= self.TERRAIN_TILE_COUNT: self.terrain[t] = mask else: print "%s: Terrain %s does not have enough tiles! Found %i, expected %i." % (ts_file, t, len(mask), self.TERRAIN_TILE_COUNT) else: print "%s: No Terrain data found." % (ts_file) # Override filename self.filename = ts_file return True
def load(self, ts_file): # Must be .ts file if path.splitext(ts_file)[1].lower() != ".ts": return False with open(ts_file) as tsf: data = json.load(tsf) print "Tileset Loaded: %s" % (data) # Let TileSet do its thing TileSet.__init__(self, paths.getLevelPath(data['image']), data['tileSize']) # direct store of the terrain border bitmask data terrain = data.get('terrain') if terrain: for t, mask in terrain.iteritems(): if len(mask) >= self.TERRAIN_TILE_COUNT: self.terrain[t] = mask else: print "%s: Terrain %s does not have enough tiles! Found %i, expected %i." % ( ts_file, t, len(mask), self.TERRAIN_TILE_COUNT) else: print "%s: No Terrain data found." % (ts_file) # Override filename self.filename = ts_file return True
def save(self, filename = None): """Save current level state to file.""" if not self.tileset: return False filename = filename if filename else self.lvlFile print "Level saving to %s" % filename with open(paths.getLevelPath(filename), 'w') as level: data = { 'name': self.name, 'tileset': path.basename(self.tileset.filename), 'worldImage': self.imgFile } json.dump(data, level, indent=True) # Save out world image in case it was edited pg.image.save(self._worldImg, paths.getLevelPath(self.imgFile)) return True return False
def save(self, filename=None): """Save current level state to file.""" if not self.tileset: return False filename = filename if filename else self.lvlFile print "Level saving to %s" % filename with open(paths.getLevelPath(filename), 'w') as level: data = { 'name': self.name, 'tileset': path.basename(self.tileset.filename), 'worldImage': self.imgFile } json.dump(data, level, indent=True) # Save out world image in case it was edited pg.image.save(self._worldImg, paths.getLevelPath(self.imgFile)) return True return False
def load(self, filename): """Load a level from the given file.""" # Sanity checks if not filename or len(filename) == 0: return False # Allow from loading from PNG as well as 'lvl' files base, ext = path.splitext(filename) if ext.lower() == ".png": self._worldImg = pg.image.load(paths.getLevelPath(filename)) self.name = path.basename(base) self.name = path.basename(base) self.lvlFile = base + ".lvl" self.imgFile = filename if not self.tileset: raise ValueError("Manual Tileset required when loading Level from image!") elif ext.lower() == ".lvl": # Load from lvl file with open(paths.getLevelPath(filename)) as level: self.lvlFile = filename data = json.load(level) print "Level Loaded: \n%s" % (data) self.name = data['name'] self.imgFile = data['worldImage'] if 'tileset' in data: ts_file = data['tileset'] if path.exists(paths.getLevelPath(ts_file)): self.tileset = AdvancedTileSet(paths.getLevelPath(ts_file)) else: raise ValueError("TileSet %s Not Found!" % ts_file) else: raise ValueError("No TileSet Info Found!") if path.exists(paths.getLevelPath(self.imgFile)): self._worldImg = pg.image.load(paths.getLevelPath(self.imgFile)) else: raise ValueError("World Image %s Not Found!" % self.imgFile) else: return False # pygame doesn't allow you to arbitrarily scale surfaces on blit, # so we must prescale the tileset to the tile size we want. if self.tileset.tileSize[0] != Level.TILE_WIDTH or self.tileset.tileSize[1] != Level.TILE_HEIGHT: self.tileset.resize((Level.TILE_WIDTH, Level.TILE_HEIGHT)) self.size = (self._worldImg.get_width() * Level.TILE_WIDTH, self._worldImg.get_height() * Level.TILE_HEIGHT) # Generate first area at origin, just in case self._currArea = pg.Surface(self.areaSize) self._generateArea((0, 0)) return True
def load(self, filename): """Load a level from the given file.""" # Sanity checks if not filename or len(filename) == 0: return False # Allow from loading from PNG as well as 'lvl' files base, ext = path.splitext(filename) if ext.lower() == ".png": self._worldImg = pg.image.load(paths.getLevelPath(filename)) self.name = path.basename(base) self.name = path.basename(base) self.lvlFile = base + ".lvl" self.imgFile = filename if not self.tileset: raise ValueError( "Manual Tileset required when loading Level from image!") elif ext.lower() == ".lvl": # Load from lvl file with open(paths.getLevelPath(filename)) as level: self.lvlFile = filename data = json.load(level) print "Level Loaded: \n%s" % (data) self.name = data['name'] self.imgFile = data['worldImage'] if 'tileset' in data: ts_file = data['tileset'] if path.exists(paths.getLevelPath(ts_file)): self.tileset = AdvancedTileSet( paths.getLevelPath(ts_file)) else: raise ValueError("TileSet %s Not Found!" % ts_file) else: raise ValueError("No TileSet Info Found!") if path.exists(paths.getLevelPath(self.imgFile)): self._worldImg = pg.image.load( paths.getLevelPath(self.imgFile)) else: raise ValueError("World Image %s Not Found!" % self.imgFile) else: return False # pygame doesn't allow you to arbitrarily scale surfaces on blit, # so we must prescale the tileset to the tile size we want. if self.tileset.tileSize[ 0] != Level.TILE_WIDTH or self.tileset.tileSize[ 1] != Level.TILE_HEIGHT: self.tileset.resize((Level.TILE_WIDTH, Level.TILE_HEIGHT)) self.size = (self._worldImg.get_width() * Level.TILE_WIDTH, self._worldImg.get_height() * Level.TILE_HEIGHT) # Generate first area at origin, just in case self._currArea = pg.Surface(self.areaSize) self._generateArea((0, 0)) return True