diff --git a/cat_api.h b/cat_api.h index 6b6ae1a..c4119cf 100644 --- a/cat_api.h +++ b/cat_api.h @@ -133,6 +133,20 @@ void cat_fill(int layer, int visible, int x, int y, int w, int h, unsigned char cat_pixel(layer, visible, cx + x, cy + y, r, g, b); } +void cat_wireframe(int layer, int visible, int x, int y, int w, int h, unsigned char r, unsigned char g, unsigned char b) +{ + int cx; for (cx = 0; cx < w; cx++) + { + cat_pixel(layer, visible, x + cx, y, r, g, b); + cat_pixel(layer, visible, x + cx, y+h, r, g, b); + } + int cy; for (cy = 0; cy < h; cy++) + { + cat_pixel(layer, visible, x, y + cy, r, g, b); + cat_pixel(layer, visible, x + w, y + cy, r, g, b); + } +} + /* TODO: cat bresenham */ /* audio... */ diff --git a/etc/cat_beep_slower.wav b/etc/cat_beep_slower.wav new file mode 100644 index 0000000..65902f7 Binary files /dev/null and b/etc/cat_beep_slower.wav differ diff --git a/main.c b/main.c index de9ef82..a52df11 100644 --- a/main.c +++ b/main.c @@ -164,6 +164,7 @@ void mouse_up(unsigned char button) void process_input(void) { + /* mode switch game or menus */ struct cat_event* e = cat_get_event(); if (e == NULL) return; if (e->type == QUIT) bye(); @@ -179,7 +180,7 @@ void erase_entity(struct entity* e) /* get sprite info, etc */ /* FIXME */ if (e->x < 0 || e->y < 0 || e->x >= screen_width || e->y >= screen_height) return; - cat_fill(1, 0, e->x, e->y, e->width, e->height, 0, 0, 0); + cat_wireframe(1, 0, e->x, e->y, e->width, e->height, 0, 0, 0); } void draw_entity(struct entity* e) @@ -187,7 +188,7 @@ void draw_entity(struct entity* e) /* get sprite info, etc */ /* FIXME */ if (e->x < 0 || e->y < 0 || e->x >= screen_width || e->y >= screen_height) return; - cat_fill(1, 1, e->x, e->y, e->width, e->height, e->r, e->g, e->b); + cat_wireframe(1, 1, e->x, e->y, e->width, e->height, e->r, e->g, e->b); /* if out of bounds do not draw */ } @@ -236,6 +237,8 @@ void tick(void) printf("tick %d!\n", tick_count++); /* code to run every tick goes here */ + /* something like "for i in fns_to_run_per_tick (linked list) run ->fn() + and somewhere there's an add_fn_to_run_every_tick() thing... or every n ticks... idk */ erase_entities(); struct entity* p = get_player(); if (is_held(' ')) p->ay = -5; @@ -252,6 +255,7 @@ void game_loop(void) { cat_render(); process_input(); + /* mode check for in game or in menu */ tick(); } @@ -261,7 +265,8 @@ int main(int argc, char** argv) cat_create_window(1920, 1080); //cat_play_wav("etc/example.wav"); //cat_play_wav("etc/cat_quick.wav"); - cat_play_wav("etc/cat_beep_box.wav"); + //cat_play_wav("etc/cat_beep_box.wav"); + cat_play_wav("etc/cat_beep_slower.wav"); /* layer, visibility, x, y, width, height, r, g, b */ cat_fill(0, 1, 0, 0, screen_width - 1, screen_height - 1, 132, 155, 132); /* create the player */ add_entity(1, 0, 0, 0, 50, 50, 100, 50, 0, 0, 0, 0, 0);