|
|
|
@ -1,6 +1,10 @@
@@ -1,6 +1,10 @@
|
|
|
|
|
#include "draw.h" |
|
|
|
|
|
|
|
|
|
/* generic rendering functions */ |
|
|
|
|
int MAX_ONSCREEN_OBJECTS = 99; |
|
|
|
|
|
|
|
|
|
drawqueue_item objects_onscreen[100]; |
|
|
|
|
int num_onscreen = 0; |
|
|
|
|
|
|
|
|
|
void render_texture_at(struct SDL_Renderer * ren, struct SDL_Texture * texture,int x, int y) { |
|
|
|
|
/* draw a texture at x.y */ |
|
|
|
@ -30,12 +34,37 @@ SDL_Texture * load_image(SDL_Renderer * ren, char fname[]) {
@@ -30,12 +34,37 @@ SDL_Texture * load_image(SDL_Renderer * ren, char fname[]) {
|
|
|
|
|
|
|
|
|
|
/* Game Specific rendering functions */ |
|
|
|
|
|
|
|
|
|
void draw_player(SDL_Renderer * ren, player_st player) { |
|
|
|
|
void add_to_view(draw_type kind, void * object) { |
|
|
|
|
if (num_onscreen == MAX_ONSCREEN_OBJECTS) { |
|
|
|
|
logwrite(ERROR, "Maximum number of items on screen"); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
drawqueue_item queue_item; |
|
|
|
|
queue_item.kind = kind; |
|
|
|
|
|
|
|
|
|
num_onscreen += 1; |
|
|
|
|
objects_onscreen[num_onscreen -1] = queue_item; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void remove_from_view(int item, draw_type kind, void * object) { |
|
|
|
|
/*
|
|
|
|
|
*objects_onscreen[item] = objects_onscreen[num_onscreen -1]; |
|
|
|
|
*num_onscreen -= 1; |
|
|
|
|
* |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void draw_player(SDL_Renderer * ren, int x, int y) { |
|
|
|
|
logwrite(DEBUG, "Drawing player"); |
|
|
|
|
|
|
|
|
|
/* draw the player as a coloured rect */ |
|
|
|
|
SDL_Rect player_rect; |
|
|
|
|
|
|
|
|
|
player_rect.x = player.physics.x_pos; |
|
|
|
|
player_rect.y = player.physics.y_pos; |
|
|
|
|
player_rect.x = x;
|
|
|
|
|
player_rect.y = y;
|
|
|
|
|
|
|
|
|
|
player_rect.w = 10; |
|
|
|
|
player_rect.h = 10; |
|
|
|
|
|
|
|
|
@ -43,6 +72,21 @@ void draw_player(SDL_Renderer * ren, player_st player) {
@@ -43,6 +72,21 @@ void draw_player(SDL_Renderer * ren, player_st player) {
|
|
|
|
|
SDL_RenderDrawRect(ren, &player_rect); |
|
|
|
|
SDL_SetRenderDrawColor(ren, 120, 85, 188, 255); |
|
|
|
|
SDL_RenderFillRect(ren, &player_rect); |
|
|
|
|
SDL_SetRenderDrawColor(ren, 0,0,0, 255); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void redraw_buffer(SDL_Renderer * ren) { |
|
|
|
|
for (int i = 0; i<num_onscreen; i++) { |
|
|
|
|
drawqueue_item queue_item = objects_onscreen[i];
|
|
|
|
|
switch (queue_item.kind) { |
|
|
|
|
case PLAYER: ; |
|
|
|
|
player_st * object; |
|
|
|
|
object = queue_item.player; |
|
|
|
|
(*object).draw(ren, (*object).physics.x_pos, (*object).physics.y_pos); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|