summary refs log tree commit diff
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