Path: blob/master/SonicMania/Objects/HCZ/HCZ1Intro.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: HCZ1Intro Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89ObjectHCZ1Intro *HCZ1Intro;1011void HCZ1Intro_Update(void)12{13RSDK_THIS(HCZ1Intro);1415if (!self->activated) {16if (!isMainGameMode() || !globals->enableIntro || CutsceneRules_CheckStageReload()) {17self->active = ACTIVE_NEVER;18}19else {20self->activated = true;21CutsceneSeq_StartSequence(self, HCZ1Intro_Cutscene_Intro, StateMachine_None);2223#if MANIA_USE_PLUS24CutsceneSeq_SetSkipType(SKIPTYPE_DISABLED);25#endif26}27}28}2930void HCZ1Intro_LateUpdate(void) {}3132void HCZ1Intro_StaticUpdate(void) {}3334void HCZ1Intro_Draw(void) {}3536void HCZ1Intro_Create(void *data)37{38RSDK_THIS(HCZ1Intro);3940INIT_ENTITY(self);41CutsceneRules_SetupEntity(self, &self->size, &self->hitbox);42self->active = ACTIVE_NORMAL;43}4445void HCZ1Intro_StageLoad(void)46{47if (isMainGameMode() && globals->enableIntro && !CutsceneRules_CheckStageReload() && !Zone->actID) {48Water->disableWaterSplash = true;49}50}5152bool32 HCZ1Intro_Cutscene_Intro(EntityCutsceneSeq *host)53{54RSDK_THIS(HCZ1Intro);5556EntityPlayer *player1 = RSDK_GET_ENTITY(SLOT_PLAYER1, Player);57EntityPlayer *player2 = RSDK_GET_ENTITY(SLOT_PLAYER2, Player);58EntityCamera *camera = RSDK_GET_ENTITY(SLOT_CAMERA1, Camera);5960if (!host->timer) {61camera->position.x = self->position.x;62camera->position.y = 0;6364player1->position.x = self->position.x - 0x200000;65player1->camera = NULL;66player1->onGround = false;67player1->state = Player_State_Air;68player1->stateInput = StateMachine_None;69CutsceneSeq_LockAllPlayerControl();7071#if MANIA_USE_PLUS72RSDK.SetSpriteAnimation(player1->aniFrames, ANI_FLUME, &player1->animator, false, 0);73#else74RSDK.SetSpriteAnimation(player1->aniFrames, ANI_HURT, &player1->animator, false, 0);75#endif7677if (player2->classID == Player->classID) {78player2->position.x = player1->position.x - 0x200000;79player2->position.y = player1->position.y;80player2->state = Player_State_Air;81player2->onGround = false;82player2->stateInput = StateMachine_None;8384#if MANIA_USE_PLUS85RSDK.SetSpriteAnimation(player2->aniFrames, ANI_FLUME, &player2->animator, false, 0);86#else87RSDK.SetSpriteAnimation(player1->aniFrames, ANI_HURT, &player1->animator, false, 0);88#endif89}90}9192if (host->timer >= 8) {93if (host->timer == 8) {94camera->target = (Entity *)player1;95camera->state = Camera_State_FollowXY;96player1->stateInput = Player_Input_P1;97player1->camera = camera;98Water->disableWaterSplash = 0;99}100}101else {102player1->position.y = 0;103player1->velocity.x = 0;104player1->velocity.y = 0;105106if (player2->classID == Player->classID) {107player2->position.y = 0;108player2->velocity.x = 0;109player2->velocity.y = 0;110}111}112113if (RSDK.GetEntityCount(TitleCard->classID, false) || RSDK_GET_ENTITY(SLOT_ACTCLEAR, TitleCard)->classID) {114if (!host->values[0])115return false;116}117else if (!host->values[0]) {118host->values[0] = true;119host->storedTimer = host->timer;120}121122if (host->timer >= 8) {123if (player2->classID != Player->classID)124return true;125126if (player2->underwater) {127player2->stateInput = Player_Input_P2_AI;128return true;129}130}131132return false;133}134135#if GAME_INCLUDE_EDITOR136void HCZ1Intro_EditorDraw(void)137{138RSDK_THIS(HCZ1Intro);139140CutsceneRules_DrawCutsceneBounds(self, &self->size);141}142143void HCZ1Intro_EditorLoad(void) {}144#endif145146void HCZ1Intro_Serialize(void) { RSDK_EDITABLE_VAR(HCZ1Intro, VAR_VECTOR2, size); }147148149