[jasper] Upgrade to newer Nostalgia
All checks were successful
Build / build (push) Successful in 3m57s
All checks were successful
Build / build (push) Successful in 3m57s
This commit is contained in:
parent
2eb87c06f2
commit
c33ffa7b36
@ -4,13 +4,13 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <nostalgia/core/context.hpp>
|
||||
#include <nostalgia/gfx/context.hpp>
|
||||
|
||||
#include "worldstatic.hpp"
|
||||
|
||||
namespace jasper::world {
|
||||
|
||||
namespace ncore = nostalgia::core;
|
||||
namespace ngfx = nostalgia::gfx;
|
||||
|
||||
class World {
|
||||
private:
|
||||
@ -19,14 +19,14 @@ class World {
|
||||
uint16_t frame{};
|
||||
turbine::TimeMs nextUpdateTime{};
|
||||
};
|
||||
ncore::Context &m_nctx;
|
||||
ngfx::Context &m_nctx;
|
||||
WorldStatic const&m_worldStatic;
|
||||
ox::Vector<keel::AssetRef<ncore::CompactTileSheet>, 32> m_tilesheets;
|
||||
ox::Vector<keel::AssetRef<ngfx::CompactTileSheet>, 32> m_tilesheets;
|
||||
ox::Vector<ObjState, 128> m_objStates;
|
||||
turbine::TimeMs m_currentTicks{};
|
||||
|
||||
public:
|
||||
explicit World(ncore::Context &nctx, WorldStatic const&worldStatic) noexcept;
|
||||
explicit World(ngfx::Context &nctx, WorldStatic const&worldStatic) noexcept;
|
||||
|
||||
ox::Error setupDisplay() noexcept;
|
||||
|
||||
|
@ -10,20 +10,20 @@
|
||||
#include <ox/std/types.hpp>
|
||||
#include <ox/std/vector.hpp>
|
||||
|
||||
#include <nostalgia/core/tilesheet.hpp>
|
||||
#include <nostalgia/gfx/tilesheet.hpp>
|
||||
|
||||
#include "worldobject.hpp"
|
||||
|
||||
namespace jasper::world {
|
||||
|
||||
namespace ncore = nostalgia::core;
|
||||
namespace ngfx = nostalgia::gfx;
|
||||
|
||||
struct SpriteDoc {
|
||||
constexpr static auto TypeName = "net.drinkingtea.jasper.world.SpriteDoc";
|
||||
constexpr static auto TypeVersion = 1;
|
||||
constexpr static auto Preloadable = true;
|
||||
ox::String tilesheetPath;
|
||||
ox::Vector<ncore::SubSheetId> subsheetId;
|
||||
ox::Vector<ngfx::SubSheetId> subsheetId;
|
||||
};
|
||||
|
||||
struct DocObjRef {
|
||||
|
@ -6,12 +6,12 @@
|
||||
|
||||
#include <ox/std/array.hpp>
|
||||
|
||||
#include <nostalgia/core/context.hpp>
|
||||
#include <nostalgia/core/tilesheet.hpp>
|
||||
#include <nostalgia/gfx/context.hpp>
|
||||
#include <nostalgia/gfx/tilesheet.hpp>
|
||||
|
||||
namespace jasper::world {
|
||||
|
||||
namespace ncore = nostalgia::core;
|
||||
namespace ngfx = nostalgia::gfx;
|
||||
|
||||
using CollisionMap = uint32_t;
|
||||
|
||||
@ -31,7 +31,7 @@ struct WorldObject {
|
||||
ox::String name;
|
||||
uint16_t intervalMs{};
|
||||
uint8_t palBank{};
|
||||
ncore::SubSheetId subsheetId{};
|
||||
ngfx::SubSheetId subsheetId{};
|
||||
CollisionMap collisionMap{};
|
||||
uint8_t frames{};
|
||||
uint8_t objectType{};
|
||||
|
@ -14,7 +14,7 @@
|
||||
|
||||
namespace jasper::world {
|
||||
|
||||
namespace ncore = nostalgia::core;
|
||||
namespace ngfx = nostalgia::gfx;
|
||||
|
||||
constexpr void setTopEdge(uint8_t &layerAttachments, uint8_t const val) noexcept {
|
||||
layerAttachments = static_cast<uint8_t>((layerAttachments & 0b11111100) | val);
|
||||
|
@ -2,7 +2,7 @@
|
||||
* Copyright 2023 - 2025 Gary Talent (gary@drinkingtea.net). All rights reserved.
|
||||
*/
|
||||
|
||||
#include <nostalgia/core/gfx.hpp>
|
||||
#include <nostalgia/gfx/gfx.hpp>
|
||||
#include <keel/media.hpp>
|
||||
|
||||
#include "typeconv.hpp"
|
||||
|
@ -25,14 +25,14 @@ const glutils::ProgramSource MapTileHighlighter::s_programSrc = {
|
||||
void main() {
|
||||
gl_Position = vec4(vPosition, 0.0, 1.0);
|
||||
fSelection = vSelection;
|
||||
})", ncore::gl::GlslVersion),
|
||||
})", ngfx::gl::GlslVersion),
|
||||
.fragShader = ox::sfmt(R"(
|
||||
{}
|
||||
in float fSelection;
|
||||
out vec4 outColor;
|
||||
void main() {
|
||||
outColor = vec4(0.0, 0.7, 1.0, 0.4) * fSelection;
|
||||
})", ncore::gl::GlslVersion),
|
||||
})", ngfx::gl::GlslVersion),
|
||||
};
|
||||
|
||||
MapTileHighlighter::MapTileHighlighter() {
|
||||
@ -97,8 +97,8 @@ void MapTileHighlighter::setPixelBufferObject(
|
||||
bool const selected,
|
||||
float *vbo,
|
||||
GLuint *ebo) noexcept {
|
||||
auto constexpr xmod = static_cast<float>(ncore::TileWidth) / 240.f * 4;
|
||||
auto constexpr ymod = static_cast<float>(ncore::TileHeight) / 160.f * 4;
|
||||
auto constexpr xmod = static_cast<float>(ngfx::TileWidth) / 240.f * 4;
|
||||
auto constexpr ymod = static_cast<float>(ngfx::TileHeight) / 160.f * 4;
|
||||
x *= xmod;
|
||||
y *= -ymod;
|
||||
x -= 1.0f;
|
||||
|
@ -7,13 +7,13 @@
|
||||
#include <glutils/glutils.hpp>
|
||||
|
||||
#include <studio/context.hpp>
|
||||
#include <nostalgia/core/core.hpp>
|
||||
#include <nostalgia/gfx/core.hpp>
|
||||
|
||||
#include <jasper/world/worldobject.hpp>
|
||||
|
||||
namespace jasper::world {
|
||||
|
||||
namespace ncore = nostalgia::core;
|
||||
namespace ngfx = nostalgia::gfx;
|
||||
|
||||
class MapTileHighlighter {
|
||||
private:
|
||||
|
@ -33,10 +33,10 @@ static class: public studio::Module {
|
||||
ox::Vector<ox::UniquePtr<studio::ItemTemplate>> out;
|
||||
// Person TileSheet
|
||||
{
|
||||
ncore::TileSheetV4 ts;
|
||||
ngfx::TileSheetV4 ts;
|
||||
ts.bpp = 4;
|
||||
auto const addSheet = [&ts](
|
||||
ncore::TileSheetV4::SubSheet &ss,
|
||||
ngfx::TileSheetV4::SubSheet &ss,
|
||||
ox::StringParam name,
|
||||
int const cols,
|
||||
int const rows) -> auto& {
|
||||
@ -52,7 +52,7 @@ static class: public studio::Module {
|
||||
addSheetSet("Back");
|
||||
addSheetSet("Left");
|
||||
addSheetSet("Right");
|
||||
out.emplace_back(ox::make<studio::ItemTemplateT<ncore::TileSheetV4>>(
|
||||
out.emplace_back(ox::make<studio::ItemTemplateT<ngfx::TileSheetV4>>(
|
||||
"Jasper World Person",
|
||||
std::move(ts)));
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
* Copyright 2023 - 2025 Gary Talent (gary@drinkingtea.net). All rights reserved.
|
||||
*/
|
||||
|
||||
#include <nostalgia/core/gfx.hpp>
|
||||
#include <nostalgia/gfx/gfx.hpp>
|
||||
|
||||
#include "worldeditorview.hpp"
|
||||
|
||||
@ -10,7 +10,7 @@ namespace jasper::world {
|
||||
|
||||
WorldEditorView::WorldEditorView(studio::StudioContext &sctx, WorldStatic const&worldStatic):
|
||||
m_sctx{sctx},
|
||||
m_nctx{ncore::init(m_sctx.tctx, {.glInstallDrawer = false}).unwrapThrow()},
|
||||
m_nctx{ngfx::init(m_sctx.tctx, {.glInstallDrawer = false}).unwrapThrow()},
|
||||
m_worldStatic{worldStatic},
|
||||
m_world{*m_nctx, m_worldStatic} {}
|
||||
|
||||
@ -27,7 +27,7 @@ void WorldEditorView::setupTiles() noexcept {
|
||||
}
|
||||
|
||||
ox::Error WorldEditorView::setupWorld() noexcept {
|
||||
glutils::resizeInitFrameBuffer(m_frameBuffer, ncore::gl::drawSize(m_scale));
|
||||
glutils::resizeInitFrameBuffer(m_frameBuffer, ngfx::gl::drawSize(m_scale));
|
||||
if (m_columns != m_worldStatic.columns || m_rows != m_worldStatic.rows) {
|
||||
OX_RETURN_ERROR(m_highlighter.setup({m_worldStatic.columns, m_worldStatic.rows}));
|
||||
m_columns = m_worldStatic.columns;
|
||||
@ -38,11 +38,11 @@ ox::Error WorldEditorView::setupWorld() noexcept {
|
||||
}
|
||||
|
||||
void WorldEditorView::draw(ox::Size const&targetSz) noexcept {
|
||||
auto const scaleSz = targetSz / ncore::gl::drawSize(1);
|
||||
auto const scaleSz = targetSz / ngfx::gl::drawSize(1);
|
||||
if (m_scaleSz != scaleSz) [[unlikely]] {
|
||||
m_scale = ox::max(1, ox::max(scaleSz.width, scaleSz.height));
|
||||
m_scaleSz = ncore::gl::drawSize(m_scale);
|
||||
glutils::resizeInitFrameBuffer(m_frameBuffer, ncore::gl::drawSize(m_scale));
|
||||
m_scaleSz = ngfx::gl::drawSize(m_scale);
|
||||
glutils::resizeInitFrameBuffer(m_frameBuffer, ngfx::gl::drawSize(m_scale));
|
||||
}
|
||||
glutils::FrameBufferBind const frameBufferBind(m_frameBuffer);
|
||||
if (m_animateWorld) {
|
||||
@ -51,7 +51,7 @@ void WorldEditorView::draw(ox::Size const&targetSz) noexcept {
|
||||
turbine::setRefreshWithin(m_sctx.tctx, wakeUp.value);
|
||||
}
|
||||
}
|
||||
ncore::gl::draw(*m_nctx, m_scale);
|
||||
ngfx::gl::draw(*m_nctx, m_scale);
|
||||
m_highlighter.draw();
|
||||
}
|
||||
|
||||
@ -76,7 +76,7 @@ glutils::FrameBuffer const&WorldEditorView::framebuffer() const noexcept {
|
||||
}
|
||||
|
||||
ox::Size WorldEditorView::drawSize() const noexcept {
|
||||
return ncore::gl::drawSize(m_scale);
|
||||
return ngfx::gl::drawSize(m_scale);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,8 +8,8 @@
|
||||
|
||||
#include <studio/studio.hpp>
|
||||
|
||||
#include <nostalgia/core/context.hpp>
|
||||
#include <nostalgia/core/gfx.hpp>
|
||||
#include <nostalgia/gfx/context.hpp>
|
||||
#include <nostalgia/gfx/gfx.hpp>
|
||||
|
||||
#include <jasper/world/world.hpp>
|
||||
|
||||
@ -17,19 +17,19 @@
|
||||
|
||||
namespace jasper::world {
|
||||
|
||||
namespace ncore = nostalgia::core;
|
||||
namespace ngfx = nostalgia::gfx;
|
||||
|
||||
class WorldEditorView: public ox::SignalHandler {
|
||||
|
||||
private:
|
||||
studio::StudioContext &m_sctx;
|
||||
ncore::ContextUPtr m_nctx;
|
||||
ngfx::ContextUPtr m_nctx;
|
||||
WorldStatic const&m_worldStatic;
|
||||
int m_columns{}, m_rows{};
|
||||
World m_world;
|
||||
glutils::FrameBuffer m_frameBuffer;
|
||||
int m_scale = 1;
|
||||
ox::Size m_scaleSz = ncore::gl::drawSize(m_scale);
|
||||
ox::Size m_scaleSz = ngfx::gl::drawSize(m_scale);
|
||||
ox::Optional<studio::Selection> m_selection;
|
||||
MapTileHighlighter m_highlighter;
|
||||
bool m_animateWorld{};
|
||||
|
@ -12,7 +12,7 @@ CollisionMap mapIdx(auto x, auto y) noexcept {
|
||||
}
|
||||
|
||||
CollisionView::CollisionView(studio::StudioContext &sctx):
|
||||
m_nctx(ncore::init(sctx.tctx, {
|
||||
m_nctx(ngfx::init(sctx.tctx, {
|
||||
.glInstallDrawer = false,
|
||||
.glSpriteCount = 0,
|
||||
}).unwrapThrow()),
|
||||
@ -29,9 +29,9 @@ ox::Error CollisionView::setup(
|
||||
m_subsheetTilesWidth = w;
|
||||
m_subsheetTilesHeight = h;
|
||||
m_sheetTileStart = tile;
|
||||
ncore::setBgStatus(*m_nctx, 0, true);
|
||||
OX_RETURN_ERROR(ncore::loadBgTileSheet(*m_nctx, 0, tsAddr));
|
||||
OX_RETURN_ERROR(ncore::loadBgPalette(*m_nctx, 0, palAddr));
|
||||
ngfx::setBgStatus(*m_nctx, 0, true);
|
||||
OX_RETURN_ERROR(ngfx::loadBgTileSheet(*m_nctx, 0, tsAddr));
|
||||
OX_RETURN_ERROR(ngfx::loadBgPalette(*m_nctx, 0, palAddr));
|
||||
OX_RETURN_ERROR(m_highlighter.setup({w / 2, h / 2}));
|
||||
buildGlBuffers(colMap);
|
||||
return {};
|
||||
@ -39,7 +39,7 @@ ox::Error CollisionView::setup(
|
||||
|
||||
void CollisionView::draw() noexcept {
|
||||
glutils::FrameBufferBind const frameBufferBind(m_frameBuffer);
|
||||
ncore::gl::draw(*m_nctx, s_scale);
|
||||
ngfx::gl::draw(*m_nctx, s_scale);
|
||||
m_highlighter.draw();
|
||||
}
|
||||
|
||||
@ -67,7 +67,7 @@ void CollisionView::buildGlBuffers(CollisionMap colMap) noexcept {
|
||||
auto tile = m_sheetTileStart;
|
||||
for (auto y = 0; y < m_subsheetTilesHeight; ++y) {
|
||||
for (auto x = 0; x < m_subsheetTilesWidth; ++x) {
|
||||
ncore::setBgTile(*m_nctx, 0, x, y, tile);
|
||||
ngfx::setBgTile(*m_nctx, 0, x, y, tile);
|
||||
auto const collidable = (colMap >> mapIdx(x, y)) & 1;
|
||||
std::ignore = m_highlighter.setTileHighlight({x, y}, collidable);
|
||||
++tile;
|
||||
|
@ -7,7 +7,7 @@
|
||||
#include <glutils/glutils.hpp>
|
||||
|
||||
#include <studio/context.hpp>
|
||||
#include <nostalgia/core/core.hpp>
|
||||
#include <nostalgia/gfx/core.hpp>
|
||||
|
||||
#include <jasper/world/worldobject.hpp>
|
||||
|
||||
@ -15,12 +15,12 @@
|
||||
|
||||
namespace jasper::world {
|
||||
|
||||
namespace ncore = nostalgia::core;
|
||||
namespace ngfx = nostalgia::gfx;
|
||||
|
||||
class CollisionView {
|
||||
private:
|
||||
static constexpr int s_scale = 5;
|
||||
ncore::ContextUPtr m_nctx;
|
||||
ngfx::ContextUPtr m_nctx;
|
||||
glutils::FrameBuffer m_frameBuffer;
|
||||
uint_t m_sheetTileStart{};
|
||||
int m_subsheetTilesWidth{};
|
||||
|
@ -9,7 +9,7 @@ namespace jasper::world {
|
||||
EditObjectSubSheet::EditObjectSubSheet(
|
||||
WorldObjectSet &doc,
|
||||
size_t const objIdx,
|
||||
ncore::SubSheetId const newSubSheet,
|
||||
ngfx::SubSheetId const newSubSheet,
|
||||
uint8_t const newFrames) noexcept:
|
||||
m_doc{doc},
|
||||
m_objIdx{objIdx},
|
||||
|
@ -110,15 +110,15 @@ class EditObjectSubSheet: public studio::UndoCommand {
|
||||
private:
|
||||
WorldObjectSet &m_doc;
|
||||
size_t const m_objIdx{};
|
||||
ncore::SubSheetId const m_oldSubSheet{};
|
||||
ncore::SubSheetId m_newSubSheet{};
|
||||
ngfx::SubSheetId const m_oldSubSheet{};
|
||||
ngfx::SubSheetId m_newSubSheet{};
|
||||
uint8_t const m_oldFrames{};
|
||||
uint8_t m_newFrames{};
|
||||
public:
|
||||
EditObjectSubSheet(
|
||||
WorldObjectSet &doc,
|
||||
size_t objIdx,
|
||||
ncore::SubSheetId newSubSheet,
|
||||
ngfx::SubSheetId newSubSheet,
|
||||
uint8_t newFrames) noexcept;
|
||||
|
||||
ox::Error redo() noexcept override;
|
||||
|
@ -28,7 +28,7 @@ WorldObjectSetEditorImGui::WorldObjectSetEditorImGui(
|
||||
m_sctx(ctx),
|
||||
m_itemPath(itemPath()),
|
||||
m_doc(*readObj<WorldObjectSet>(keelCtx(m_sctx), itemPath()).unwrapThrow()),
|
||||
m_tileSheet(readObj<ncore::TileSheet>(keelCtx(m_sctx), m_doc.tilesheet).unwrapThrow()) {
|
||||
m_tileSheet(readObj<ngfx::TileSheet>(keelCtx(m_sctx), m_doc.tilesheet).unwrapThrow()) {
|
||||
auto &kctx = keelCtx(m_sctx);
|
||||
auto const [tsPath, err] = getPath(kctx, m_doc.tilesheet);
|
||||
if (!err) {
|
||||
@ -95,7 +95,7 @@ void WorldObjectSetEditorImGui::drawTileSheetSelector() noexcept {
|
||||
ig::InputText("Tile Sheet", m_tilesheetPath, tsFlags);
|
||||
if (ig::DragDropTarget const d; d) {
|
||||
auto const [fr, err] = ig::getDragDropPayload<studio::FileRef>("FileRef");
|
||||
if (!err && endsWith(fr.path, ncore::FileExt_ng)) {
|
||||
if (!err && endsWith(fr.path, ngfx::FileExt_ng)) {
|
||||
std::ignore = setTileSheet(fr.path);
|
||||
}
|
||||
}
|
||||
@ -215,8 +215,8 @@ void WorldObjectSetEditorImGui::drawObjEditor() noexcept {
|
||||
auto const&fb = m_colView.framebuffer();
|
||||
uintptr_t const buffId = fb.color.id;
|
||||
auto const scale = static_cast<float>(m_colView.scale());
|
||||
auto const width = static_cast<float>(m_visibleSubsheet->columns * ncore::TileWidth);
|
||||
auto const height = static_cast<float>(m_visibleSubsheet->rows * ncore::TileHeight);
|
||||
auto const width = static_cast<float>(m_visibleSubsheet->columns * ngfx::TileWidth);
|
||||
auto const height = static_cast<float>(m_visibleSubsheet->rows * ngfx::TileHeight);
|
||||
auto const horzPct = width / 240.f;
|
||||
auto const vertPct = height / 160.f;
|
||||
auto const imageSz = ImVec2{width * scale, height * scale};
|
||||
@ -238,7 +238,7 @@ void WorldObjectSetEditorImGui::drawObjEditor() noexcept {
|
||||
}
|
||||
}
|
||||
|
||||
void WorldObjectSetEditorImGui::drawSubSheetNode(ncore::TileSheet::SubSheet const&ss) noexcept {
|
||||
void WorldObjectSetEditorImGui::drawSubSheetNode(ngfx::TileSheet::SubSheet const&ss) noexcept {
|
||||
auto constexpr dirFlags = ImGuiTreeNodeFlags_OpenOnArrow | ImGuiTreeNodeFlags_OpenOnDoubleClick;
|
||||
auto const&obj = activeObj();
|
||||
auto const selected = ss.id == obj.subsheetId ? ImGuiTreeNodeFlags_Selected : 0;
|
||||
@ -285,7 +285,7 @@ void WorldObjectSetEditorImGui::drawPaletteList() noexcept {
|
||||
}
|
||||
if (ig::DragDropTarget const d; d) {
|
||||
auto const [fr, err] = ig::getDragDropPayload<studio::FileRef>("FileRef");
|
||||
if (!err && endsWith(fr.path, ncore::FileExt_npal)) {
|
||||
if (!err && endsWith(fr.path, ngfx::FileExt_npal)) {
|
||||
addPalette(fr.path);
|
||||
}
|
||||
}
|
||||
@ -315,7 +315,7 @@ void WorldObjectSetEditorImGui::drawAddPalettePopup() noexcept {
|
||||
auto constexpr popupSz = ImVec2{285.f, 0};
|
||||
ig::IDStackItem const idStackItem{"AddPalette"};
|
||||
if (ig::BeginPopup(m_sctx.tctx, popupName, m_addPalPopup.show, popupSz)) {
|
||||
auto const&palettes = m_sctx.project->fileList(ncore::FileExt_npal);
|
||||
auto const&palettes = m_sctx.project->fileList(ngfx::FileExt_npal);
|
||||
ig::ComboBox("Palette", palettes, m_addPalPopup.selectedIdx);
|
||||
if (ig::PopupControlsOkCancel(popupSz.x, m_addPalPopup.show) == ig::PopupResponse::OK) {
|
||||
addPalette(palettes[m_addPalPopup.selectedIdx]);
|
||||
@ -359,7 +359,7 @@ ox::Error WorldObjectSetEditorImGui::handleCmd(studio::UndoCommand const*cmd) no
|
||||
if (dynamic_cast<ChangeTileSheet const*>(cmd)) {
|
||||
auto &kctx = keelCtx(m_sctx.tctx);
|
||||
std::ignore = m_tileSheet.updated.disconnectObject(this);
|
||||
oxLogError(readObj<ncore::TileSheet>(kctx, m_doc.tilesheet).moveTo(m_tileSheet));
|
||||
oxLogError(readObj<ngfx::TileSheet>(kctx, m_doc.tilesheet).moveTo(m_tileSheet));
|
||||
m_tileSheet.updated.connect(this, &WorldObjectSetEditorImGui::loadObj);
|
||||
} else if (
|
||||
dynamic_cast<AddPalette const*>(cmd) ||
|
||||
|
@ -18,8 +18,8 @@ class WorldObjectSetEditorImGui: public studio::Editor {
|
||||
studio::StudioContext &m_sctx;
|
||||
ox::String m_itemPath;
|
||||
WorldObjectSet m_doc;
|
||||
keel::AssetRef<ncore::TileSheet> m_tileSheet;
|
||||
ncore::TileSheet::SubSheet const*m_visibleSubsheet = nullptr;
|
||||
keel::AssetRef<ngfx::TileSheet> m_tileSheet;
|
||||
ngfx::TileSheet::SubSheet const*m_visibleSubsheet = nullptr;
|
||||
ox::Vector<ox::String> m_paletteDisplayNames;
|
||||
size_t m_selectedObj{};
|
||||
size_t m_selectedPal{};
|
||||
@ -58,7 +58,7 @@ class WorldObjectSetEditorImGui: public studio::Editor {
|
||||
|
||||
void drawObjEditor() noexcept;
|
||||
|
||||
void drawSubSheetNode(ncore::TileSheet::SubSheet const&ss) noexcept;
|
||||
void drawSubSheetNode(ngfx::TileSheet::SubSheet const&ss) noexcept;
|
||||
|
||||
void drawPaletteList() noexcept;
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include <keel/keel.hpp>
|
||||
|
||||
#include <nostalgia/core/gfx.hpp>
|
||||
#include <nostalgia/gfx/gfx.hpp>
|
||||
|
||||
#include <jasper/world/world.hpp>
|
||||
|
||||
@ -15,7 +15,7 @@ static bool isUpdatingObj(ObjTileRefSet const&obj) noexcept {
|
||||
return obj.frames > 1;
|
||||
}
|
||||
|
||||
World::World(ncore::Context &nctx, WorldStatic const&worldStatic) noexcept:
|
||||
World::World(ngfx::Context &nctx, WorldStatic const&worldStatic) noexcept:
|
||||
m_nctx(nctx),
|
||||
m_worldStatic(worldStatic) {}
|
||||
|
||||
@ -38,17 +38,17 @@ ox::Error World::setupDisplay() noexcept {
|
||||
if (m_tilesheets.empty()) {
|
||||
auto &kctx = keelCtx(m_nctx);
|
||||
for (auto const&tsAddr : m_worldStatic.tilesheets) {
|
||||
OX_REQUIRE_M(ts, keel::readObj<ncore::CompactTileSheet>(kctx, tsAddr));
|
||||
OX_REQUIRE_M(ts, keel::readObj<ngfx::CompactTileSheet>(kctx, tsAddr));
|
||||
m_tilesheets.emplace_back(std::move(ts));
|
||||
}
|
||||
}
|
||||
for (auto i = 0u; auto const&palAddr : m_worldStatic.palettes) {
|
||||
OX_RETURN_ERROR(ncore::loadBgPalette(m_nctx, i, palAddr));
|
||||
OX_RETURN_ERROR(ngfx::loadBgPalette(m_nctx, i, palAddr));
|
||||
++i;
|
||||
}
|
||||
for (size_t i = 1; i < m_worldStatic.objTileRefSets.size(); ++i) {
|
||||
auto const&rs = m_worldStatic.objTileRefSets[i];
|
||||
OX_RETURN_ERROR(ncore::loadBgTileSheet(
|
||||
OX_RETURN_ERROR(ngfx::loadBgTileSheet(
|
||||
m_nctx,
|
||||
rs.cbb,
|
||||
*m_tilesheets[rs.tilesheetId],
|
||||
@ -72,7 +72,7 @@ ox::Result<int> World::update() noexcept {
|
||||
|
||||
void World::setupTiles() noexcept {
|
||||
m_currentTicks = ticksMs(turbineCtx(m_nctx));
|
||||
ncore::setBgStatus(m_nctx, 0); // disable all backgrounds
|
||||
ngfx::setBgStatus(m_nctx, 0); // disable all backgrounds
|
||||
for (auto layerNo = 0u; auto const&layer : m_worldStatic.map) {
|
||||
setupLayer(layerNo, layer.cbb);
|
||||
++layerNo;
|
||||
@ -87,19 +87,19 @@ void World::setupTile(
|
||||
auto const tx = static_cast<int>(x) * 2;
|
||||
auto const ty = static_cast<int>(y) * 2;
|
||||
auto const &obj = m_worldStatic.objTileRefSets[t.objIdxRefSet];
|
||||
ncore::setBgTile(m_nctx, lyr, tx + 0, ty + 0, {
|
||||
ngfx::setBgTile(m_nctx, lyr, tx + 0, ty + 0, {
|
||||
.tileIdx = static_cast<uint_t>(obj.cbbIdx + 0),
|
||||
.palBank = obj.palBank,
|
||||
});
|
||||
ncore::setBgTile(m_nctx, lyr, tx + 1, ty + 0, {
|
||||
ngfx::setBgTile(m_nctx, lyr, tx + 1, ty + 0, {
|
||||
.tileIdx = static_cast<uint_t>(obj.cbbIdx + 1),
|
||||
.palBank = obj.palBank,
|
||||
});
|
||||
ncore::setBgTile(m_nctx, lyr, tx + 0, ty + 1, {
|
||||
ngfx::setBgTile(m_nctx, lyr, tx + 0, ty + 1, {
|
||||
.tileIdx = static_cast<uint_t>(obj.cbbIdx + 2),
|
||||
.palBank = obj.palBank,
|
||||
});
|
||||
ncore::setBgTile(m_nctx, lyr, tx + 1, ty + 1, {
|
||||
ngfx::setBgTile(m_nctx, lyr, tx + 1, ty + 1, {
|
||||
.tileIdx = static_cast<uint_t>(obj.cbbIdx + 3),
|
||||
.palBank = obj.palBank,
|
||||
});
|
||||
@ -112,7 +112,7 @@ ox::Result<turbine::TimeMs> World::updateObj(ObjState &state) noexcept {
|
||||
if (state.frame >= obj.frames) {
|
||||
state.frame = 0;
|
||||
}
|
||||
OX_RETURN_ERROR(ncore::loadBgTileSheet(
|
||||
OX_RETURN_ERROR(ngfx::loadBgTileSheet(
|
||||
m_nctx,
|
||||
obj.cbb,
|
||||
*m_tilesheets[obj.tilesheetId],
|
||||
@ -127,11 +127,11 @@ ox::Result<turbine::TimeMs> World::updateObj(ObjState &state) noexcept {
|
||||
void World::setupLayer(
|
||||
uint_t const lyr,
|
||||
uint_t const cbb) noexcept {
|
||||
ncore::clearBg(m_nctx, lyr);
|
||||
ncore::setBgStatus(m_nctx, lyr, true);
|
||||
ncore::setBgCbb(m_nctx, lyr, cbb);
|
||||
auto const rows = ox::min<int>(m_worldStatic.rows, ncore::tileRows(m_nctx) / 2);
|
||||
auto const columns = ox::min<int>(m_worldStatic.columns, ncore::tileColumns(m_nctx) / 2);
|
||||
ngfx::clearBg(m_nctx, lyr);
|
||||
ngfx::setBgStatus(m_nctx, lyr, true);
|
||||
ngfx::setBgCbb(m_nctx, lyr, cbb);
|
||||
auto const rows = ox::min<int>(m_worldStatic.rows, ngfx::tileRows(m_nctx) / 2);
|
||||
auto const columns = ox::min<int>(m_worldStatic.columns, ngfx::tileColumns(m_nctx) / 2);
|
||||
for (auto y = 0; y < rows; ++y) {
|
||||
for (auto x = 0; x < columns; ++x) {
|
||||
setupTile(lyr, static_cast<uint32_t>(x), static_cast<uint32_t>(y));
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include <keel/media.hpp>
|
||||
|
||||
#include <nostalgia/core/gfx.hpp>
|
||||
#include <nostalgia/gfx/gfx.hpp>
|
||||
|
||||
#include <jasper/world/worldobject.hpp>
|
||||
#include <jasper/world/worldstatic.hpp>
|
||||
@ -20,7 +20,7 @@ static void ensureInVec(ox::Vector<ox::FileAddress> &vec, ox::FileAddress const&
|
||||
// If the root subsheet is not a leaf node, it will return the
|
||||
// tile count of the first leaf node that it finds.
|
||||
[[nodiscard]]
|
||||
static uint8_t subsheetTileCnt(ncore::TileSheet::SubSheet const&ss) noexcept {
|
||||
static uint8_t subsheetTileCnt(ngfx::TileSheet::SubSheet const&ss) noexcept {
|
||||
if (ss.subsheets.empty()) {
|
||||
return static_cast<uint8_t>(ss.size());
|
||||
}
|
||||
@ -148,14 +148,14 @@ ox::Result<uint8_t> WorldStaticLoader::setupTileResrc(DocObjRef const&docObjRef)
|
||||
if (obj == objSet->objects.end()) {
|
||||
return ox::Error{obj == objSet->objects.end(), "could not find WorldObject in WorldObjectSet"};
|
||||
}
|
||||
OX_REQUIRE(ts, keel::readObj<ncore::TileSheet>(m_kctx, objSet->tilesheet));
|
||||
OX_REQUIRE(ts, keel::readObj<ngfx::TileSheet>(m_kctx, objSet->tilesheet));
|
||||
OX_REQUIRE(tsIdx, ox::findIdx(
|
||||
m_worldStatic.tilesheets.begin(), m_worldStatic.tilesheets.end(), objSet->tilesheet).to<uint8_t>());
|
||||
auto const subsheetOffset = ncore::getTileIdx(*ts, obj->subsheetId);
|
||||
auto const subsheetOffset = ngfx::getTileIdx(*ts, obj->subsheetId);
|
||||
if (!subsheetOffset) {
|
||||
return ox::Error{1, "invalid subsheet idx"};
|
||||
}
|
||||
auto const subsheet = ncore::getSubsheet(*ts, obj->subsheetId);
|
||||
auto const subsheet = ngfx::getSubsheet(*ts, obj->subsheetId);
|
||||
if (!subsheet) {
|
||||
return ox::Error{1, "could not find subsheet"};
|
||||
}
|
||||
|
@ -8,12 +8,12 @@
|
||||
#include <keel/keel.hpp>
|
||||
#include <turbine/turbine.hpp>
|
||||
|
||||
#include <nostalgia/core/core.hpp>
|
||||
#include <nostalgia/gfx/core.hpp>
|
||||
|
||||
#include <jasper/core/bootfile.hpp>
|
||||
#include <jasper/world/world.hpp>
|
||||
|
||||
namespace ncore = nostalgia::core;
|
||||
namespace ngfx = nostalgia::gfx;
|
||||
|
||||
using namespace jasper;
|
||||
|
||||
@ -27,7 +27,7 @@ ox::Error run(
|
||||
auto &kctx = keelCtx(*tctx);
|
||||
OX_REQUIRE(bootfile, keel::readObj<jasper::core::Bootfile>(kctx, "/Bootfile"));
|
||||
oxOut("Jasper Player\n");
|
||||
OX_REQUIRE(nctx, ncore::init(*tctx));
|
||||
OX_REQUIRE(nctx, ngfx::init(*tctx));
|
||||
auto const&worldPath = *bootfile->args.at(0).unwrap();
|
||||
OX_REQUIRE(worldStatic, readObj<world::WorldStatic>(kctx, worldPath));
|
||||
world::World world(*nctx, *worldStatic);
|
||||
|
Loading…
x
Reference in New Issue
Block a user