Dawn/src/game/poker/pokergame.c
2021-09-18 00:39:00 -07:00

80 lines
1.9 KiB
C

/**
* Copyright (c) 2021 Dominic Masters
*
* This software is released under the MIT License.
* https://opensource.org/licenses/MIT
*/
#include "pokergame.h"
bool pokerGameInit(pokergame_t *game, engine_t *engine) {
game->engine = engine;
// Load the Assets.
pokerGameAssetsInit(&game->assets);
// Initialize the Visual Novel Engine.
vnSceneInit(&game->scene,
&game->assets.font,
&game->assets.testTexture
);
// Initialize the world
pokerWorldInit(game);
// Initialize the UI.
pokerUiInit(game);
// Add the first action, the game action, and then start the action queue.
pokerGameActionStartAdd(game);
queueNext(&game->scene.conversation.actionQueue);
return true;
}
void pokerGameUpdate(pokergame_t *game, engine_t *engine) {
// Update the VN Engine.
vnSceneUpdate(&game->scene, engine);
// Update the UI
pokerUiUpdate(game, engine);
// Bind the shader.
shaderUse(&game->assets.shader);
// Render the visual novel scene.
vnSceneRenderWorld(&game->scene, engine, &game->assets.shader);
pokerWorldRender(&game->world, engine, &game->assets);
vnSceneRenderCharacters(&game->scene, &game->assets.shader);
// Render the UI
vnSceneRenderGui(&game->scene, engine, &game->assets.shader);
pokerUiRender(game, engine);
}
void pokerGameDispose(pokergame_t *game) {
//Cleanup the UI
pokerUiDispose(game);
// Cleanup the world
pokerWorldDispose(game);
// Destroy the Visual Novel engine.
vnSceneDispose(&game->scene);
// Unload all assets
pokerGameAssetsDispose(&game->assets);
}
void pokerGameQueueRestack(pokergame_t *pokerGame) {
arrayRewind(
sizeof(pokergameactiondata_t),
pokerGame->actionData,
ANIMATION_QUEUE_ITEM_MAX,
pokerGame->scene.conversation.actionQueue.current,
pokerGame->scene.conversation.actionQueue.count
);
queueRestack(&pokerGame->scene.conversation.actionQueue);
}