54 lines
1.2 KiB
C
54 lines
1.2 KiB
C
/**
|
|
* Copyright (c) 2025 Dominic Masters
|
|
*
|
|
* This software is released under the MIT License.
|
|
* https://opensource.org/licenses/MIT
|
|
*/
|
|
|
|
#include "rpg/cutscene/cutscenesystem.h"
|
|
#include "input/input.h"
|
|
#include "time/time.h"
|
|
|
|
void cutsceneItemStart(const cutsceneitem_t *item, cutsceneitemdata_t *data) {
|
|
switch(item->type) {
|
|
case CUTSCENE_ITEM_TYPE_TEXT: {
|
|
rpgTextboxShow(
|
|
item->text.position,
|
|
item->text.text
|
|
);
|
|
break;
|
|
}
|
|
|
|
case CUTSCENE_ITEM_TYPE_WAIT:
|
|
data->wait = item->wait;
|
|
break;
|
|
|
|
case CUTSCENE_ITEM_TYPE_CALLBACK:
|
|
if(item->callback != NULL) item->callback();
|
|
break;
|
|
|
|
case CUTSCENE_ITEM_TYPE_CUTSCENE:
|
|
if(item->cutscene != NULL) cutsceneSystemStartCutscene(item->cutscene);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void cutsceneItemUpdate(const cutsceneitem_t *item, cutsceneitemdata_t *data) {
|
|
switch(item->type) {
|
|
case CUTSCENE_ITEM_TYPE_TEXT:
|
|
if(rpgTextboxIsVisible()) return;
|
|
cutsceneSystemNext();
|
|
break;
|
|
|
|
case CUTSCENE_ITEM_TYPE_WAIT:
|
|
data->wait -= TIME.delta;
|
|
if(data->wait <= 0) cutsceneSystemNext();
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
} |