예제 #1
0
 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))
예제 #2
0
    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))
예제 #3
0
    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))
예제 #4
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
예제 #5
0
파일: tile.py 프로젝트: JOKER03ptg/flexlay
 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
예제 #6
0
    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))
예제 #7
0
    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)
예제 #8
0
파일: tile.py 프로젝트: JOKER03ptg/flexlay
 def calc_color(self):
     logging.info("Tile::calc_color not implemented")
     return Color(255, 255, 255, 255)
예제 #9
0
 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)
예제 #10
0
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()