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 #define ENTITY_COUNT_MAX 32
typedef enum { typedef enum {
ENTITY_DIR_NORTH = 0, ENTITY_DIR_SOUTH = 0,
ENTITY_DIR_SOUTH = 1, ENTITY_DIR_EAST = 1,
ENTITY_DIR_WEST = 2, ENTITY_DIR_WEST = 2,
ENTITY_DIR_EAST = 3, ENTITY_DIR_NORTH = 3,
ENTITY_DIR_UP = ENTITY_DIR_NORTH, ENTITY_DIR_UP = ENTITY_DIR_NORTH,
ENTITY_DIR_DOWN = ENTITY_DIR_SOUTH, 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 x = (uint32_t)floorf(entity->x);
uint32_t y = (uint32_t)floorf(entity->y); uint32_t y = (uint32_t)floorf(entity->y);
uint32_t row = 0;
uint32_t col = entity->dir;
DrawRectangle( DrawTextureRec(
x, RENDER_ENTITIES_TEXTURE,
y, (Rectangle){
TILE_WIDTH, col * TILE_WIDTH,
TILE_HEIGHT, row * TILE_HEIGHT,
(entity->type == ENTITY_TYPE_PLAYER) ? BLUE : YELLOW TILE_WIDTH,
TILE_HEIGHT
},
(Vector2){ x, y },
WHITE
); );
// DrawRectangle(
// x,
// y,
// TILE_WIDTH,
// TILE_HEIGHT,
// (entity->type == ENTITY_TYPE_PLAYER) ? BLUE : YELLOW
// );
switch(entity->dir) { // switch(entity->dir) {
case ENTITY_DIR_NORTH: // case ENTITY_DIR_NORTH:
DrawTriangle( // DrawTriangle(
(Vector2){ x + TILE_WIDTH / 2, y }, // (Vector2){ x + TILE_WIDTH / 2, y },
(Vector2){ x, y + TILE_HEIGHT }, // (Vector2){ x, y + TILE_HEIGHT },
(Vector2){ x + TILE_WIDTH, y + TILE_HEIGHT }, // (Vector2){ x + TILE_WIDTH, y + TILE_HEIGHT },
WHITE // WHITE
); // );
break; // break;
case ENTITY_DIR_SOUTH: // case ENTITY_DIR_SOUTH:
DrawTriangle( // DrawTriangle(
(Vector2){ x + TILE_WIDTH / 2, y + TILE_HEIGHT }, // (Vector2){ x + TILE_WIDTH / 2, y + TILE_HEIGHT },
(Vector2){ x + TILE_WIDTH, y }, // (Vector2){ x + TILE_WIDTH, y },
(Vector2){ x, y }, // (Vector2){ x, y },
WHITE // WHITE
); // );
break; // break;
case ENTITY_DIR_WEST: // case ENTITY_DIR_WEST:
DrawTriangle( // DrawTriangle(
(Vector2){ x, y + TILE_HEIGHT / 2 }, // (Vector2){ x, y + TILE_HEIGHT / 2 },
(Vector2){ x + TILE_WIDTH, y + TILE_HEIGHT }, // (Vector2){ x + TILE_WIDTH, y + TILE_HEIGHT },
(Vector2){ x + TILE_WIDTH, y }, // (Vector2){ x + TILE_WIDTH, y },
WHITE // WHITE
); // );
break; // break;
case ENTITY_DIR_EAST: // case ENTITY_DIR_EAST:
DrawTriangle( // DrawTriangle(
(Vector2){ x + TILE_WIDTH, y + TILE_HEIGHT / 2 }, // (Vector2){ x + TILE_WIDTH, y + TILE_HEIGHT / 2 },
(Vector2){ x, y }, // (Vector2){ x, y },
(Vector2){ x, y + TILE_HEIGHT }, // (Vector2){ x, y + TILE_HEIGHT },
WHITE // WHITE
); // );
break; // break;
} // }
} }

View File

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

View File

@ -10,4 +10,5 @@
#include "display/renderbase.h" #include "display/renderbase.h"
extern RenderTexture2D RENDER_SCREEN_TEXTURE; extern RenderTexture2D RENDER_SCREEN_TEXTURE;
extern Texture2D RENDER_TILEMAP_TEXTURE; extern Texture2D RENDER_TILEMAP_TEXTURE;
extern Texture2D RENDER_ENTITIES_TEXTURE;