Remove Rectangle constructors

This commit is contained in:
Jaby Blubb 2023-09-27 22:09:15 +02:00
parent 7e5b92253c
commit 765cd539fe
3 changed files with 44 additions and 22 deletions

View File

@ -23,7 +23,7 @@ namespace object {
tex_page(GPU::TexPage::create(
{TIM.get_texture_x(), TIM.get_texture_y()},
GPU::TexturePageColor::$4bit).linked()),
sprite(GPU::SPRT(
sprite(GPU::SPRT::create(
#pragma GCC warning "This pic used to be 122px (file size) and every tool would except it - however the display would be corrupt"
GPU::AreaI16({0, 100}, {120, 128}),
GPU::PagePositionClut({0, 0}, GPU::PageClut(TIM.get_clut_x(), TIM.get_clut_y())),

View File

@ -110,19 +110,19 @@ static constexpr const auto line4 = GPU::LINE_G::create(
GPU::ColorVertex{GPU::Color24::White(), {0, 0}}
);
static constexpr const auto rect1 = GPU::TILE(GPU::AreaI16({GPU::Display::Width - 32, GPU::Display::Height - 32}, {32, 32}), GPU::Color24::Green());
static constexpr const auto rect2 = GPU::TILE_16({GPU::Display::Width - 16, GPU::Display::Height - 16}, GPU::Color24::Blue());
static constexpr const auto rect3 = GPU::TILE_8({GPU::Display::Width - 8, GPU::Display::Height - 8}, GPU::Color24::Yellow());
static constexpr const auto rect4 = GPU::TILE_1({GPU::Display::Width - 1, GPU::Display::Height - 1}, GPU::Color24::Red());
static constexpr const auto rect1 = GPU::TILE::create(GPU::AreaI16({GPU::Display::Width - 32, GPU::Display::Height - 32}, {32, 32}), GPU::Color24::Green());
static constexpr const auto rect2 = GPU::TILE_16::create({GPU::Display::Width - 16, GPU::Display::Height - 16}, GPU::Color24::Blue());
static constexpr const auto rect3 = GPU::TILE_8::create({GPU::Display::Width - 8, GPU::Display::Height - 8}, GPU::Color24::Yellow());
static constexpr const auto rect4 = GPU::TILE_1::create({GPU::Display::Width - 1, GPU::Display::Height - 1}, GPU::Color24::Red());
static constexpr const auto texpage = GPU::TexPage::create({320, 0}, GPU::TexturePageColor::$4bit);
static constexpr const auto rect5 = GPU::SPRT(GPU::AreaI16({0, GPU::Display::Height - 32}, {32, 32}), {{0, 0}, TriangleClut}, GPU::Color24::Green());
static constexpr const auto rect6 = GPU::SPRT_16({0, GPU::Display::Height - 16}, {{0, 0}, TriangleClut}, GPU::Color24::Blue());
static constexpr const auto rect7 = GPU::SPRT_8({0, GPU::Display::Height - 8}, {{0, 0}, TriangleClut}, GPU::Color24::Yellow());
static constexpr const auto rect8 = GPU::SPRT_1({0, GPU::Display::Height - 1}, {{0, 0}, TriangleClut}, GPU::Color24::Red());
static constexpr const auto rect5 = GPU::SPRT::create(GPU::AreaI16({0, GPU::Display::Height - 32}, {32, 32}), {{0, 0}, TriangleClut}, GPU::Color24::Green());
static constexpr const auto rect6 = GPU::SPRT_16::create({0, GPU::Display::Height - 16}, {{0, 0}, TriangleClut}, GPU::Color24::Blue());
static constexpr const auto rect7 = GPU::SPRT_8::create({0, GPU::Display::Height - 8}, {{0, 0}, TriangleClut}, GPU::Color24::Yellow());
static constexpr const auto rect8 = GPU::SPRT_1::create({0, GPU::Display::Height - 1}, {{0, 0}, TriangleClut}, GPU::Color24::Red());
static auto rect9 = GPU::SPRT(GPU::AreaI16({GPU::Display::Width/2, GPU::Display::Height/2}, {32, 32}).centered(), {{0, 0}, TriangleClut}, GPU::Color24::Grey()).linked();
static auto rect10 = GPU::SPRT(GPU::AreaI16({GPU::Display::Width/2, GPU::Display::Height/2 - 32}, {32, 32}).centered(), {{0, 0}, TriangleClut}, GPU::Color24::Grey()).linked();
static auto rect9 = GPU::SPRT::create(GPU::AreaI16({GPU::Display::Width/2, GPU::Display::Height/2}, {32, 32}).centered(), {{0, 0}, TriangleClut}, GPU::Color24::Grey()).linked();
static auto rect10 = GPU::SPRT::create(GPU::AreaI16({GPU::Display::Width/2, GPU::Display::Height/2 - 32}, {32, 32}).centered(), {{0, 0}, TriangleClut}, GPU::Color24::Grey()).linked();
static void load_assets() {
static const CDFile Assets[] = {

View File

@ -46,8 +46,10 @@ namespace JabyEngine {
Code code;
Vertex position;
constexpr RECT_BASE_F() = default;
constexpr RECT_BASE_F(const Vertex& position, const Color24& color) : color(color), code(IdentityCode), position(position) {
static constexpr RECT_BASE_F create(const Vertex& position, const Color24& color) {
return RECT_BASE_F {
.color = color, .code = IdentityCode, .position = position
};
}
};
@ -62,19 +64,31 @@ namespace JabyEngine {
PagePosition page;
PageClut clut;
constexpr RECT_BASE_T() = default;
constexpr RECT_BASE_T(const Vertex& position, const PagePositionClut& page, const Color24& color = Color24::Grey()) : color(color), code(IdentityCode), position(position), page(page.page), clut(page.clut) {
static constexpr RECT_BASE_T create(const Vertex& position, const PagePositionClut& page, const Color24& color = Color24::Grey()) {
return RECT_BASE_T {
.color = color, .code = IdentityCode, .position = position, .page = page.page, .clut = page.clut
};
}
};
template<typename RectCode::SizeType Size>
struct RECT_F : public RECT_BASE_F<Size>, public internal::RenderPrimitive<RECT_F<Size>>, public internal::LinkedElementCreator<RECT_F<Size>> {
using RECT_BASE_F<Size>::RECT_BASE_F;
static constexpr RECT_F create(const Vertex& position, const Color24& color) {
RECT_F rect;
static_cast<RECT_BASE_F<Size>&>(rect) = RECT_BASE_F<Size>::create(position, color);
return rect;
}
};
template<typename RectCode::SizeType Size>
struct RECT_T : public RECT_BASE_T<Size>, public internal::RenderPrimitive<RECT_T<Size>>, public internal::LinkedElementCreator<RECT_T<Size>> {
using RECT_BASE_T<Size>::RECT_BASE_T;
static constexpr RECT_T create(const Vertex& position, const PagePositionClut& page, const Color24& color = Color24::Grey()) {
RECT_T rect;
static_cast<RECT_BASE_T<Size>&>(rect) = RECT_BASE_T<Size>::create(position, page, color);
return rect;
}
};
}
@ -84,8 +98,12 @@ namespace JabyEngine {
struct TILE : public internal::RECT_BASE_F<internal::RectCode::SizeType::Variable>, public internal::RenderPrimitive<TILE>, public internal::LinkedElementCreator<TILE> {
SizeI16 size;
constexpr TILE() = default;
constexpr TILE(const AreaI16& area, const Color24& color) : RECT_BASE_F(area.position, color), size(area.size) {
static constexpr TILE create(const AreaI16& area, const Color24& color) {
TILE tile;
static_cast<RECT_BASE_F&>(tile) = RECT_BASE_F::create(area.position, color);
tile.size = area.size;
return tile;
}
};
@ -95,8 +113,12 @@ namespace JabyEngine {
struct SPRT : public internal::RECT_BASE_T<internal::RectCode::SizeType::Variable>, public internal::RenderPrimitive<SPRT>, public internal::LinkedElementCreator<SPRT> {
SizeI16 size;
constexpr SPRT() = default;
constexpr SPRT(const AreaI16& area, const PagePositionClut& page, const Color24& color = Color24::Grey()) : RECT_BASE_T(area.position, page, color), size(area.size) {
static constexpr SPRT create(const AreaI16& area, const PagePositionClut& page, const Color24& color = Color24::Grey()) {
SPRT sprt;
static_cast<RECT_BASE_T&>(sprt) = RECT_BASE_T::create(area.position, page, color);
sprt.size = area.size;
return sprt;
}
};
}