Entities now have health values associated
This commit is contained in:
parent
6c3ef63a65
commit
0d5725eb97
@ -25,6 +25,21 @@ INTERNAL Entity *addEntity(World *world, v2 pos, v2 size, enum EntityType type,
|
|||||||
entity.tex = tex;
|
entity.tex = tex;
|
||||||
entity.collides = collides;
|
entity.collides = collides;
|
||||||
|
|
||||||
|
switch(type)
|
||||||
|
{
|
||||||
|
case entitytype_hero:
|
||||||
|
case entitytype_mob:
|
||||||
|
{
|
||||||
|
entity.stats = PLATFORM_MEM_ALLOC(1, EntityStats);
|
||||||
|
entity.stats->maxHealth = 100;
|
||||||
|
entity.stats->health = entity.stats->maxHealth;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
world->entities[world->freeEntityIndex++] = entity;
|
world->entities[world->freeEntityIndex++] = entity;
|
||||||
Entity *result = &world->entities[world->freeEntityIndex-1];
|
Entity *result = &world->entities[world->freeEntityIndex-1];
|
||||||
|
|
||||||
@ -497,22 +512,22 @@ void worldTraveller_gameUpdateAndRender(GameState *state, const f32 dt)
|
|||||||
char *debugString = NULL;
|
char *debugString = NULL;
|
||||||
switch (entity->type)
|
switch (entity->type)
|
||||||
{
|
{
|
||||||
case entitytype_mob:
|
case entitytype_mob:
|
||||||
color = V4(1, 0, 0, 1);
|
color = V4(1, 0, 0, 1);
|
||||||
debugString = "MOB";
|
debugString = "MOB";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case entitytype_hero:
|
case entitytype_hero:
|
||||||
color = V4(0, 0, 1.0f, 1);
|
color = V4(0, 0, 1.0f, 1);
|
||||||
debugString = "HERO";
|
debugString = "HERO";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case entitytype_npc:
|
case entitytype_npc:
|
||||||
color = V4(0, 1.0f, 0, 1);
|
color = V4(0, 1.0f, 0, 1);
|
||||||
debugString = "NPC";
|
debugString = "NPC";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -528,18 +543,28 @@ void worldTraveller_gameUpdateAndRender(GameState *state, const f32 dt)
|
|||||||
f32 stringLineGap = 1.1f * asset_getVFontSpacing(font->metrics);
|
f32 stringLineGap = 1.1f * asset_getVFontSpacing(font->metrics);
|
||||||
strPos.y -= GLOBAL_debugState.stringLineGap;
|
strPos.y -= GLOBAL_debugState.stringLineGap;
|
||||||
|
|
||||||
char entityPosStr[256];
|
char entityPosStr[128];
|
||||||
snprintf(entityPosStr, ARRAY_COUNT(entityPosStr), "%06.2f, %06.2f",
|
snprintf(entityPosStr, ARRAY_COUNT(entityPosStr), "%06.2f, %06.2f",
|
||||||
entity->pos.x, entity->pos.y);
|
entity->pos.x, entity->pos.y);
|
||||||
renderer_string(&state->renderer, cameraBounds, font, entityPosStr,
|
renderer_string(&state->renderer, cameraBounds, font, entityPosStr,
|
||||||
strPos, 0, color);
|
strPos, 0, color);
|
||||||
|
|
||||||
strPos.y -= GLOBAL_debugState.stringLineGap;
|
strPos.y -= GLOBAL_debugState.stringLineGap;
|
||||||
char entityIDStr[256];
|
char entityIDStr[32];
|
||||||
snprintf(entityIDStr, ARRAY_COUNT(entityIDStr), "ID: %4d/%d", i,
|
snprintf(entityIDStr, ARRAY_COUNT(entityIDStr), "ID: %4d/%d", i,
|
||||||
world->maxEntities);
|
world->maxEntities);
|
||||||
renderer_string(&state->renderer, cameraBounds, font, entityIDStr,
|
renderer_string(&state->renderer, cameraBounds, font, entityIDStr,
|
||||||
strPos, 0, color);
|
strPos, 0, color);
|
||||||
|
|
||||||
|
if (entity->stats)
|
||||||
|
{
|
||||||
|
strPos.y -= GLOBAL_debugState.stringLineGap;
|
||||||
|
char entityHealth[32];
|
||||||
|
snprintf(entityHealth, ARRAY_COUNT(entityHealth), "HP: %3.0f/%3.0f",
|
||||||
|
entity->stats->health, entity->stats->maxHealth);
|
||||||
|
renderer_string(&state->renderer, cameraBounds, font,
|
||||||
|
entityHealth, strPos, 0, color);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,12 @@ typedef struct EntityAnim
|
|||||||
f32 currDuration;
|
f32 currDuration;
|
||||||
} EntityAnim;
|
} EntityAnim;
|
||||||
|
|
||||||
|
typedef struct EntityStats
|
||||||
|
{
|
||||||
|
f32 maxHealth;
|
||||||
|
f32 health;
|
||||||
|
} EntityStats;
|
||||||
|
|
||||||
typedef struct Entity
|
typedef struct Entity
|
||||||
{
|
{
|
||||||
v2 pos; // Position
|
v2 pos; // Position
|
||||||
@ -50,6 +56,8 @@ typedef struct Entity
|
|||||||
EntityAnim anim[16];
|
EntityAnim anim[16];
|
||||||
i32 freeAnimIndex;
|
i32 freeAnimIndex;
|
||||||
i32 currAnimIndex;
|
i32 currAnimIndex;
|
||||||
|
|
||||||
|
EntityStats *stats;
|
||||||
} Entity;
|
} Entity;
|
||||||
|
|
||||||
INTERNAL inline v4 getEntityScreenRect(Entity entity)
|
INTERNAL inline v4 getEntityScreenRect(Entity entity)
|
||||||
|
Loading…
Reference in New Issue
Block a user