simpleed.py 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. #!/usr/bin/env python3
  2. # Flexlay - A Generic 2D Game Editor
  3. # Copyright (C) 2014 Ingo Ruhnke <grumbel@gmail.com>
  4. #
  5. # This program is free software: you can redistribute it and/or modify
  6. # it under the terms of the GNU General Public License as published by
  7. # the Free Software Foundation, either version 3 of the License, or
  8. # (at your option) any later version.
  9. #
  10. # This program is distributed in the hope that it will be useful,
  11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. # GNU General Public License for more details.
  14. #
  15. # You should have received a copy of the GNU General Public License
  16. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. import random
  18. from flexlay.color import Color
  19. from flexlay.editor_map import EditorMap
  20. from flexlay.flexlay import Flexlay
  21. from flexlay.math import Size, Point, Rect
  22. from flexlay.object_brush import ObjectBrush
  23. from flexlay.object_layer import ObjectLayer
  24. from flexlay.objmap_rect_object import ObjMapRectObject
  25. from flexlay.pixel_buffer import PixelBuffer
  26. from flexlay.sprite import Sprite
  27. from flexlay.tile import Tile
  28. from flexlay.tile_brush import TileBrush
  29. from flexlay.tilemap_layer import TilemapLayer
  30. from flexlay.tileset import Tileset
  31. from flexlay.tool_context import ToolContext
  32. from flexlay.tools import WorkspaceMoveTool, ObjMapSelectTool, TilePaintTool
  33. from flexlay.util import Config
  34. def main() -> None:
  35. flexlay = Flexlay("Simple Editor")
  36. gui_manager = flexlay.create_gui_manager()
  37. config = Config.create("simple-editor")
  38. button_panel = gui_manager.create_button_panel(horizontal=True)
  39. def on_object_tool() -> None:
  40. workspace.set_tool(1, objtool)
  41. workspace.set_tool(2, workspace_move_tool)
  42. workspace.set_tool(3, TilePaintTool())
  43. button_panel.add_text("ObjectTool", on_object_tool)
  44. def on_tile_tool() -> None:
  45. workspace.set_tool(1, tilemap_paint_tool)
  46. workspace.set_tool(2, workspace_move_tool)
  47. workspace.set_tool(3, tilemap_paint_tool)
  48. button_panel.add_text("TileTool", on_tile_tool)
  49. def on_generic_dialog() -> None:
  50. dialog = gui_manager.create_generic_dialog("Generic Dialog")
  51. dialog.add_bool("An Bool:", True)
  52. dialog.add_int("An Int:", 5)
  53. dialog.add_float("An Int:", 5.0)
  54. dialog.add_string("An String:", "String")
  55. dialog.add_enum("An Enum:", ["String", "Foo", "bar"], 0)
  56. dialog.set_ok_callback(lambda: print(dialog.get_values()))
  57. button_panel.add_text("Generic Dialog", on_generic_dialog)
  58. menubar = gui_manager.create_menubar()
  59. file_menu = menubar.add_menu("&File")
  60. file_menu.add_item("Open...", lambda: print("Open"))
  61. file_menu.add_item("Save...", lambda: print("Save"))
  62. file_menu.add_item("Quit...", lambda: print("Quit"))
  63. view_menu = menubar.add_menu("&View")
  64. view_menu.add_item("Zoom In", lambda: print("Zoom In"))
  65. view_menu.add_item("Zoom Out", lambda: print("Zoom Out"))
  66. view_menu.add_item("Reset Zoom", lambda: print("Reset Zoom"))
  67. editor_map_component = gui_manager.create_editor_map_component()
  68. editormap = EditorMap()
  69. tileset = Tileset(32)
  70. tileset.add_tile(0, Tile(PixelBuffer.from_file("data/images/icons16/resize1.png"),
  71. Sprite.from_file("data/images/icons16/resize1.png")))
  72. tileset.add_tile(1, Tile(PixelBuffer.from_file("data/images/icons16/resize_vert.png"),
  73. Sprite.from_file("data/images/icons16/resize_vert.png")))
  74. tilemap = TilemapLayer(tileset, 20, 10)
  75. TilemapLayer.current = tilemap
  76. tilemap.set_draw_grid(True)
  77. object_layer = ObjectLayer()
  78. editormap.add_layer(tilemap)
  79. editormap.add_layer(object_layer)
  80. for i in range(20):
  81. obj = ObjMapRectObject(Rect(Point(random.randint(0, 499), random.randint(0, 499)),
  82. Size(32, 32)),
  83. Color(0, 0, 255), None)
  84. object_layer.add_object(obj)
  85. workspace = editor_map_component.get_workspace()
  86. workspace.set_map(editormap)
  87. ToolContext()
  88. ToolContext.current.tile_brush.put(0, 0, 1)
  89. workspace_move_tool = WorkspaceMoveTool()
  90. objtool = ObjMapSelectTool(gui_manager)
  91. tilemap_paint_tool = TilePaintTool()
  92. # tilemap_paint_tool.set_brush(ToolContext.current.tile_brush)
  93. workspace.set_tool(1, objtool)
  94. workspace.set_tool(2, workspace_move_tool)
  95. # workspace.set_tool(1, tilemap_paint_tool)
  96. # workspace.set_tool(3, tilemap_paint_tool)
  97. object_selector = gui_manager.create_object_selector(40, 40)
  98. object_selector.add_brush(ObjectBrush(Sprite.from_file("data/images/icons16/resize1.png"), None))
  99. object_selector.add_brush(ObjectBrush(Sprite.from_file("data/images/icons16/resize2.png"), None))
  100. tile_selector = gui_manager.create_tile_selector()
  101. # tile_selector.set_tiles("All the tiles", tileset.get_tiles())
  102. # tile_selector.set_tiles("All the tiles again", tileset.get_tiles())
  103. # tile_selector.set_tiles("And again", tileset.get_tiles())
  104. print("Successs!")
  105. gui_manager.run()
  106. if __name__ == "__main__":
  107. main()
  108. # EOF #