2024-08-30 01:18:18 -04:00

409 lines
14 KiB
C

#pragma once
#include "STATE_COMMON.h"
#define CUTSCENE_ONE_COUNT 4
static const Scene CUTSCENE_ONE_SCENES[CUTSCENE_ONE_COUNT] =
{
{
.texture = TEXTURE_CUTSCENE_ONE_SCENE_ONE,
.string = "In an far off patch of unknown wilderness, there has been an unexpected period of abundance. It is as if full meals grow from the ground like weeds in a garden. Or...perhaps, they do."
},
{
.texture = TEXTURE_CUTSCENE_ONE_SCENE_TWO,
.string = "The assertive frilled matriarch sees opportunity. Scrounging for scraps for much of her life, Fortune has presented her with a chance for boundless hedonism."
},
{
.texture = TEXTURE_CUTSCENE_ONE_SCENE_THREE,
.string = "Turning to her ever faithful underling, she speaks: \"My little runt. Feed me, and feed me lots; that is your meager life's greatest ambition. Not a single morsel must go elsewhere.\""
},
{
.texture = TEXTURE_CUTSCENE_ONE_SCENE_FOUR,
.string = "Without hesitation, her dutiful servant rushes out into the wilds, to fetch as much food as its claws can hold, its heart beating fast with adoration for its mistress..."
}
};
#define CUTSCENE_TWO_COUNT 5
static const Scene CUTSCENE_TWO_SCENES[CUTSCENE_TWO_COUNT] =
{
{
.texture = TEXTURE_CUTSCENE_TWO_SCENE_ONE,
.string = "The first expeditions had been a resounding success. The frilled matriarch has spent her time lounging and indulging in the delights her servant had brought her. It even began to reflect on her physique."
},
{
.texture = TEXTURE_CUTSCENE_TWO_SCENE_TWO,
.string = "The runt looks out into the wilderness. It had become... quite cloudy, where the two are. Things felt...strange, chaotic. It triggered the creature's most primal of instincts..."
},
{
.texture = TEXTURE_CUTSCENE_TWO_SCENE_THREE,
.string = "...but, its objective was more important than anything else!!"
},
{
.texture = TEXTURE_CUTSCENE_TWO_SCENE_FOUR,
.string = "Although...one instinct did claw at the creature...hunger. Though the creature's body pleaded to consume the fruits of its labor..every morsel must be delivered to the matriarch at all costs, as she insisted!"
},
{
.texture = TEXTURE_CUTSCENE_TWO_SCENE_FIVE,
.string = "As the creature journeyed onwards, into the discordant wilds, within the clouds, a gleam of turquoise emitted from their depths, and a small object decends from the sky above..."
}
};
#define CUTSCENE_THREE_COUNT 6
static const Scene CUTSCENE_THREE_SCENES[CUTSCENE_THREE_COUNT] =
{
{
.texture = TEXTURE_CUTSCENE_THREE_SCENE_ONE,
.string = "While scrounging for more foodstuffs, in the dense thicket, the frilled runt uncovers a golden trinket that illuminates an unearthly turquoise."
},
{
.texture = TEXTURE_CUTSCENE_THREE_SCENE_TWO,
.string = "Grasping onto it, the tiny being suddenly feels...different."
},
{
.texture = TEXTURE_CUTSCENE_THREE_SCENE_THREE,
.string = "The runt thinks nothing of it; its mind too occupied with its directive. But... a strange power seems to ruminate through the amulet..."
},
{
.texture = TEXTURE_CUTSCENE_THREE_SCENE_FOUR,
.string = "As the creature scampers off with its newfound prize, the frilled matriarch eyes glide over to her underling and its plunder in between one of her many gorging sessions."
},
{
.texture = TEXTURE_CUTSCENE_THREE_SCENE_FIVE,
.string = "The frilled runt returned to its duty. Unfortunately, the amulet did not solve its hunger problem..."
},
{
.texture = TEXTURE_CUTSCENE_THREE_SCENE_SIX,
.string = "However, it did make the creature feel...livelier. Perhaps that boost could stave off the hunger..."
},
};
#define CUTSCENE_FOUR_COUNT 6
static const Scene CUTSCENE_FOUR_SCENES[CUTSCENE_FOUR_COUNT] =
{
{
.texture = TEXTURE_CUTSCENE_FOUR_SCENE_ONE,
.string = "It seemed that the amulet's power was strengthening. Suddenly, the creature could feel things before they were set to happen. It predicted that its mistress would ask fo-"
},
{
.texture = TEXTURE_CUTSCENE_FOUR_SCENE_TWO,
.string = "\"Servant! Fetch more food for your famished matriarch!\""
},
{
.texture = TEXTURE_CUTSCENE_FOUR_SCENE_THREE,
.string = "...its prediction was accurate! But, that was likely to happen, anyways. As the creature left to plunder from the abundance, it also predicted the clouds would recede..."
},
{
.texture = TEXTURE_CUTSCENE_FOUR_SCENE_FOUR,
.string = "...and indeed, it happened. The amulet glowed that brilliant turquoise as this occurred...could the amulet also use its power to dispel or change the events happening around the creature?"
},
{
.texture = TEXTURE_CUTSCENE_FOUR_SCENE_FIVE,
.string = "It seemed that the amulet's abilities were increasing, The frilled runt's power continued to grow. What other secrets might it hold?"
},
{
.texture = TEXTURE_CUTSCENE_FOUR_SCENE_SIX,
.string = "The frilled matriarch looked onward to her steadfast worker. \"Ah...if only my mouth was not full when my servant comes...how I wish...to give my thanks.\""
},
};
#define CUTSCENE_FIVE_COUNT 6
static const Scene CUTSCENE_FIVE_SCENES[CUTSCENE_FIVE_COUNT] =
{
{
.texture = TEXTURE_CUTSCENE_FIVE_SCENE_ONE,
.string = "The frilled runt, having wieleded the amulet's magick, had begun to master it. That magick flowed through its veins like blood."
},
{
.texture = TEXTURE_CUTSCENE_FIVE_SCENE_TWO,
.string = "Not only did it grant new powers, it seemed to give the creature...visions. The creature had begun to experience something else besides the endless beat of instinct."
},
{
.texture = TEXTURE_CUTSCENE_FIVE_SCENE_THREE,
.string = "It dawned to the creature the reality of its situation. Endless servitude. Tiresome labor. Painful starvation. All to appease some insiginificant lifeform's appetites."
},
{
.texture = TEXTURE_CUTSCENE_FIVE_SCENE_FOUR,
.string = "As the frilled monarch finished gorging upon a morsel, it catches her single prized laborer caught in...this episode."
},
{
.texture = TEXTURE_CUTSCENE_FIVE_SCENE_FIVE,
.string = "\"My dear s-servant! Please, continue feeding me; I insist.\" she escapes her trance, her thick digits sunk into her now-voluminous yellow flesh."
},
{
.texture = TEXTURE_CUTSCENE_FIVE_SCENE_SIX,
.string = "A new feeling twinged through the creature's body. With its increasing powers, it seemed anything was possible. Godhood, even. For now, it would be best to play along with this charade... until... until..."
}
};
#define CUTSCENE_FINAL_COUNT 13
static const Scene CUTSCENE_FINAL_SCENES[CUTSCENE_FINAL_COUNT] =
{
{
.texture = TEXTURE_CUTSCENE_FINAL_SCENE_ONE,
.string = "As the frilled matriarch erupted out a thunderous belch after eating her next meal, she figured it'd be the best time to have a stretch."
},
{
.texture = TEXTURE_CUTSCENE_FINAL_SCENE_TWO,
.string = "Unfortunately for the gluttonous reptile, her body had acquired so much flesh, that her encumbered muscles could not heave her rotund rear end off of her throne."
},
{
.texture = TEXTURE_CUTSCENE_FINAL_SCENE_THREE,
.string = "She'd thought about it before, but now it had truly dawned upon the stubborn matriarch that perhaps she had taken in...a bit too much. Constantly taking, never giving. Her bloated body was evidence of that."
},
{
.texture = TEXTURE_CUTSCENE_FINAL_SCENE_FOUR,
.string = "The frilled matriarch looks to her underling, no longer distracted by her vice of gluttony. There's a...vulnerability, to her face."
},
{
.texture = TEXTURE_CUTSCENE_FINAL_SCENE_FIVE,
.string = "\"...I...think I might've had enough. Thank...thank you. Well...you're...hungry too, right, my...m-my little...friend?\""
},
{
.texture = TEXTURE_CUTSCENE_FINAL_SCENE_SIX,
.string = "Her little friend was, indeed, starving, and had been for a while. As a pang of hunger struck, so did a pang of that unfamilar, powerful...hatred."
},
{
.texture = TEXTURE_CUTSCENE_FINAL_SCENE_SEVEN,
.string = "\"Surely, you could've eaten some of the food yourself! And... I saw you with that golden trinket. It's got quite the power, doesn't it?\""
},
{
.texture = TEXTURE_CUTSCENE_FINAL_SCENE_EIGHT,
.string = "That golden trinket had amplified those feelings. It had also stirred untold, growing power. One could fell the useless, blubbery monarch and usurp her throne using its mighty magicks then and there."
},
{
.texture = TEXTURE_CUTSCENE_FINAL_SCENE_NINE,
.string = "But...the runt was not so shortsighted. The mistress was flawed, but what would the runt do without her? She gave it purpose, meaning. What would the runt rule over if it chose to unleash this power? Its starvation had only been an invention, festered by blind devotion, and amplified by the power of the amulet."
},
{
.texture = TEXTURE_CUTSCENE_FINAL_SCENE_TEN,
.string = "That amulet had intoxicated the little runt with visions. With its wisdom though, it helped the runt realize it is best for one to know their role; doing the most good with what they are, than being something they are not; like...a god. The runt chose to gift the trinket to the one more equipped to lead."
},
{
.texture = TEXTURE_CUTSCENE_FINAL_SCENE_ELEVEN,
.string = "The power present in the creature's body soon transferred to that of the frilled monarch. \"Now, my little friend...perhaps I should use this trinket's power to spoil you as much as you did me!"
},
{
.texture = TEXTURE_CUTSCENE_FINAL_SCENE_TWELVE,
.string = "\"..!\""
},
{
.texture = TEXTURE_CUTSCENE_FINAL_SCENE_THIRTEEN,
.string = "A turquoise light in the sky gleams as the two enjoy the abundance...together! Perhaps...a little too much!"
},
};
static const SceneCollection CUTSCENE_ONE =
{
.scenes = CUTSCENE_ONE_SCENES,
.count = CUTSCENE_ONE_COUNT
};
static const SceneCollection CUTSCENE_TWO =
{
.scenes = CUTSCENE_TWO_SCENES,
.count = CUTSCENE_TWO_COUNT
};
static const SceneCollection CUTSCENE_THREE =
{
.scenes = CUTSCENE_THREE_SCENES,
.count = CUTSCENE_THREE_COUNT
};
static const SceneCollection CUTSCENE_FOUR =
{
.scenes = CUTSCENE_FOUR_SCENES,
.count = CUTSCENE_FOUR_COUNT
};
static const SceneCollection CUTSCENE_FIVE =
{
.scenes = CUTSCENE_FIVE_SCENES,
.count = CUTSCENE_FIVE_COUNT
};
static const SceneCollection CUTSCENE_FINAL =
{
.scenes = CUTSCENE_FINAL_SCENES,
.count = CUTSCENE_FINAL_COUNT
};
static const LevelSettings LEVEL_SETTINGS[LEVEL_COUNT] =
{
{
.medalThresholds = {200, 275, 325},
.time = 7200,
.colorCover = {-0.05f, -0.05f, -0.05f, 0.0f},
.collectibleMax = 30,
.eventTime = 0,
.seedStart = 0xFACEFEED,
.isPower = false,
.isEvent = false,
.isAmulet = false,
.isSunset = false,
.isPowerForesight = false,
.isPowerCancel = false,
.isPowerMagnet = false,
.isPowerExtend = false,
.isPowerInvigorate = false,
.isTutorialMove = true,
.isTutorialStamina = true,
.isTutorialFood = true,
.isTutorialEvent = false,
.isTutorialPower = false,
.isTutorialPowerForesight = false,
.isTutorialPowerCancel = false,
.isTutorialPowerMagnet = false,
.isTutorialPowerExtend = false,
.isTutorialPowerInvigorate = false,
.isTutorialFinal = false
},
{
.medalThresholds = {300, 500, 600},
.time = 10800,
.colorCover = {-0.10f, -0.10f, -0.05f, 0.0f},
.collectibleMax = 35,
.eventTime = 1800,
.seedStart = 0xABADBABE,
.isPower = false,
.isEvent = true,
.isAmulet = true,
.isSunset = false,
.isPowerForesight = false,
.isPowerCancel = false,
.isPowerMagnet = false,
.isPowerExtend = false,
.isPowerInvigorate = false,
.isTutorialMove = false,
.isTutorialStamina = false,
.isTutorialFood = false,
.isTutorialEvent = true,
.isTutorialPower = false,
.isTutorialPowerForesight = false,
.isTutorialPowerCancel = false,
.isTutorialPowerMagnet = false,
.isTutorialPowerExtend = false,
.isTutorialPowerInvigorate = false,
.isTutorialFinal = false
},
{
.medalThresholds = {400, 550, 625},
.time = 10800,
.colorCover = {0.15f, 0.05f, 0.00f, 0.0f},
.collectibleMax = 40,
.eventTime = 1500,
.seedStart = 0x0B00B135,
.isPower = true,
.isEvent = true,
.isAmulet = false,
.isSunset = false,
.isPowerForesight = false,
.isPowerCancel = false,
.isPowerMagnet = false,
.isPowerExtend = false,
.isPowerInvigorate = true,
.isTutorialMove = false,
.isTutorialStamina = false,
.isTutorialFood = false,
.isTutorialEvent = false,
.isTutorialPower = true,
.isTutorialPowerForesight = false,
.isTutorialPowerCancel = false,
.isTutorialPowerMagnet = false,
.isTutorialPowerExtend = false,
.isTutorialPowerInvigorate = true,
.isTutorialFinal = false
},
{
.medalThresholds = {500, 600, 700},
.time = 10800,
.colorCover = {0.3f, 0.15f, 0.0f, 0.0f},
.collectibleMax = 45,
.eventTime = 1200,
.seedStart = 0xDEADD00D,
.isPower = true,
.isEvent = true,
.isAmulet = false,
.isSunset = true,
.isPowerForesight = true,
.isPowerCancel = true,
.isPowerMagnet = false,
.isPowerExtend = true,
.isPowerInvigorate = true,
.isTutorialMove = false,
.isTutorialStamina = false,
.isTutorialFood = false,
.isTutorialEvent = false,
.isTutorialPower = false,
.isTutorialPowerForesight = true,
.isTutorialPowerCancel = true,
.isTutorialPowerMagnet = false,
.isTutorialPowerExtend = true,
.isTutorialPowerInvigorate = false,
.isTutorialFinal = false
},
{
.medalThresholds = {750, 900, 1150},
.time = 18000,
.colorCover = {-0.25f, -0.50f, -0.10f, 0.0f},
.collectibleMax = 50,
.eventTime = 900,
.seedStart = 0xDEADBEEF,
.isPower = true,
.isEvent = true,
.isAmulet = false,
.isSunset = false,
.isPowerForesight = true,
.isPowerCancel = true,
.isPowerMagnet = false,
.isPowerExtend = true,
.isPowerInvigorate = true,
.isTutorialMove = false,
.isTutorialStamina = false,
.isTutorialFood = false,
.isTutorialEvent = false,
.isTutorialPower = false,
.isTutorialPowerForesight = false,
.isTutorialPowerCancel = false,
.isTutorialPowerMagnet = false,
.isTutorialPowerExtend = false,
.isTutorialPowerInvigorate = false,
.isTutorialFinal = true
}
};
static const LevelData LEVEL_DATA_DEFAULT[LEVEL_COUNT] =
{
{
.status = LEVEL_STATUS_UNLOCKED,
.score = -1,
.time = -1
},
{
.status = LEVEL_STATUS_LOCKED,
.score = -1,
.time = -1
},
{
.status = LEVEL_STATUS_UNLOCKED,
.score = -1,
.time = -1
},
{
.status = LEVEL_STATUS_LOCKED,
.score = -1,
.time = -1
},
{
.status = LEVEL_STATUS_LOCKED,
.score = -1,
.time = -1
},
};
void state_change(State* self, StateType type);
void state_init(State* self, ECS* ecs, StateType type);
void state_free(State* self);
void state_tick(State* self);