80 lines
1.9 KiB
C
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);
|
|
} |