def __init__(self, window_tileset): h_max = WindowThumbTile.H_MAX w = 2 * self.offset + 64 + self.font.size("h = 99 ")[0] h = 2 * self.offset + 32 + 8 * h_max + self.font.get_linesize() screen_w, screen_h = pygame.display.get_surface().get_size() x = screen_w - w y = 0 Window.__init__(self, x, y, w, h) self.tile = IsoTile(0, 0) self.h = 0 # map.get_height(i, j) self.window_tileset = window_tileset self.last_param = None self.create_contents() self.windowskin = Cache.load_windowskin("editor.png") self.update()
class WindowThumbTile(Window): """draw the active IsoTile for the IsoEditor""" H_MAX = 4 def __init__(self, window_tileset): h_max = WindowThumbTile.H_MAX w = 2 * self.offset + 64 + self.font.size("h = 99 ")[0] h = 2 * self.offset + 32 + 8 * h_max + self.font.get_linesize() screen_w, screen_h = pygame.display.get_surface().get_size() x = screen_w - w y = 0 Window.__init__(self, x, y, w, h) self.tile = IsoTile(0, 0) self.h = 0 # map.get_height(i, j) self.window_tileset = window_tileset self.last_param = None self.create_contents() self.windowskin = Cache.load_windowskin("editor.png") self.update() @property def ref(self): return self.window_tileset.tileref @ref.setter def ref(self, value): self.window_tileset.tileref = value @property def tileset(self): return self.window_tileset.tileset @tileset.setter def tileset(self, value): self.window_tileset.tileset = value @property def tilesetname(self): return self.window_tileset.tilesetname @property def offset(self): return 8 def update(self, tileset=None, ref=None, h=None): if tileset != None: self.tileset = tileset if ref != None: self.ref = ref if h != None and 0 <= h < 40: self.h = h if self.last_param != (self.tilesetname, self.ref, self.h): self.last_param = self.tilesetname, self.ref, self.h self.need_refresh = True def mouseover(self, event): if self.rect.collidepoint(event.pos): return True return False def refresh(self): self.need_refresh = False self.tile.draw_image(self.tilesetname, self.ref, self.h, 0, 64 + 8 * (self.h - 8)) self.contents.fill((0, 0, 0, 0)) self.draw_text(64, 0, "h = %s" % self.h) self.draw_text(0, self.contents_rect.height - self.font.get_linesize(), self.tilesetname) self.contents.blit(self.tile.image, (0, 0), (0, 0, 64, 96)) @property def tile_infos(self): return self.tileset, self.ref, self.h @tile_infos.setter def tile_infos(self, tile_infos): self.update(*tile_infos) def update_onclick(self, event): if self.rect.collidepoint(event.pos): dh = (event.button == 5) - (event.button == 4) if dh: self.update(h=self.h + dh) return True # get focus return False # have not focus def draw(self, destsurf): if self.need_refresh: self.refresh() Window.draw(self, destsurf)