This commit is contained in:
@@ -13,79 +13,66 @@
|
|||||||
|
|
||||||
namespace nostalgia::gfx {
|
namespace nostalgia::gfx {
|
||||||
|
|
||||||
static class: public keel::Module {
|
static struct: keel::Module {
|
||||||
public:
|
|
||||||
[[nodiscard]]
|
|
||||||
ox::String id() const noexcept override {
|
|
||||||
return ox::String{"net.drinkingtea.nostalgia.gfx"};
|
|
||||||
}
|
|
||||||
|
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
ox::Vector<keel::TypeDescGenerator> types() const noexcept final {
|
ox::String id() const noexcept override {
|
||||||
return {
|
return ox::String{"net.drinkingtea.nostalgia.gfx"};
|
||||||
keel::generateTypeDesc<TileSheetV1>,
|
}
|
||||||
keel::generateTypeDesc<TileSheetV2>,
|
|
||||||
keel::generateTypeDesc<TileSheetV3>,
|
|
||||||
keel::generateTypeDesc<TileSheetV4>,
|
|
||||||
keel::generateTypeDesc<TileSheetV5>,
|
|
||||||
keel::generateTypeDesc<CompactTileSheetV1>,
|
|
||||||
keel::generateTypeDesc<PaletteV1>,
|
|
||||||
keel::generateTypeDesc<PaletteV2>,
|
|
||||||
keel::generateTypeDesc<PaletteV3>,
|
|
||||||
keel::generateTypeDesc<PaletteV4>,
|
|
||||||
keel::generateTypeDesc<PaletteV5>,
|
|
||||||
keel::generateTypeDesc<CompactPaletteV1>,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
ox::Vector<keel::Converter> converters() const noexcept final {
|
ox::Vector<keel::TypeDescGenerator> types() const noexcept final {
|
||||||
return {
|
return {
|
||||||
keel::Converter::make<convertNostalgiaPaletteToPaletteV1>(),
|
keel::generateTypeDesc<TileSheetV1>,
|
||||||
keel::Converter::make<convertPaletteV1ToPaletteV2>(),
|
keel::generateTypeDesc<TileSheetV2>,
|
||||||
keel::Converter::make<convertPaletteV2ToPaletteV3>(),
|
keel::generateTypeDesc<TileSheetV3>,
|
||||||
keel::Converter::make<convertPaletteV3ToPaletteV4>(),
|
keel::generateTypeDesc<TileSheetV4>,
|
||||||
keel::Converter::make<convertPaletteV4ToPaletteV5>(),
|
keel::generateTypeDesc<TileSheetV5>,
|
||||||
keel::Converter::make<convertPaletteToCompactPalette>(),
|
keel::generateTypeDesc<CompactTileSheetV1>,
|
||||||
keel::Converter::make<convertTileSheetV1ToTileSheetV2>(),
|
keel::generateTypeDesc<PaletteV1>,
|
||||||
keel::Converter::make<convertTileSheetV2ToTileSheetV3>(),
|
keel::generateTypeDesc<PaletteV2>,
|
||||||
keel::Converter::make<convertTileSheetV3ToTileSheetV4>(),
|
keel::generateTypeDesc<PaletteV3>,
|
||||||
keel::Converter::make<convertTileSheetV4ToTileSheetV5>(),
|
keel::generateTypeDesc<PaletteV4>,
|
||||||
keel::Converter::make<convertTileSheetToCompactTileSheet>(),
|
keel::generateTypeDesc<PaletteV5>,
|
||||||
};
|
keel::generateTypeDesc<CompactPaletteV1>,
|
||||||
}
|
};
|
||||||
|
}
|
||||||
|
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
ox::Vector<keel::PackTransform> packTransforms() const noexcept final {
|
ox::Vector<keel::Converter> converters() const noexcept final {
|
||||||
return {
|
return {
|
||||||
// convert tilesheets to CompactTileSheets
|
keel::Converter::make<convertNostalgiaPaletteToPaletteV1>(),
|
||||||
[](keel::Context &ctx, ox::Buffer &buff, ox::StringViewCR typeId) -> ox::Result<bool> {
|
keel::Converter::make<convertPaletteV1ToPaletteV2>(),
|
||||||
if (typeId == ox::ModelTypeId_v<TileSheetV1> ||
|
keel::Converter::make<convertPaletteV2ToPaletteV3>(),
|
||||||
typeId == ox::ModelTypeId_v<TileSheetV2> ||
|
keel::Converter::make<convertPaletteV3ToPaletteV4>(),
|
||||||
typeId == ox::ModelTypeId_v<TileSheetV3> ||
|
keel::Converter::make<convertPaletteV4ToPaletteV5>(),
|
||||||
typeId == ox::ModelTypeId_v<TileSheetV4> ||
|
keel::Converter::make<convertPaletteToCompactPalette>(),
|
||||||
typeId == ox::ModelTypeId_v<TileSheetV5>) {
|
keel::Converter::make<convertTileSheetV1ToTileSheetV2>(),
|
||||||
OX_RETURN_ERROR(keel::convertBuffToBuff<CompactTileSheet>(
|
keel::Converter::make<convertTileSheetV2ToTileSheetV3>(),
|
||||||
ctx, buff, ox::ClawFormat::Metal).moveTo(buff));
|
keel::Converter::make<convertTileSheetV3ToTileSheetV4>(),
|
||||||
return true;
|
keel::Converter::make<convertTileSheetV4ToTileSheetV5>(),
|
||||||
}
|
keel::Converter::make<convertTileSheetToCompactTileSheet>(),
|
||||||
return false;
|
};
|
||||||
},
|
}
|
||||||
[](keel::Context &ctx, ox::Buffer &buff, ox::StringViewCR typeId) -> ox::Result<bool> {
|
|
||||||
if (typeId == ox::ModelTypeId_v<NostalgiaPalette> ||
|
[[nodiscard]]
|
||||||
typeId == ox::ModelTypeId_v<PaletteV1> ||
|
ox::Vector<keel::PackTransform> packTransforms() const noexcept final {
|
||||||
typeId == ox::ModelTypeId_v<PaletteV2> ||
|
return {
|
||||||
typeId == ox::ModelTypeId_v<PaletteV3> ||
|
// convert tilesheets to CompactTileSheets
|
||||||
typeId == ox::ModelTypeId_v<PaletteV4> ||
|
keel::transformRule<TileSheetV1, CompactTileSheet>,
|
||||||
typeId == ox::ModelTypeId_v<PaletteV5>) {
|
keel::transformRule<TileSheetV2, CompactTileSheet>,
|
||||||
OX_RETURN_ERROR(keel::convertBuffToBuff<CompactPalette>(
|
keel::transformRule<TileSheetV3, CompactTileSheet>,
|
||||||
ctx, buff, ox::ClawFormat::Metal).moveTo(buff));
|
keel::transformRule<TileSheetV4, CompactTileSheet>,
|
||||||
return true;
|
keel::transformRule<TileSheetV5, CompactTileSheet>,
|
||||||
}
|
// convert palettes to CompactPalettes
|
||||||
return false;
|
keel::transformRule<NostalgiaPalette, CompactPalette>,
|
||||||
},
|
keel::transformRule<PaletteV1, CompactPalette>,
|
||||||
};
|
keel::transformRule<PaletteV2, CompactPalette>,
|
||||||
}
|
keel::transformRule<PaletteV3, CompactPalette>,
|
||||||
|
keel::transformRule<PaletteV4, CompactPalette>,
|
||||||
|
keel::transformRule<PaletteV5, CompactPalette>,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
} const mod;
|
} const mod;
|
||||||
|
|
||||||
|
|||||||
@@ -109,8 +109,8 @@ static void convertSubsheet(
|
|||||||
dst.rows = src.rows;
|
dst.rows = src.rows;
|
||||||
dst.pixels = std::move(src.pixels);
|
dst.pixels = std::move(src.pixels);
|
||||||
++idIt;
|
++idIt;
|
||||||
dst.subsheets.resize(src.subsheets.size());
|
dst.subsheets.reserveResize(src.subsheets.size());
|
||||||
for (auto i = 0u; i < src.subsheets.size(); ++i) {
|
for (size_t i{}; i < src.subsheets.size(); ++i) {
|
||||||
convertSubsheet(src.subsheets[i], dst.subsheets[i], idIt);
|
convertSubsheet(src.subsheets[i], dst.subsheets[i], idIt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -136,8 +136,8 @@ static void convertSubsheet(
|
|||||||
dst.rows = src.rows;
|
dst.rows = src.rows;
|
||||||
dst.pixels = std::move(src.pixels);
|
dst.pixels = std::move(src.pixels);
|
||||||
++idIt;
|
++idIt;
|
||||||
dst.subsheets.resize(src.subsheets.size());
|
dst.subsheets.reserveResize(src.subsheets.size());
|
||||||
for (auto i = 0u; i < src.subsheets.size(); ++i) {
|
for (size_t i{}; i < src.subsheets.size(); ++i) {
|
||||||
convertSubsheet(src.subsheets[i], dst.subsheets[i], idIt);
|
convertSubsheet(src.subsheets[i], dst.subsheets[i], idIt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -173,8 +173,8 @@ static void convertSubsheet(
|
|||||||
} else {
|
} else {
|
||||||
dst.pixels = std::move(src.pixels);
|
dst.pixels = std::move(src.pixels);
|
||||||
}
|
}
|
||||||
dst.subsheets.resize(src.subsheets.size());
|
dst.subsheets.reserveResize(src.subsheets.size());
|
||||||
for (auto i = 0u; i < src.subsheets.size(); ++i) {
|
for (size_t i{}; i < src.subsheets.size(); ++i) {
|
||||||
convertSubsheet(bpp, src.subsheets[i], dst.subsheets[i]);
|
convertSubsheet(bpp, src.subsheets[i], dst.subsheets[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user