summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/main.c b/src/main.c
index eccd351..0e53a68 100644
--- a/src/main.c
+++ b/src/main.c
@@ -13,6 +13,8 @@
#include "incbin.h"
#include "libplum.h"
+#include "main.h"
+
SDL_Window *window = NULL;
SDL_Renderer *renderer = NULL;
@@ -30,6 +32,11 @@ SDL_Scancode keybinds[] = {
SDL_SCANCODE_S,
};
+struct entity player[1] = {0};
+
+struct entity *player_new(void);
+int player_property(struct entity *const restrict entity, char const *const restrict property, char const *const restrict value);
+
int main(int argc, char **argv) {
if (SDL_Init(INIT_SUBSYSTEMS)) {
fprintf(stderr, "failed to initialize SDL2: %s\n", SDL_GetError());
@@ -59,6 +66,7 @@ int main(int argc, char **argv) {
free(a);
struct blob map = res_get_map("untitled");
tilemap = tilemap_load(map.data, map.size);
+ //memmem(map.data + tilemap->byte_count, map.size - tilemap->byte_count, (char []) {0, 0}, 2);
printf("load_tilemap %p\n", (void *) tilemap);
SDL_SetRenderTarget(renderer, NULL);
}
@@ -83,6 +91,9 @@ int main(int argc, char **argv) {
SDL_ShowWindow(window);
int x = 0, y = 0;
+ player_new();
+ player_property(player, "x", "40");
+ player_property(player, "y", "40");
while (1) {
SDL_Event evt;
while (SDL_PollEvent(&evt)) {
@@ -183,13 +194,18 @@ int main(int argc, char **argv) {
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
SDL_RenderClear(renderer);
- x += input_right(input_now) - input_left(input_now);
- y += input_down(input_now) - input_up(input_now);
+ //SDL_RenderCopy(renderer, tilemap->wang_tileset, &(SDL_Rect) {0, 0, 128, 90}, &(SDL_Rect) {0, 0, 128, 90});
+ player[0].update(player);
+
+ //x += input_right(input_now) - input_left(input_now);
+ //y += input_down(input_now) - input_up(input_now);
+ x = (player[0].x / 16) - (WINDOW_WIDTH / 2);
+ y = (player[0].y / 16) - (WINDOW_HEIGHT / 2);
if (x < 0) {x = 0;} else if (x + WINDOW_WIDTH > tilemap->width * 8) {x = tilemap->width * 8 - WINDOW_WIDTH;}
if (y < 0) {y = 0;} else if (y + WINDOW_HEIGHT > tilemap->height * 8) {y = tilemap->height * 8 - WINDOW_HEIGHT;}
- //SDL_RenderCopy(renderer, tilemap->wang_tileset, &(SDL_Rect) {0, 0, 128, 90}, &(SDL_Rect) {0, 0, 128, 90});
tilemap_background(tilemap, x, y, WINDOW_WIDTH, WINDOW_HEIGHT);
+ player[0].draw(player, x, y);
tilemap_foreground(tilemap, x, y, WINDOW_WIDTH, WINDOW_HEIGHT);
//SDL_RenderCopy(renderer, res_get_texture("meow").data, &(SDL_Rect) {0, 0, 128, 90}, &(SDL_Rect) {0, 0, 128, 90});
// then we wait for the next video frame