update yaze_py module and py ext sample

This commit is contained in:
scawful
2024-08-10 22:55:13 -04:00
parent 52502dc568
commit cc39225a2a
4 changed files with 107 additions and 37 deletions

View File

@@ -6,6 +6,20 @@ find_package(Boost COMPONENTS python3 REQUIRED)
add_library(
yaze_py MODULE
py/yaze_py.cc
yaze.cc
app/rom.cc
app/core/common.cc
app/core/labeling.cc
app/zelda3/overworld/overworld_map.cc
app/zelda3/overworld/overworld.cc
app/zelda3/sprite/sprite.cc
app/editor/utils/gfx_context.cc
${YAZE_APP_GFX_SRC}
${IMGUI_PATH}/imgui.cpp
${IMGUI_PATH}/imgui_demo.cpp
${IMGUI_PATH}/imgui_draw.cpp
${IMGUI_PATH}/imgui_widgets.cpp
${IMGUI_PATH}/misc/cpp/imgui_stdlib.cpp
)
if (APPLE)
@@ -19,6 +33,7 @@ target_include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/
lib/
app/
${SDL_INCLUDE_DIR}
${PYTHON_HEADERS}
${Boost_INCLUDE_DIRS}
${PYTHON_INCLUDE_DIRS}
@@ -26,6 +41,11 @@ target_include_directories(
target_link_libraries(
yaze_py PUBLIC
${SDL_TARGETS}
${ABSL_TARGETS}
${PYTHON_LIBRARIES}
${PNG_LIBRARIES}
Boost::python3
ImGui
ImGuiTestEngine
)

View File

@@ -1,10 +1,12 @@
#include <boost/python.hpp>
#include "base/overworld.h"
#include "base/snes_color.h"
#include "base/sprite.h"
#include "ext/extension.h"
#include "yaze.h"
BOOST_PYTHON_MODULE(yaze) {
BOOST_PYTHON_MODULE(yaze_py) {
using namespace boost::python;
class_<z3_rom>("z3_rom")
@@ -31,4 +33,35 @@ BOOST_PYTHON_MODULE(yaze) {
.def_readonly("name", &z3_sprite::name)
.def_readonly("id", &z3_sprite::id)
.def_readonly("actions", &z3_sprite::actions);
}
class_<yaze_flags>("yaze_flags")
.def_readwrite("debug", &yaze_flags::debug)
.def_readwrite("rom_filename", &yaze_flags::rom_filename)
.def_readwrite("rom", &yaze_flags::rom);
class_<yaze_project>("yaze_project")
.def_readonly("filename", &yaze_project::filename)
.def_readonly("rom", &yaze_project::rom)
.def_readonly("overworld", &yaze_project::overworld);
class_<yaze_editor_context>("yaze_editor_context")
.def_readonly("project", &yaze_editor_context::project);
enum_<yaze_event_type>("yaze_event_type")
.value("YAZE_EVENT_ROM_LOADED", YAZE_EVENT_ROM_LOADED)
.value("YAZE_EVENT_ROM_SAVED", YAZE_EVENT_ROM_SAVED)
.value("YAZE_EVENT_SPRITE_MODIFIED", YAZE_EVENT_SPRITE_MODIFIED)
.value("YAZE_EVENT_PALETTE_CHANGED", YAZE_EVENT_PALETTE_CHANGED);
class_<yaze_extension>("yaze_extension")
.def_readonly("name", &yaze_extension::name)
.def_readonly("version", &yaze_extension::version);
// Functions that return raw pointers need to be managed by Python's garbage
// collector
def("yaze_load_rom", &yaze_load_rom,
return_value_policy<manage_new_object>());
def("yaze_unload_rom", &yaze_unload_rom); // No need to manage memory here
def("yaze_get_color_from_paletteset", &yaze_get_color_from_paletteset);
def("yaze_check_version", &yaze_check_version);
}