Render entities first pass.

This commit is contained in:
2025-06-16 09:42:36 -05:00
parent 0728a332ac
commit 6c7faedd74
4 changed files with 61 additions and 44 deletions

View File

@ -12,10 +12,10 @@
#define ENTITY_COUNT_MAX 32
typedef enum {
ENTITY_DIR_NORTH = 0,
ENTITY_DIR_SOUTH = 1,
ENTITY_DIR_SOUTH = 0,
ENTITY_DIR_EAST = 1,
ENTITY_DIR_WEST = 2,
ENTITY_DIR_EAST = 3,
ENTITY_DIR_NORTH = 3,
ENTITY_DIR_UP = ENTITY_DIR_NORTH,
ENTITY_DIR_DOWN = ENTITY_DIR_SOUTH,

View File

@ -98,47 +98,61 @@ void drawOverworldDrawEntity(const entity_t *entity) {
uint32_t x = (uint32_t)floorf(entity->x);
uint32_t y = (uint32_t)floorf(entity->y);
uint32_t row = 0;
uint32_t col = entity->dir;
DrawRectangle(
x,
y,
TILE_WIDTH,
TILE_HEIGHT,
(entity->type == ENTITY_TYPE_PLAYER) ? BLUE : YELLOW
DrawTextureRec(
RENDER_ENTITIES_TEXTURE,
(Rectangle){
col * TILE_WIDTH,
row * TILE_HEIGHT,
TILE_WIDTH,
TILE_HEIGHT
},
(Vector2){ x, y },
WHITE
);
switch(entity->dir) {
case ENTITY_DIR_NORTH:
DrawTriangle(
(Vector2){ x + TILE_WIDTH / 2, y },
(Vector2){ x, y + TILE_HEIGHT },
(Vector2){ x + TILE_WIDTH, y + TILE_HEIGHT },
WHITE
);
break;
case ENTITY_DIR_SOUTH:
DrawTriangle(
(Vector2){ x + TILE_WIDTH / 2, y + TILE_HEIGHT },
(Vector2){ x + TILE_WIDTH, y },
(Vector2){ x, y },
WHITE
);
break;
case ENTITY_DIR_WEST:
DrawTriangle(
(Vector2){ x, y + TILE_HEIGHT / 2 },
(Vector2){ x + TILE_WIDTH, y + TILE_HEIGHT },
(Vector2){ x + TILE_WIDTH, y },
WHITE
);
break;
case ENTITY_DIR_EAST:
DrawTriangle(
(Vector2){ x + TILE_WIDTH, y + TILE_HEIGHT / 2 },
(Vector2){ x, y },
(Vector2){ x, y + TILE_HEIGHT },
WHITE
);
break;
}
// DrawRectangle(
// x,
// y,
// TILE_WIDTH,
// TILE_HEIGHT,
// (entity->type == ENTITY_TYPE_PLAYER) ? BLUE : YELLOW
// );
// switch(entity->dir) {
// case ENTITY_DIR_NORTH:
// DrawTriangle(
// (Vector2){ x + TILE_WIDTH / 2, y },
// (Vector2){ x, y + TILE_HEIGHT },
// (Vector2){ x + TILE_WIDTH, y + TILE_HEIGHT },
// WHITE
// );
// break;
// case ENTITY_DIR_SOUTH:
// DrawTriangle(
// (Vector2){ x + TILE_WIDTH / 2, y + TILE_HEIGHT },
// (Vector2){ x + TILE_WIDTH, y },
// (Vector2){ x, y },
// WHITE
// );
// break;
// case ENTITY_DIR_WEST:
// DrawTriangle(
// (Vector2){ x, y + TILE_HEIGHT / 2 },
// (Vector2){ x + TILE_WIDTH, y + TILE_HEIGHT },
// (Vector2){ x + TILE_WIDTH, y },
// WHITE
// );
// break;
// case ENTITY_DIR_EAST:
// DrawTriangle(
// (Vector2){ x + TILE_WIDTH, y + TILE_HEIGHT / 2 },
// (Vector2){ x, y },
// (Vector2){ x, y + TILE_HEIGHT },
// WHITE
// );
// break;
// }
}

View File

@ -12,6 +12,7 @@
RenderTexture2D RENDER_SCREEN_TEXTURE;
Texture2D RENDER_TILEMAP_TEXTURE;
Texture2D RENDER_ENTITIES_TEXTURE;
void renderInit(void) {
InitWindow(
@ -28,6 +29,7 @@ void renderInit(void) {
RENDER_SCREEN_TEXTURE = LoadRenderTexture(RENDER_WIDTH, RENDER_HEIGHT);
RENDER_TILEMAP_TEXTURE = LoadTexture("../data/tilemap.png");
RENDER_ENTITIES_TEXTURE = LoadTexture("../data/entities.png");
drawOverworldInit();
}

View File

@ -11,3 +11,4 @@
extern RenderTexture2D RENDER_SCREEN_TEXTURE;
extern Texture2D RENDER_TILEMAP_TEXTURE;
extern Texture2D RENDER_ENTITIES_TEXTURE;