forked from egordorichev/neko8
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathneko.hpp
52 lines (41 loc) · 982 Bytes
/
neko.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#ifndef neko_hpp
#define neko_hpp
#include <time.h>
#include <config.hpp>
#include <ram.hpp>
#include <graphics.hpp>
#include <fs.hpp>
#define NEKO_VERSION_STRING "neko8 v0.0.1 c++ dev"
struct neko_carts;
struct neko_console;
typedef enum neko_state_id {
STATE_CONSOLE = 0,
STATE_RUNNING_CART = 1,
STATE_IN_EDITOR = 2,
STATE_SIZE = 3
} neko_state_id;
typedef struct neko_state {
bool forceDraw;
virtual void escape(neko *machine) {};
virtual void event(neko *machine, SDL_Event *event) {};
virtual void render(neko *machine) {};
} neko_state;
typedef struct neko {
neko_ram *ram;
neko_graphics *graphics;
neko_state_id state;
neko_state_id prevState;
neko_state **states;
neko_config *config;
neko_fs *fs;
neko_carts *carts;
bool running;
} neko;
namespace machine {
neko *init(neko_config *config);
void free(neko *machine);
void render(neko *machine);
void updateCanvas(neko *machine);
bool handleEvent(neko *machine, SDL_Event *event);
};
#endif