Turn Paco into an object
This commit is contained in:
parent
49de845537
commit
9136d762fb
|
@ -0,0 +1,25 @@
|
|||
#include "paco.hpp"
|
||||
|
||||
namespace object {
|
||||
const GPU::Color24 Paco :: Colors[] = {GPU::Color24::Red(), GPU::Color24::Green(), GPU::Color24::Blue(), GPU::Color24::Yellow()};
|
||||
|
||||
void Paco :: setup() {
|
||||
this->timer.reset();
|
||||
// This should only work on elements that are linkable - but it didn't
|
||||
this->tex_page.concat(this->sprite);
|
||||
}
|
||||
|
||||
void Paco :: update() {
|
||||
if(this->timer.is_expired_for(325_ms)) {
|
||||
static constexpr uint8_t LastIDX = (sizeof(Paco::Colors)/sizeof(Paco::Colors[0])) - 1;
|
||||
|
||||
this->color_idx = (this->color_idx == LastIDX) ? 0 : this->color_idx + 1;
|
||||
this->timer.reset();
|
||||
}
|
||||
}
|
||||
|
||||
void Paco :: render() {
|
||||
this->sprite->color = Paco::Colors[this->color_idx];
|
||||
GPU::render(this->tex_page);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
#ifndef __PACO_HPP__
|
||||
#define __PACO_HPP__
|
||||
#include <PSX/File/Processor/cd_file_processor.hpp>
|
||||
#include <PSX/GPU/gpu.hpp>
|
||||
#include <PSX/Timer/frame_timer.hpp>
|
||||
|
||||
namespace object {
|
||||
using namespace JabyEngine;
|
||||
|
||||
class Paco {
|
||||
public:
|
||||
static constexpr auto TIM = SimpleTIM(896, 0, 960, 510);
|
||||
private:
|
||||
static const GPU::Color24 Colors[];
|
||||
|
||||
GPU::TexPage::Linked tex_page;
|
||||
GPU::SPRT::Linked sprite;
|
||||
SimpleTimer<uint8_t> timer;
|
||||
uint8_t color_idx;
|
||||
|
||||
public:
|
||||
constexpr Paco() :
|
||||
tex_page(GPU::TexPage(
|
||||
{TIM.get_texture_x(), TIM.get_texture_y()},
|
||||
GPU::TexturePageColor::$4bit).linked()),
|
||||
sprite(GPU::SPRT(
|
||||
// This pic used to be 122px (file size) and every tool would except it - however the display would be corrupt. Try it!!
|
||||
GPU::AreaI16({0, 100}, {120, 128}),
|
||||
GPU::PagePositionClut({0, 0}, GPU::PageClut(TIM.get_clut_x(), TIM.get_clut_y())),
|
||||
GPU::Color24::Blue()).linked()),
|
||||
timer(),
|
||||
color_idx(0) {}
|
||||
|
||||
void setup();
|
||||
void update();
|
||||
void render();
|
||||
};
|
||||
}
|
||||
|
||||
#endif //!__PACO_HPP__
|
|
@ -6,7 +6,6 @@ namespace Assets {
|
|||
using namespace JabyEngine;
|
||||
|
||||
static constexpr auto FontTIM = SimpleTIM(960, 0, 960, 511);
|
||||
static constexpr auto PacoTIM = SimpleTIM(896, 0, 960, 510);
|
||||
void load_for_main();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "FontWriter/font_writer.hpp"
|
||||
#include "Objects/paco.hpp"
|
||||
#include "assets.hpp"
|
||||
#include <PSX/GPU/gpu.hpp>
|
||||
#include <PSX/GPU/gpu_primitives.hpp>
|
||||
|
@ -7,48 +8,26 @@
|
|||
|
||||
using namespace JabyEngine;
|
||||
|
||||
static SimpleTimer<uint8_t> timer;
|
||||
static auto paco_texpage = GPU::TexPage(
|
||||
{Assets::PacoTIM.get_texture_x(), Assets::PacoTIM.get_texture_y()},
|
||||
GPU::TexturePageColor::$4bit
|
||||
).linked();
|
||||
static auto paco = GPU::SPRT(
|
||||
// This pic used to be 122px (file size) and every tool would except it - however the display would be corrupt. Try it!!
|
||||
GPU::AreaI16({0, 100}, {120, 128}),
|
||||
GPU::PagePositionClut({0, 0}, GPU::PageClut(Assets::PacoTIM.get_clut_x(), Assets::PacoTIM.get_clut_y())),
|
||||
GPU::Color24::Blue()
|
||||
).linked();
|
||||
|
||||
static const GPU::Color24 paco_color[] = {
|
||||
GPU::Color24::Red(), GPU::Color24::Green(), GPU::Color24::Blue(), GPU::Color24::Yellow()
|
||||
};
|
||||
static uint8_t color_idx = 0;
|
||||
static object::Paco paco;
|
||||
|
||||
static void setup() {
|
||||
Assets::load_for_main();
|
||||
FontWriter::setup();
|
||||
|
||||
timer.reset();
|
||||
paco_texpage.concat(paco);
|
||||
paco.setup();
|
||||
}
|
||||
|
||||
static void update() {
|
||||
const auto end_pos = FontWriter::write({0, 32}, "Cody is cute\n&\na \x1b[8;0;0mBAAAAABY!!!");
|
||||
FontWriter::write(end_pos, "\x1b[0;7;7mJaby was\nhere c:");
|
||||
|
||||
if(timer.is_expired_for(325_ms)) {
|
||||
static constexpr uint8_t last_idx = (sizeof(paco_color)/sizeof(paco_color[0])) - 1;
|
||||
|
||||
color_idx = (color_idx == last_idx) ? 0 : color_idx + 1;
|
||||
timer.reset();
|
||||
}
|
||||
paco.update();
|
||||
}
|
||||
|
||||
static void render() {
|
||||
GPU::swap_buffers_vsync(1);
|
||||
paco->color = paco_color[color_idx];
|
||||
GPU::render(paco_texpage);
|
||||
FontWriter::render();
|
||||
paco.render();
|
||||
}
|
||||
|
||||
void main() {
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
#include "assets.hpp"
|
||||
#include "Objects/paco.hpp"
|
||||
#include <PSX/AutoLBA/auto_lba_declaration.hpp>
|
||||
#include <stdio.h>
|
||||
|
||||
namespace Assets {
|
||||
using namespace object;
|
||||
|
||||
enum LBA {
|
||||
__jabyengine_start_lba_request
|
||||
__jabyengine_request_lba_for(FONT, "ASSETS/MAIN/FONT.BIN"),
|
||||
|
@ -15,7 +18,7 @@ namespace Assets {
|
|||
void load_for_main() {
|
||||
static const CDFile Assets[] = {
|
||||
CDFileBuilder::simple_tim(LBA::FONT, FontTIM),
|
||||
CDFileBuilder::simple_tim(LBA::PACO, PacoTIM),
|
||||
CDFileBuilder::simple_tim(LBA::PACO, Paco::TIM),
|
||||
};
|
||||
|
||||
const auto buffer_cfg = CDFileProcessor::BufferConfiguration::new_default();
|
||||
|
|
Loading…
Reference in New Issue