From 0ae3adc7c70a19d9fbef115892bd128f00bb0f96 Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Wed, 8 Jan 2025 22:03:50 -0600 Subject: [PATCH] [jasper/player] Rename player from jasper to Jasper, add quit shortcut in debug builds --- Makefile | 15 +++++++++------ src/jasper/player/CMakeLists.txt | 12 ++++++------ src/jasper/player/app.cpp | 13 +++++++++++-- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/Makefile b/Makefile index 9967a66..857449a 100644 --- a/Makefile +++ b/Makefile @@ -5,28 +5,31 @@ GBABUILDCORE_PATH=deps/nostalgia/deps/gbabuildcore include ${BUILDCORE_PATH}/base.mk ifeq ($(BC_VAR_OS),darwin) - PROJECT_PLAYER=./build/${BC_VAR_CURRENT_BUILD}/bin/${BC_VAR_PROJECT_NAME}.app/Contents/MacOS/${BC_VAR_PROJECT_NAME} - PROJECT_STUDIO=./build/${BC_VAR_CURRENT_BUILD}/bin/${BC_VAR_PROJECT_NAME}Studio.app/Contents/MacOS/${BC_VAR_PROJECT_NAME_CAP}Studio + PROJECT_PLAYER=./build/${BC_VAR_CURRENT_BUILD}/bin/${BC_VAR_PROJECT_NAME_CAP}.app/Contents/MacOS/${BC_VAR_PROJECT_NAME} + PROJECT_STUDIO=./build/${BC_VAR_CURRENT_BUILD}/bin/${BC_VAR_PROJECT_NAME_CAP}Studio.app/Contents/MacOS/${BC_VAR_PROJECT_NAME_CAP}Studio MGBA=/Applications/mGBA.app/Contents/MacOS/mGBA else - PROJECT_PLAYER=./build/${BC_VAR_CURRENT_BUILD}/bin/${BC_VAR_PROJECT_NAME} + PROJECT_PLAYER=./build/${BC_VAR_CURRENT_BUILD}/bin/${BC_VAR_PROJECT_NAME_CAP} PROJECT_STUDIO=./build/${BC_VAR_CURRENT_BUILD}/bin/${BC_VAR_PROJECT_NAME_CAP}Studio MGBA=mgba-qt endif .PHONY: pkg-gba pkg-gba: build - ${BC_CMD_ENVRUN} ${BC_PY3} ./deps/nostalgia/scripts/pkg-gba.py project ${BC_VAR_PROJECT_NAME} + ${BC_CMD_ENVRUN} ${BC_PY3} ./deps/nostalgia/util/scripts/pkg-gba.py project ${BC_VAR_PROJECT_NAME_CAP} +.PHONY: build-player +build-player: + ${BC_CMD_CMAKE_BUILD} ${BC_VAR_BUILD_PATH} ${BC_VAR_PROJECT_NAME_CAP} .PHONY: run -run: build +run: build-player ${PROJECT_PLAYER} project .PHONY: run-studio run-studio: build ${PROJECT_STUDIO} .PHONY: gba-run gba-run: pkg-gba - ${MGBA} ${BC_VAR_PROJECT_NAME}.gba + ${MGBA} ${BC_VAR_PROJECT_NAME_CAP}.gba .PHONY: debug debug: build ${BC_CMD_HOST_DEBUGGER} ${PROJECT_PLAYER} project diff --git a/src/jasper/player/CMakeLists.txt b/src/jasper/player/CMakeLists.txt index 9b852d1..5b12fc7 100644 --- a/src/jasper/player/CMakeLists.txt +++ b/src/jasper/player/CMakeLists.txt @@ -1,33 +1,33 @@ add_executable( - jasper WIN32 MACOSX_BUNDLE + Jasper WIN32 MACOSX_BUNDLE app.cpp ) if(BUILDCORE_TARGET STREQUAL "gba") set(LOAD_KEEL_MODS FALSE) - set_target_properties(jasper + set_target_properties(Jasper PROPERTIES LINK_FLAGS ${LINKER_FLAGS} COMPILER_FLAGS "-mthumb -mthumb-interwork" ) - OBJCOPY_FILE(jasper) + OBJCOPY_FILE(Jasper) else() set(LOAD_KEEL_MODS TRUE) endif() target_compile_definitions( - jasper PRIVATE + Jasper PRIVATE OLYMPIC_LOAD_KEEL_MODULES=$ OLYMPIC_GUI_APP=1 ) # enable LTO if(NOT WIN32) - set_property(TARGET jasper PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE) + set_property(TARGET Jasper PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE) endif() target_link_libraries( - jasper PUBLIC + Jasper PUBLIC JasperProfile JasperKeelModules OlympicApplib diff --git a/src/jasper/player/app.cpp b/src/jasper/player/app.cpp index 55df426..4e72aa5 100644 --- a/src/jasper/player/app.cpp +++ b/src/jasper/player/app.cpp @@ -24,14 +24,23 @@ ox::Error run( ox::SpanView args) noexcept { auto const fsPath = args.size() > 1 ? args[1] : "."; OX_REQUIRE_M(tctx, turbine::init(fsPath, project)); - OX_REQUIRE(bootfile, keel::readObj(keelCtx(*tctx), "/Bootfile")); + auto &kctx = keelCtx(*tctx); + OX_REQUIRE(bootfile, keel::readObj(kctx, "/Bootfile")); oxOut("Jasper Player\n"); OX_REQUIRE(nctx, ncore::init(*tctx)); auto const&worldPath = *bootfile->args.at(0).unwrap(); - OX_REQUIRE(worldStatic, readObj(keelCtx(*tctx), worldPath)); + OX_REQUIRE(worldStatic, readObj(kctx, worldPath)); world::World world(*nctx, *worldStatic); OX_RETURN_ERROR(world.setupDisplay()); turbine::setApplicationData(*tctx, &world); + if constexpr(ox::defines::Debug) { + turbine::setKeyEventHandler(*tctx, []( + turbine::Context &tctx, turbine::Key const key, bool const down) { + if (down && key == turbine::Key::Alpha_Q) { + turbine::requestShutdown(tctx); + } + }); + } setUpdateHandler(*tctx, [](turbine::Context &tctx) -> int { auto &world = *applicationData(tctx); auto [sleepTime, err] = world.update();