diff --git a/CMakeLists.txt b/CMakeLists.txt index ced858d..7838667 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,6 +11,8 @@ include_directories(inc) set(SOURCES src/main.c + src/draw.c + src/player.c ) set(ASSETS @@ -27,5 +29,5 @@ target_link_options(proj PRIVATE -Wl,-Map=map) generate_g3a(TARGET proj OUTPUT "jtmm2.g3a" - NAME "JTMM2" + NAME "" ICONS res/icon/uns.png res/icon/sel.png) diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..9845e46 --- /dev/null +++ b/Makefile @@ -0,0 +1,11 @@ +all: format + fxsdk build-cg + +format: + clang-format -style=file -i src/**.c inc/**.h + +clean: + rm -Rf build-cg/ + rm -f *.g3a + +.PHONY: format clean diff --git a/inc/conf.h b/inc/conf.h new file mode 100644 index 0000000..230cd9b --- /dev/null +++ b/inc/conf.h @@ -0,0 +1,3 @@ +#pragma once + +#define TILE_SIZE 16 diff --git a/inc/draw.h b/inc/draw.h new file mode 100644 index 0000000..6bb8187 --- /dev/null +++ b/inc/draw.h @@ -0,0 +1,4 @@ +#pragma once +#include + +void draw_rectangle(int c, int x, int y, int w, int h); diff --git a/inc/player.h b/inc/player.h new file mode 100644 index 0000000..b2c8e06 --- /dev/null +++ b/inc/player.h @@ -0,0 +1,11 @@ +#pragma once +#include "vec.h" + +typedef struct Player { + Vec pos; + VecF spd, rem; +} Player; + +void player_init(Player *); +void player_update(Player *); +void player_draw(Player *); diff --git a/inc/vec.h b/inc/vec.h new file mode 100644 index 0000000..3105ac2 --- /dev/null +++ b/inc/vec.h @@ -0,0 +1,9 @@ +#pragma once + +typedef struct Vec { + int x, y; +} Vec; + +typedef struct VecF { + float x, y; +} VecF; diff --git a/src/draw.c b/src/draw.c new file mode 100644 index 0000000..2537e7e --- /dev/null +++ b/src/draw.c @@ -0,0 +1,10 @@ +#include "draw.h" +#include + +void +draw_rectangle(int c, int x, int y, int w, int h) +{ + const int x2 = x + w - 1; + const int y2 = y + h - 1; + drect(x, y, x2, y2, c); +} diff --git a/src/main.c b/src/main.c index 95485db..0055fcc 100644 --- a/src/main.c +++ b/src/main.c @@ -1,5 +1,51 @@ +#include "player.h" +#include +#include + +static Player player; + +static void init(void); +static void deinit(void); +static void draw(void); +static void update(void); + int main(void) { + init(); + + draw(); + do { + update(); + draw(); + } while (!keydown(KEY_EXIT)); + + deinit(); return 0; } + +static void +init(void) +{ + player_init(&player); +} + +static void +deinit(void) +{ +} + +static void +update(void) +{ + clearevents(); + player_update(&player); +} + +static void +draw(void) +{ + dclear(C_BLACK); + player_draw(&player); + dupdate(); +} diff --git a/src/player.c b/src/player.c new file mode 100644 index 0000000..c6c381e --- /dev/null +++ b/src/player.c @@ -0,0 +1,33 @@ +#include "player.h" +#include "draw.h" + +static void player_reset_speed(Player *); + +void +player_init(Player *p) +{ + p->pos.x = 0; + p->pos.y = 0; + player_reset_speed(p); +} + +void +player_update(Player *p) +{ + p->pos.x++; +} + +void +player_draw(Player *p) +{ + draw_rectangle(C_WHITE, p->pos.x, p->pos.y, 16, 16); +} + +static void +player_reset_speed(Player *p) +{ + p->spd.x = 0.0f; + p->spd.y = 0.0f; + p->rem.x = 0.0f; + p->rem.y = 0.0f; +}