Draw hero status on side with profile
Make hero texture rects start using the atlas data structure. Reduce the number of slots for assets for now to minimise room for error.
This commit is contained in:
parent
d74cabf5c6
commit
6c3ef63a65
@ -101,6 +101,13 @@ void worldTraveller_gameInit(GameState *state, v2i windowSize)
|
|||||||
asset_loadTextureImage(assetManager,
|
asset_loadTextureImage(assetManager,
|
||||||
"data/textures/WorldTraveller/TerraSprite1024.png",
|
"data/textures/WorldTraveller/TerraSprite1024.png",
|
||||||
texlist_hero);
|
texlist_hero);
|
||||||
|
TexAtlas *heroAtlas = asset_getTextureAtlas(assetManager, texlist_hero);
|
||||||
|
heroAtlas->texRect[herocoords_idle] = V4(746.0f, 1018.0f, 804.0f, 920.0f);
|
||||||
|
heroAtlas->texRect[herocoords_walkA] = V4(641.0f, 1018.0f, 699.0f, 920.0f);
|
||||||
|
heroAtlas->texRect[herocoords_walkB] = V4(849.0f, 1018.0f, 904.0f, 920.0f);
|
||||||
|
heroAtlas->texRect[herocoords_head] = V4(108.0f, 1024.0f, 159.0f, 975.0f);
|
||||||
|
heroAtlas->texRect[herocoords_waveA] = V4(944.0f, 918.0f, 1010.0f, 816.0f);
|
||||||
|
heroAtlas->texRect[herocoords_waveB] = V4(944.0f, 812.0f, 1010.0f, 710.0f);
|
||||||
|
|
||||||
asset_loadTextureImage(assetManager,
|
asset_loadTextureImage(assetManager,
|
||||||
"data/textures/WorldTraveller/Terrain.png",
|
"data/textures/WorldTraveller/Terrain.png",
|
||||||
@ -198,16 +205,16 @@ void worldTraveller_gameInit(GameState *state, v2i windowSize)
|
|||||||
f32 duration = 1.0f;
|
f32 duration = 1.0f;
|
||||||
i32 numRects = 1;
|
i32 numRects = 1;
|
||||||
v4 *heroIdleRects = PLATFORM_MEM_ALLOC(numRects, v4);
|
v4 *heroIdleRects = PLATFORM_MEM_ALLOC(numRects, v4);
|
||||||
heroIdleRects[0] = V4(746.0f, 1018.0f, 804.0f, 920.0f);
|
heroIdleRects[0] = heroAtlas->texRect[herocoords_idle];
|
||||||
addAnim(hero, heroIdleRects, numRects, duration);
|
addAnim(hero, heroIdleRects, numRects, duration);
|
||||||
|
|
||||||
/* Add walking animation */
|
/* Add walking animation */
|
||||||
duration = 0.10f;
|
duration = 0.10f;
|
||||||
numRects = 3;
|
numRects = 3;
|
||||||
v4 *heroWalkRects = PLATFORM_MEM_ALLOC(numRects, v4);
|
v4 *heroWalkRects = PLATFORM_MEM_ALLOC(numRects, v4);
|
||||||
heroWalkRects[0] = V4(641.0f, 1018.0f, 699.0f, 920.0f);
|
heroWalkRects[0] = heroAtlas->texRect[herocoords_walkA];
|
||||||
heroWalkRects[1] = V4(746.0f, 1018.0f, 804.0f, 920.0f);
|
heroWalkRects[1] = heroAtlas->texRect[herocoords_idle];
|
||||||
heroWalkRects[2] = V4(849.0f, 1018.0f, 904.0f, 920.0f);
|
heroWalkRects[2] = heroAtlas->texRect[herocoords_walkB];
|
||||||
addAnim(hero, heroWalkRects, numRects, duration);
|
addAnim(hero, heroWalkRects, numRects, duration);
|
||||||
|
|
||||||
/* Create a NPC */
|
/* Create a NPC */
|
||||||
@ -223,8 +230,8 @@ void worldTraveller_gameInit(GameState *state, v2i windowSize)
|
|||||||
duration = 0.30f;
|
duration = 0.30f;
|
||||||
numRects = 2;
|
numRects = 2;
|
||||||
v4 *npcWavingRects = PLATFORM_MEM_ALLOC(numRects, v4);
|
v4 *npcWavingRects = PLATFORM_MEM_ALLOC(numRects, v4);
|
||||||
npcWavingRects[0] = V4(944.0f, 918.0f, 1010.0f, 816.0f);
|
npcWavingRects[0] = heroAtlas->texRect[herocoords_waveA];
|
||||||
npcWavingRects[1] = V4(944.0f, 812.0f, 1010.0f, 710.0f);
|
npcWavingRects[1] = heroAtlas->texRect[herocoords_waveB];
|
||||||
addAnim(npc, npcWavingRects, numRects, duration);
|
addAnim(npc, npcWavingRects, numRects, duration);
|
||||||
|
|
||||||
/* Create a Mob */
|
/* Create a Mob */
|
||||||
@ -432,7 +439,7 @@ void worldTraveller_gameUpdateAndRender(GameState *state, const f32 dt)
|
|||||||
|
|
||||||
if (cameraBounds.w <= world->bounds.w) cameraBounds.w = world->bounds.w;
|
if (cameraBounds.w <= world->bounds.w) cameraBounds.w = world->bounds.w;
|
||||||
|
|
||||||
/* Render and update loop */
|
/* Render entity and logic loop */
|
||||||
ASSERT(world->freeEntityIndex < world->maxEntities);
|
ASSERT(world->freeEntityIndex < world->maxEntities);
|
||||||
for (i32 i = 0; i < world->freeEntityIndex; i++)
|
for (i32 i = 0; i < world->freeEntityIndex; i++)
|
||||||
{
|
{
|
||||||
@ -537,6 +544,22 @@ void worldTraveller_gameUpdateAndRender(GameState *state, const f32 dt)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TexAtlas *heroAtlas = asset_getTextureAtlas(assetManager, texlist_hero);
|
||||||
|
v4 heroAvatarTexRect = heroAtlas->texRect[herocoords_head];
|
||||||
|
v2 heroAvatarSize = math_getRectSize(heroAvatarTexRect);
|
||||||
|
v2 heroAvatarP =
|
||||||
|
V2(10.0f, (renderer->size.h * 0.5f) - (0.5f * heroAvatarSize.h));
|
||||||
|
renderer_rect(renderer, cameraBounds, heroAvatarP, heroAvatarSize, 0,
|
||||||
|
hero->tex, heroAvatarTexRect, V4(1, 1, 1, 1));
|
||||||
|
|
||||||
|
v4 color = V4(0, 0, 1.0f, 1);
|
||||||
|
char *heroAvatarStr = "HP: 100/100";
|
||||||
|
f32 strLenInPixels =
|
||||||
|
CAST(f32)(font->maxSize.w * common_strlen(heroAvatarStr));
|
||||||
|
v2 strPos = V2(heroAvatarP.x, heroAvatarP.y - (0.5f * heroAvatarSize.h));
|
||||||
|
renderer_staticString(&state->renderer, font, heroAvatarStr, strPos, 0,
|
||||||
|
color);
|
||||||
|
|
||||||
#ifdef DENGINE_DEBUG
|
#ifdef DENGINE_DEBUG
|
||||||
/* Render debug info stack */
|
/* Render debug info stack */
|
||||||
DEBUG_PUSH_STRING("Hero Pos: %06.2f, %06.2f", hero->pos, "v2");
|
DEBUG_PUSH_STRING("Hero Pos: %06.2f, %06.2f", hero->pos, "v2");
|
||||||
|
@ -27,6 +27,17 @@ enum TerrainCoords
|
|||||||
terraincoords_count,
|
terraincoords_count,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum HeroCoords
|
||||||
|
{
|
||||||
|
herocoords_idle,
|
||||||
|
herocoords_walkA,
|
||||||
|
herocoords_walkB,
|
||||||
|
herocoords_head,
|
||||||
|
herocoords_waveA,
|
||||||
|
herocoords_waveB,
|
||||||
|
herocoords_count,
|
||||||
|
};
|
||||||
|
|
||||||
typedef struct TexAtlas
|
typedef struct TexAtlas
|
||||||
{
|
{
|
||||||
// TODO(doyle): String hash based lookup
|
// TODO(doyle): String hash based lookup
|
||||||
@ -67,9 +78,9 @@ typedef struct Font
|
|||||||
// TODO(doyle): Switch to hash based lookup
|
// TODO(doyle): Switch to hash based lookup
|
||||||
typedef struct AssetManager
|
typedef struct AssetManager
|
||||||
{
|
{
|
||||||
Texture textures[256];
|
Texture textures[32];
|
||||||
TexAtlas texAtlas[256];
|
TexAtlas texAtlas[32];
|
||||||
Shader shaders[256];
|
Shader shaders[32];
|
||||||
Font font;
|
Font font;
|
||||||
} AssetManager;
|
} AssetManager;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user