|
|
|
@@ -20,7 +20,7 @@ static void recordCallback(void *userData) {
|
|
|
|
|
// the "nested cutscene is a one-way jump" behavior: cutsceneCutsceneStart
|
|
|
|
|
// replaces CUTSCENE_SYSTEM.scene outright, and the callback item's effect
|
|
|
|
|
// fires in Start, not Update, so it fires the same frame the jump happens.
|
|
|
|
|
static const cutsceneitem_t CUTSCENE_TEST_INNER_ITEMS[] = {
|
|
|
|
|
static cutsceneitem_t CUTSCENE_TEST_INNER_ITEMS[] = {
|
|
|
|
|
{ .type = CUTSCENE_ITEM_TYPE_CALLBACK, .callback = recordCallback }
|
|
|
|
|
};
|
|
|
|
|
static const cutscene_t CUTSCENE_TEST_INNER = {
|
|
|
|
@@ -29,7 +29,7 @@ static const cutscene_t CUTSCENE_TEST_INNER = {
|
|
|
|
|
.pause = CUTSCENE_PAUSE_NONE
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static const cutsceneitem_t CUTSCENE_TEST_OUTER_ITEMS[] = {
|
|
|
|
|
static cutsceneitem_t CUTSCENE_TEST_OUTER_ITEMS[] = {
|
|
|
|
|
{ .type = CUTSCENE_ITEM_TYPE_WAIT, .wait = 0.5f },
|
|
|
|
|
{
|
|
|
|
|
.type = CUTSCENE_ITEM_TYPE_CUTSCENE,
|
|
|
|
@@ -88,7 +88,7 @@ static void test_cutsceneSystemUpdateIsNoopWithNoActiveCutscene(void **state) {
|
|
|
|
|
assert_null(CUTSCENE_SYSTEM.scene);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static const cutsceneitem_t CUTSCENE_TEST_SINGLE_WAIT_ITEMS[] = {
|
|
|
|
|
static cutsceneitem_t CUTSCENE_TEST_SINGLE_WAIT_ITEMS[] = {
|
|
|
|
|
{ .type = CUTSCENE_ITEM_TYPE_WAIT, .wait = 1.0f }
|
|
|
|
|
};
|
|
|
|
|
static const cutscene_t CUTSCENE_TEST_SINGLE_WAIT = {
|
|
|
|
@@ -206,7 +206,7 @@ static void recordOrder2(void *userData) { insertOrderLog[insertOrderLogCount++]
|
|
|
|
|
static void recordOrderA(void *userData) { insertOrderLog[insertOrderLogCount++] = 3; }
|
|
|
|
|
static void recordOrderB(void *userData) { insertOrderLog[insertOrderLogCount++] = 4; }
|
|
|
|
|
|
|
|
|
|
static const cutsceneitem_t CUTSCENE_TEST_INSERT_SNIPPET_ITEMS[] = {
|
|
|
|
|
static cutsceneitem_t CUTSCENE_TEST_INSERT_SNIPPET_ITEMS[] = {
|
|
|
|
|
{ .type = CUTSCENE_ITEM_TYPE_CALLBACK, .callback = recordOrderA },
|
|
|
|
|
{ .type = CUTSCENE_ITEM_TYPE_WAIT, .wait = 2.0f },
|
|
|
|
|
{ .type = CUTSCENE_ITEM_TYPE_CALLBACK, .callback = recordOrderB }
|
|
|
|
@@ -218,7 +218,7 @@ static const cutscene_t CUTSCENE_TEST_INSERT_SNIPPET = {
|
|
|
|
|
.pause = CUTSCENE_PAUSE_NONE
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static const cutsceneitem_t CUTSCENE_TEST_INSERT_OUTER_ITEMS[] = {
|
|
|
|
|
static cutsceneitem_t CUTSCENE_TEST_INSERT_OUTER_ITEMS[] = {
|
|
|
|
|
{ .type = CUTSCENE_ITEM_TYPE_CALLBACK, .callback = recordOrder0 },
|
|
|
|
|
{ .type = CUTSCENE_ITEM_TYPE_WAIT, .wait = 1.0f },
|
|
|
|
|
{ .type = CUTSCENE_ITEM_TYPE_CALLBACK, .callback = recordOrder1 },
|
|
|
|
@@ -263,7 +263,7 @@ static void test_cutsceneInsertSplicesItemsInPlaceThenResumes(void **state) {
|
|
|
|
|
assert_memory_equal(insertOrderLog, expected, sizeof(expected));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static const cutsceneitem_t CUTSCENE_TEST_INSERT_AS_LAST_ITEM_SNIPPET_ITEMS[] = {
|
|
|
|
|
static cutsceneitem_t CUTSCENE_TEST_INSERT_AS_LAST_ITEM_SNIPPET_ITEMS[] = {
|
|
|
|
|
{ .type = CUTSCENE_ITEM_TYPE_CALLBACK, .callback = recordOrderA }
|
|
|
|
|
};
|
|
|
|
|
static const cutscene_t CUTSCENE_TEST_INSERT_AS_LAST_ITEM_SNIPPET = {
|
|
|
|
@@ -273,7 +273,7 @@ static const cutscene_t CUTSCENE_TEST_INSERT_AS_LAST_ITEM_SNIPPET = {
|
|
|
|
|
.pause = CUTSCENE_PAUSE_NONE
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static const cutsceneitem_t CUTSCENE_TEST_INSERT_AS_LAST_ITEM_OUTER_ITEMS[] = {
|
|
|
|
|
static cutsceneitem_t CUTSCENE_TEST_INSERT_AS_LAST_ITEM_OUTER_ITEMS[] = {
|
|
|
|
|
{ .type = CUTSCENE_ITEM_TYPE_CALLBACK, .callback = recordOrder0 },
|
|
|
|
|
{
|
|
|
|
|
.type = CUTSCENE_ITEM_TYPE_INSERT,
|
|
|
|
@@ -313,7 +313,7 @@ static void test_cutsceneInsertAsLastItemEndsCutsceneNaturally(
|
|
|
|
|
assert_memory_equal(insertOrderLog, expected, sizeof(expected));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static const cutsceneitem_t CUTSCENE_TEST_INSERT_NESTED_INNER_ITEMS[] = {
|
|
|
|
|
static cutsceneitem_t CUTSCENE_TEST_INSERT_NESTED_INNER_ITEMS[] = {
|
|
|
|
|
{ .type = CUTSCENE_ITEM_TYPE_CALLBACK, .callback = recordOrderA }
|
|
|
|
|
};
|
|
|
|
|
static const cutscene_t CUTSCENE_TEST_INSERT_NESTED_INNER = {
|
|
|
|
@@ -326,7 +326,7 @@ static const cutscene_t CUTSCENE_TEST_INSERT_NESTED_INNER = {
|
|
|
|
|
// INSERT is MID's first item, so entering MID (from OUTER) cascades
|
|
|
|
|
// straight through into INNER within the same Start chain, one level
|
|
|
|
|
// deeper than a single insert.
|
|
|
|
|
static const cutsceneitem_t CUTSCENE_TEST_INSERT_NESTED_MID_ITEMS[] = {
|
|
|
|
|
static cutsceneitem_t CUTSCENE_TEST_INSERT_NESTED_MID_ITEMS[] = {
|
|
|
|
|
{
|
|
|
|
|
.type = CUTSCENE_ITEM_TYPE_INSERT,
|
|
|
|
|
.insert = { .cutscene = &CUTSCENE_TEST_INSERT_NESTED_INNER, .name = NULL }
|
|
|
|
@@ -340,7 +340,7 @@ static const cutscene_t CUTSCENE_TEST_INSERT_NESTED_MID = {
|
|
|
|
|
.pause = CUTSCENE_PAUSE_NONE
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static const cutsceneitem_t CUTSCENE_TEST_INSERT_NESTED_OUTER_ITEMS[] = {
|
|
|
|
|
static cutsceneitem_t CUTSCENE_TEST_INSERT_NESTED_OUTER_ITEMS[] = {
|
|
|
|
|
{ .type = CUTSCENE_ITEM_TYPE_CALLBACK, .callback = recordOrder0 },
|
|
|
|
|
{
|
|
|
|
|
.type = CUTSCENE_ITEM_TYPE_INSERT,
|
|
|
|
@@ -380,7 +380,7 @@ static void test_cutsceneInsertNestsThroughMultipleLevels(void **state) {
|
|
|
|
|
assert_memory_equal(insertOrderLog, expected, sizeof(expected));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static const cutsceneitem_t CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL5_ITEMS[] = {
|
|
|
|
|
static cutsceneitem_t CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL5_ITEMS[] = {
|
|
|
|
|
{ .type = CUTSCENE_ITEM_TYPE_CALLBACK, .callback = recordOrderA }
|
|
|
|
|
};
|
|
|
|
|
static const cutscene_t CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL5 = {
|
|
|
|
@@ -389,7 +389,7 @@ static const cutscene_t CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL5 = {
|
|
|
|
|
sizeof(cutsceneitem_t),
|
|
|
|
|
.pause = CUTSCENE_PAUSE_NONE
|
|
|
|
|
};
|
|
|
|
|
static const cutsceneitem_t CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL4_ITEMS[] = {
|
|
|
|
|
static cutsceneitem_t CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL4_ITEMS[] = {
|
|
|
|
|
{
|
|
|
|
|
.type = CUTSCENE_ITEM_TYPE_INSERT,
|
|
|
|
|
.insert = { .cutscene = &CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL5, .name = NULL }
|
|
|
|
@@ -401,7 +401,7 @@ static const cutscene_t CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL4 = {
|
|
|
|
|
sizeof(cutsceneitem_t),
|
|
|
|
|
.pause = CUTSCENE_PAUSE_NONE
|
|
|
|
|
};
|
|
|
|
|
static const cutsceneitem_t CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL3_ITEMS[] = {
|
|
|
|
|
static cutsceneitem_t CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL3_ITEMS[] = {
|
|
|
|
|
{
|
|
|
|
|
.type = CUTSCENE_ITEM_TYPE_INSERT,
|
|
|
|
|
.insert = { .cutscene = &CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL4, .name = NULL }
|
|
|
|
@@ -413,7 +413,7 @@ static const cutscene_t CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL3 = {
|
|
|
|
|
sizeof(cutsceneitem_t),
|
|
|
|
|
.pause = CUTSCENE_PAUSE_NONE
|
|
|
|
|
};
|
|
|
|
|
static const cutsceneitem_t CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL2_ITEMS[] = {
|
|
|
|
|
static cutsceneitem_t CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL2_ITEMS[] = {
|
|
|
|
|
{
|
|
|
|
|
.type = CUTSCENE_ITEM_TYPE_INSERT,
|
|
|
|
|
.insert = { .cutscene = &CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL3, .name = NULL }
|
|
|
|
@@ -425,7 +425,7 @@ static const cutscene_t CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL2 = {
|
|
|
|
|
sizeof(cutsceneitem_t),
|
|
|
|
|
.pause = CUTSCENE_PAUSE_NONE
|
|
|
|
|
};
|
|
|
|
|
static const cutsceneitem_t CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL1_ITEMS[] = {
|
|
|
|
|
static cutsceneitem_t CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL1_ITEMS[] = {
|
|
|
|
|
{
|
|
|
|
|
.type = CUTSCENE_ITEM_TYPE_INSERT,
|
|
|
|
|
.insert = { .cutscene = &CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL2, .name = NULL }
|
|
|
|
@@ -437,7 +437,7 @@ static const cutscene_t CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL1 = {
|
|
|
|
|
sizeof(cutsceneitem_t),
|
|
|
|
|
.pause = CUTSCENE_PAUSE_NONE
|
|
|
|
|
};
|
|
|
|
|
static const cutsceneitem_t CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL0_ITEMS[] = {
|
|
|
|
|
static cutsceneitem_t CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL0_ITEMS[] = {
|
|
|
|
|
{
|
|
|
|
|
.type = CUTSCENE_ITEM_TYPE_INSERT,
|
|
|
|
|
.insert = { .cutscene = &CUTSCENE_TEST_INSERT_OVERFLOW_LEVEL1, .name = NULL }
|
|
|
|
@@ -466,7 +466,7 @@ static void test_cutsceneInsertAssertsWhenNestingExceedsStackMax(
|
|
|
|
|
|
|
|
|
|
static void noopInsertCallback(void *userData) {}
|
|
|
|
|
|
|
|
|
|
static const cutsceneitem_t CUTSCENE_TEST_INSERT_PERSIST_SNIPPET_ITEMS[] = {
|
|
|
|
|
static cutsceneitem_t CUTSCENE_TEST_INSERT_PERSIST_SNIPPET_ITEMS[] = {
|
|
|
|
|
{ .type = CUTSCENE_ITEM_TYPE_CALLBACK, .callback = noopInsertCallback }
|
|
|
|
|
};
|
|
|
|
|
static const cutscene_t CUTSCENE_TEST_INSERT_PERSIST_SNIPPET = {
|
|
|
|
@@ -476,7 +476,7 @@ static const cutscene_t CUTSCENE_TEST_INSERT_PERSIST_SNIPPET = {
|
|
|
|
|
.pause = CUTSCENE_PAUSE_ALL
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static const cutsceneitem_t CUTSCENE_TEST_INSERT_PERSIST_OUTER_ITEMS[] = {
|
|
|
|
|
static cutsceneitem_t CUTSCENE_TEST_INSERT_PERSIST_OUTER_ITEMS[] = {
|
|
|
|
|
{
|
|
|
|
|
.type = CUTSCENE_ITEM_TYPE_INSERT,
|
|
|
|
|
.insert = { .cutscene = &CUTSCENE_TEST_INSERT_PERSIST_SNIPPET, .name = NULL }
|
|
|
|
|