PokeMe64/include/scenes/IScene.h
Philippe Symons e51726eef9 Initial import of the first (extremely early) functional version.
It doesn't look like much, but it's functional ;-)

It can inject distribution pokémon into gen 1 and gen 2 original
cartridges and inject the GS ball in Pokémon Crystal.

That's it. But that was the minimal feature set I had in mind for the
project. In the Readme.md you can find the ideas I have for expanding
the project.

But the first priority is the UI, because it really looks bad right now.
(as I was mostly focused on building blocks and transfer pak
functionality. Not on making it looks good)
2024-07-19 21:46:11 +02:00

55 lines
1.2 KiB
C++
Executable File

#ifndef _ISCENE_H
#define _ISCENE_H
#include <libdragon.h>
class RDPQGraphics;
class SceneManager;
class AnimationManager;
class FontManager;
class TransferPakManager;
typedef struct Rectangle Rectangle;
enum class SceneType
{
NONE,
INIT_TRANSFERPAK,
MENU,
DISTRIBUTION_POKEMON_LIST,
TEST
};
typedef struct SceneDependencies
{
RDPQGraphics& gfx;
AnimationManager& animationManager;
FontManager& fontManager;
TransferPakManager& tpakManager;
SceneManager& sceneManager;
uint8_t generation;
uint8_t specificGenVersion;
} SceneDependencies;
class IScene
{
public:
virtual ~IScene();
virtual void init() = 0;
virtual void destroy() = 0;
/**
* @brief This function should implement the procedure of obtaining the relevant user input
* and directing it as necessary, but it should not implement how to handle it. For the latter you should implement handleUserInput instead.
*/
virtual void processUserInput() = 0;
virtual bool handleUserInput(joypad_port_t port, const joypad_inputs_t& inputs) = 0;
virtual void render(RDPQGraphics& gfx, const Rectangle& sceneBounds) = 0;
protected:
private:
};
#endif