class TilemapEditor(object): """ Contains all actions the user can make from GUI. """ def __init__(self): """ Creates a TileEditor. IMPORTANT: open_tilemap() and open_tileset() must both be called before close_tilemap, close_tileset(), and edit_tile() are used. """ self.selected_layer = 0 self.selected_texture_id = 0 self.open_tilemap() self.tileset = None def get_layers(self): return self.tilemap.get_layers() def set_selected_layer(self, layer): """ Sets self.selected_layer to layer. """ self.selected_layer = layer def set_selected_texture_id(self, texture_id): """ Sets selected_texture_id to @texture_id. """ self.selected_texture_id = texture_id def get_selected_texture_id(self): """ Returns selected texture_id. """ return self.selected_texture_id def get_tilemap_data(self): """ Returns 2d representation of underlying tilemap as tile ids. """ return self.tilemap.texture_map def get_tileset_keys(self): """ Returns a list of all tile keys. """ return self.tileset.get_tileset_keys() def get_tileset_values(self): """ Returns a list of all tile values. """ if self.tileset == None: return list() else: return self.tileset.get_tileset_values() def get_tile_photoimage(self, layer, x, y): """ Returns the PhotoImage mapped to tile_id. """ if self.tileset == None: return PhotoImage() else: return self.tileset.get_tile(self.tilemap.get_tile(layer, x, y)) def get_tilemap_height(self): """ Returns height of tilemap. """ return self.tilemap.height def get_tilemap_width(self): """ Returns height of tilemap. """ return self.tilemap.width def get_tile_width(self): """ Returns the width of a tile in pixels. """ if self.tileset == None: return 32 else: return self.tileset.get_tile_width() def open_tilemap(self, h=3, w=3, l=1, t_id=0, xml=None): """ Creates a TileMap object from @xml_tilemap and sets selected_layer to zero. """ self.selected_layer = 0 self.tilemap = Tilemap(h, w, l, t_id, xml) def save_tilemap(self, xml_tilemap=None): """ Writes xml representation of tilemap to @xml_tilemap. """ self.tilemap.parse_to_xml(xml_tilemap) def close_tilemap(self): """ Assigns None to tilemap. """ self.open_tilemap() def open_tileset(self, tileset_source, width, height, tile_width=32, tile_height=32): """ Creates a TileSet object from @png_tileset and sets selected_texture_id to Zero. """ self.selected_texture_id = 0 self.tileset = Tileset(tileset_source, width, height, tile_width, tile_height) def close_tileset(self): """ Assings None to tile_set. """ self.tileset = None def edit_tile(self, x, y): """ Edits replaces current texutre id at layer, x, y with selected_texture_id. """ self.tilemap.edit_tile(self.selected_layer, self.selected_texture_id, x, y)