def draw(self, gc): for i in range(0, Workspace.current.get_map().get_layer_count()): layer = Workspace.current.get_map().get_layer(i) if layer.has_bounding_rect(): rect = layer.get_bounding_rect() gc.draw_line(rect.left, rect.top, rect.right, rect.bottom, Color(0, 255, 255)) gc.draw_line(rect.left, rect.bottom, rect.right, rect.top, Color(0, 255, 255))
def draw(self, gc): self.deselected = self.context.object_selection for obj in self.context.object_selection: gc.draw_rect(Rect(obj.get_bound_rect()), Color(0, 0, 192), 3) gc.fill_rect(Rect(obj.get_bound_rect()), Color(0, 0, 128, 64), 3) if self.state == ObjMapSelectTool.STATE_DRAG: pass elif self.state == ObjMapSelectTool.STATE_SELECT: gc.draw_rect(Rect(self.selection_rect), Color(255, 255, 255))
def draw(self, gc): gc.fill_rect(Rect(Point(self.pos) - Point(16, 16), Size(32, 32)), Color(200, 255, 200)) if self.next_node: gc.draw_line(int(self.pos.x), int(self.pos.y), int((self.pos.x + self.next_node.pos.x) / 2), int((self.pos.y + self.next_node.pos.y) / 2), Color(255, 255, 0)) gc.draw_line(int((self.pos.x + self.next_node.pos.x) / 2), int((self.pos.y + self.next_node.pos.y) / 2), int(self.next_node.pos.x), int(self.next_node.pos.y), Color(255, 0, 0))
def __init__(self): self.background_color = Color(100, 80, 100) self.foreground_color = Color(255, 80, 255) self.modified = False self.serial = 0 self._has_bounding_rect = False self.bounding_rect = Rect(0, 0, 0, 0) self.layers = [] self.redo_stack = [] self.undo_stack = [] # Index in undo_stack + redo_stack, all with index <= are saved. self.save_pointer = 0 self.sig_change = Signal() self.metadata = None self.draw_grid = False
def __init__(self, pixelbuffer=None, sprite=None): self.provider = None self.sprite = sprite self.pixelbuffer = pixelbuffer self.transparent = False self.color = None self.attribute_color = Color(255, 255, 255) self.filename = None
def draw(self, gc): tilemap = ToolContext.current.tilemap_layer if not tilemap: return tile_size = tilemap.get_tileset().get_tile_size() # Draw the brush: for y in range(0, ToolContext.current.tile_brush.height): for x in range(0, ToolContext.current.tile_brush.width): tile = tilemap.get_tileset().create( ToolContext.current.tile_brush.at(x, y)) if tile: sprite = tile.get_sprite() sprite.set_alpha(0.5) sprite.draw((self.current_tile.x + x) * tile_size, (self.current_tile.y + y) * tile_size, gc) gc.fill_rect( Rect( Point((self.current_tile.x + x) * tile_size, (self.current_tile.y + y) * tile_size), Size(tile_size, tile_size)), Color(255, 255, 255, 100)) elif ToolContext.current.tile_brush.is_opaque(): gc.fill_rect( Rect( Point((self.current_tile.x + x) * tile_size, (self.current_tile.y + y) * tile_size), Size(tile_size, tile_size)), Color(255, 255, 255, 100)) else: gc.fill_rect( Rect( Point((self.current_tile.x + x) * tile_size, (self.current_tile.y + y) * tile_size), Size(tile_size, tile_size)), Color(255, 255, 255, 50))
def draw_foreground(self, gc): bounding_rect = self.get_bounding_rect() if bounding_rect != Rect(0, 0, 0, 0): if self.draw_grid: rect = Rect(gc.get_clip_rect()) start_x = rect.left // 32 start_y = rect.top // 32 end_x = rect.right // 32 + 1 end_y = rect.bottom // 32 + 1 tile_size = 32 for y in range(start_y, end_y): gc.draw_line(start_x * tile_size, y * tile_size, end_x * tile_size, y * tile_size, Color(150, 150, 150)) for x in range(start_x, end_x): gc.draw_line(x * tile_size, start_y * tile_size, x * tile_size, end_y * tile_size, Color(150, 150, 150)) # bounding rect gc.draw_rect(bounding_rect, self.foreground_color)
def calc_color(self): logging.info("Tile::calc_color not implemented") return Color(255, 255, 255, 255)
def on_a_key(x, y): pos = self.editor_map.screen2world(Point(x, y)) rectobj = ObjMapRectObject(Rect(pos, Size(128, 64)), Color(0, 255, 255, 155), None) self.workspace.get_map().metadata.objects.add_object(rectobj)
def main(): flexlay = Flexlay("Simple Editor") gui_manager = flexlay.create_gui_manager() config = Config.create("simple-editor") button_panel = gui_manager.create_button_panel(horizontal=True) def on_object_tool(): workspace.set_tool(1, objtool) workspace.set_tool(2, workspace_move_tool) workspace.set_tool(3, TilePaintTool()) button_panel.add_text("ObjectTool", on_object_tool) def on_tile_tool(): workspace.set_tool(1, tilemap_paint_tool) workspace.set_tool(2, workspace_move_tool) workspace.set_tool(3, tilemap_paint_tool) button_panel.add_text("TileTool", on_tile_tool) def on_generic_dialog(): dialog = gui_manager.create_generic_dialog("Generic Dialog") dialog.add_bool("An Bool:", True) dialog.add_int("An Int:", 5) dialog.add_float("An Int:", 5.0) dialog.add_string("An String:", "String") dialog.add_enum("An Enum:", ["String", "Foo", "bar"], 0) dialog.set_ok_callback(lambda: print(dialog.get_values())) button_panel.add_text("Generic Dialog", on_generic_dialog) menubar = gui_manager.create_menubar() file_menu = menubar.add_menu("&File") file_menu.add_item("Open...", lambda: print("Open")) file_menu.add_item("Save...", lambda: print("Save")) file_menu.add_item("Quit...", lambda: print("Quit")) view_menu = menubar.add_menu("&View") view_menu.add_item("Zoom In", lambda: print("Zoom In")) view_menu.add_item("Zoom Out", lambda: print("Zoom Out")) view_menu.add_item("Reset Zoom", lambda: print("Reset Zoom")) editor_map_component = gui_manager.create_editor_map_component() editormap = EditorMap() tileset = Tileset(32) tileset.add_tile(0, Tile(PixelBuffer.from_file("data/images/icons16/resize1.png"), Sprite.from_file("data/images/icons16/resize1.png"))) tileset.add_tile(1, Tile(PixelBuffer.from_file("data/images/icons16/resize_vert.png"), Sprite.from_file("data/images/icons16/resize_vert.png"))) tilemap = TilemapLayer(tileset, 20, 10) TilemapLayer.current = tilemap tilemap.set_draw_grid(True) object_layer = ObjectLayer() editormap.add_layer(tilemap) editormap.add_layer(object_layer) for i in range(20): obj = ObjMapRectObject(Rect(Point(random.randint(0, 499), random.randint(0, 499)), Size(32, 32)), Color(0, 0, 255), None) object_layer.add_object(obj) workspace = editor_map_component.get_workspace() workspace.set_map(editormap) ToolContext() ToolContext.current.tile_brush.put(0, 0, 1) workspace_move_tool = WorkspaceMoveTool() objtool = ObjMapSelectTool(gui_manager) tilemap_paint_tool = TilePaintTool() # tilemap_paint_tool.set_brush(ToolContext.current.tile_brush) workspace.set_tool(1, objtool) workspace.set_tool(2, workspace_move_tool) # workspace.set_tool(1, tilemap_paint_tool) # workspace.set_tool(3, tilemap_paint_tool) object_selector = gui_manager.create_object_selector(40, 40) object_selector.add_brush(ObjectBrush(Sprite.from_file("data/images/icons16/resize1.png"), None)) object_selector.add_brush(ObjectBrush(Sprite.from_file("data/images/icons16/resize2.png"), None)) tile_selector = gui_manager.create_tile_selector() # tile_selector.set_tiles("All the tiles", tileset.get_tiles()) # tile_selector.set_tiles("All the tiles again", tileset.get_tiles()) # tile_selector.set_tiles("And again", tileset.get_tiles()) print("Successs!") gui_manager.run()