diff --git a/src/nostalgia/player/app.cpp b/src/nostalgia/player/app.cpp index 19cd31d8..0b555dc0 100644 --- a/src/nostalgia/player/app.cpp +++ b/src/nostalgia/player/app.cpp @@ -65,7 +65,7 @@ static void testKeyEventHandler(turbine::Context &tctx, turbine::Key key, bool d [[maybe_unused]] static ox::Error runTest(turbine::Context &tctx) { - constexpr ox::StringView TileSheetAddr{"/TileSheets/Charset.ng"}; + constexpr ox::StringView TileSheetAddr{"/TileSheets/Charset.nts"}; constexpr ox::StringView PaletteAddr{"/Palettes/Chester.npal"}; OX_REQUIRE_M(cctx, gfx::init(tctx)); turbine::setApplicationData(tctx, cctx.get()); @@ -91,10 +91,10 @@ static ox::Error runTileSheetSetTest(turbine::Context &tctx) { gfx::TileSheetSet const set{ .bpp = 4, .entries = { - { .tilesheet = ox::StringLiteral{"/TileSheets/Chester.ng"}, .sections{{.begin = 0, .tiles = 1}} }, - { .tilesheet = ox::StringLiteral{"/TileSheets/AB.ng"}, .sections{{.begin = 0, .tiles = 2}} }, - { .tilesheet = ox::StringLiteral{"/TileSheets/CD.ng"}, .sections{{.begin = 0, .tiles = 2}} }, - { .tilesheet = ox::StringLiteral{"/TileSheets/AB.ng"}, .sections{{.begin = 1, .tiles = 1}} }, + { .tilesheet = ox::StringLiteral{"/TileSheets/Chester.nts"}, .sections{{.begin = 0, .tiles = 1}} }, + { .tilesheet = ox::StringLiteral{"/TileSheets/AB.nts"}, .sections{{.begin = 0, .tiles = 2}} }, + { .tilesheet = ox::StringLiteral{"/TileSheets/CD.nts"}, .sections{{.begin = 0, .tiles = 2}} }, + { .tilesheet = ox::StringLiteral{"/TileSheets/AB.nts"}, .sections{{.begin = 1, .tiles = 1}} }, }, }; constexpr auto bgPalBank = 1; diff --git a/src/olympic/keel/include/keel/media.hpp b/src/olympic/keel/include/keel/media.hpp index 069e202b..228bab75 100644 --- a/src/olympic/keel/include/keel/media.hpp +++ b/src/olympic/keel/include/keel/media.hpp @@ -63,8 +63,11 @@ namespace detail { template constexpr auto makeLoader(Context &ctx) { return [&ctx](ox::StringViewCR assetId) -> ox::Result { - OX_REQUIRE(p, ctx.uuidToPath.at(assetId)); - OX_REQUIRE(buff, ctx.rom->read(*p)); + auto const p = ctx.uuidToPath.at(assetId); + if (p.error) { + return ox::Error{1, "Asset ID not found"}; + } + OX_REQUIRE(buff, ctx.rom->read(*p.value)); auto [obj, err] = readAsset(buff); if (err) { if (err != ox::Error_ClawTypeVersionMismatch && err != ox::Error_ClawTypeMismatch) { diff --git a/src/olympic/keel/src/media.cpp b/src/olympic/keel/src/media.cpp index e59fa5ee..ea59e415 100644 --- a/src/olympic/keel/src/media.cpp +++ b/src/olympic/keel/src/media.cpp @@ -76,8 +76,11 @@ ox::Error buildUuidMap(Context &ctx) noexcept { ox::Result pathToUuid(Context &ctx, ox::StringViewCR path) noexcept { #ifndef OX_BARE_METAL - OX_REQUIRE(out, ctx.pathToUuid.at(path)); - return *out; + auto const out = ctx.pathToUuid.at(path); + if (out.error) { + return ox::Error{1, "Path not found"}; + } + return *out.value; #else return ox::Error(1, "UUID to path conversion not supported on this platform"); #endif diff --git a/src/olympic/studio/applib/src/newmenu.cpp b/src/olympic/studio/applib/src/newmenu.cpp index ad50790e..e9f48df2 100644 --- a/src/olympic/studio/applib/src/newmenu.cpp +++ b/src/olympic/studio/applib/src/newmenu.cpp @@ -54,6 +54,7 @@ void NewMenu::draw(StudioContext &sctx) noexcept { case Stage::NewItemType: drawNewItemType(sctx); break; + case Stage::NewItemTransitioningToPath: case Stage::NewItemPath: drawNewItemPath(sctx); break; @@ -91,8 +92,8 @@ void NewMenu::drawNewItemType(StudioContext const&sctx) noexcept { }, m_types.size(), m_selectedType, {200, 100}); auto const&im = *m_types[m_selectedType]; drawFirstPageButtons(im.itemTemplates().size() == 1 ? - Stage::NewItemPath : Stage::NewItemTemplate); - if (m_stage == Stage::NewItemPath || m_stage == Stage::NewItemTemplate) { + Stage::NewItemTransitioningToPath : Stage::NewItemTemplate); + if (m_stage == Stage::NewItemTransitioningToPath || m_stage == Stage::NewItemTemplate) { if (m_useDefaultPath) { std::ignore = m_explorer.setSelectedPath(im.defaultPath()); } @@ -108,16 +109,18 @@ void NewMenu::drawNewItemTemplate(StudioContext const&sctx) noexcept { ig::ListBox("Template", [&](size_t const i) -> ox::CStringView { return templates[i]->name(); }, templates.size(), m_selectedTemplate, {200, 100}); - drawButtons(Stage::NewItemPath); + drawButtons(Stage::NewItemTransitioningToPath); }); } void NewMenu::drawNewItemPath(StudioContext &sctx) noexcept { setSize({380, 340}); drawWindow(sctx.tctx, m_open, [this, &sctx] { - if (m_selectedType < m_types.size()) { - ig::InputText("Name", m_itemName); + if (m_stage == Stage::NewItemTransitioningToPath) [[unlikely]] { + ImGui::SetKeyboardFocusHere(); + m_stage = Stage::NewItemPath; } + ig::InputText("Name", m_itemName); ImGui::NewLine(); ImGui::Text("Path"); auto const vp = ImGui::GetContentRegionAvail(); diff --git a/src/olympic/studio/applib/src/newmenu.hpp b/src/olympic/studio/applib/src/newmenu.hpp index d9e6e9dd..82587ae0 100644 --- a/src/olympic/studio/applib/src/newmenu.hpp +++ b/src/olympic/studio/applib/src/newmenu.hpp @@ -20,6 +20,7 @@ class NewMenu final: public Popup { Closed, Opening, NewItemType, + NewItemTransitioningToPath, NewItemPath, NewItemTemplate, }; diff --git a/src/olympic/studio/applib/src/projectexplorer.cpp b/src/olympic/studio/applib/src/projectexplorer.cpp index 48b45330..bdef1c08 100644 --- a/src/olympic/studio/applib/src/projectexplorer.cpp +++ b/src/olympic/studio/applib/src/projectexplorer.cpp @@ -2,8 +2,6 @@ * Copyright 2016 - 2025 Gary Talent (gary@drinkingtea.net). All rights reserved. */ -#include - #include #include "projectexplorer.hpp" diff --git a/src/olympic/studio/modlib/include/studio/projectfilepicker.hpp b/src/olympic/studio/modlib/include/studio/projectfilepicker.hpp deleted file mode 100644 index 95b22c95..00000000 --- a/src/olympic/studio/modlib/include/studio/projectfilepicker.hpp +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright 2016 - 2025 Gary Talent (gary@drinkingtea.net). All rights reserved. - */ - -#pragma once - -#include -#include - -#include - -#include - -namespace studio { - -} \ No newline at end of file diff --git a/src/olympic/studio/modlib/src/CMakeLists.txt b/src/olympic/studio/modlib/src/CMakeLists.txt index b2463895..795f7d72 100644 --- a/src/olympic/studio/modlib/src/CMakeLists.txt +++ b/src/olympic/studio/modlib/src/CMakeLists.txt @@ -2,7 +2,6 @@ add_library( Studio configio.cpp editor.cpp - projectfilepicker.cpp filetreemodel.cpp imguiutil.cpp module.cpp diff --git a/src/olympic/studio/modlib/src/projectfilepicker.cpp b/src/olympic/studio/modlib/src/projectfilepicker.cpp deleted file mode 100644 index dbccb7df..00000000 --- a/src/olympic/studio/modlib/src/projectfilepicker.cpp +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright 2016 - 2025 Gary Talent (gary@drinkingtea.net). All rights reserved. - */ - -#include -#include - -namespace studio { - -class ProjectFilePicker: public FileExplorer { - - public: - explicit ProjectFilePicker(keel::Context &kctx) noexcept: FileExplorer{kctx} {} - - protected: -}; - -}