Path: blob/master/SonicMania/Objects/MSZ/MSZ1KIntro.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: MSZ1KIntro Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89ObjectMSZ1KIntro *MSZ1KIntro;1011void MSZ1KIntro_Update(void)12{13RSDK_THIS(MSZ1KIntro);1415if (!self->activated) {16if (!isMainGameMode() || !globals->enableIntro || CutsceneRules_CheckStageReload()) {17self->active = ACTIVE_NEVER;18}19else {20self->activated = true;21CutsceneSeq_StartSequence(self, MSZ1KIntro_Cutscene_SetupPlane, MSZ1KIntro_Cutscene_MagicianMischief, MSZ1KIntro_Cutscene_StartAct,22StateMachine_None);2324#if MANIA_USE_PLUS25CutsceneSeq_SetSkipType(SKIPTYPE_RELOADSCN);26#endif27}28}29}3031void MSZ1KIntro_LateUpdate(void) {}3233void MSZ1KIntro_StaticUpdate(void) {}3435void MSZ1KIntro_Draw(void) {}3637void MSZ1KIntro_Create(void *data)38{39RSDK_THIS(MSZ1KIntro);4041INIT_ENTITY(self);42CutsceneRules_SetupEntity(self, &self->size, &self->hitbox);43self->active = ACTIVE_NORMAL;4445if (!globals->suppressTitlecard)46destroyEntity(self);47}4849void MSZ1KIntro_StageLoad(void)50{51MSZ1KIntro->playerFrames = RSDK.LoadSpriteAnimation("Players/KnuxCutsceneAIZ.bin", SCOPE_STAGE);5253MSZ1KIntro->sfxImpact = RSDK.GetSfx("Stage/Impact3.wav");54}5556bool32 MSZ1KIntro_Cutscene_SetupPlane(EntityCutsceneSeq *host)57{58MANIA_GET_PLAYER(player1, player2, camera);59UNUSED(player2);60UNUSED(camera);6162if (!host->timer) {63player1->position.y -= 0x4000000;64player1->state = Player_State_Air;65player1->nextGroundState = StateMachine_None;66player1->nextAirState = StateMachine_None;67player1->onGround = false;68player1->velocity.y = 0x80000;69player1->stateInput = StateMachine_None;70CutsceneSeq_LockAllPlayerControl();71}7273RSDK.SetSpriteAnimation(MSZ1KIntro->playerFrames, 4, &player1->animator, false, 0);7475if (player1->onGround) {76RSDK.SetSpriteAnimation(MSZ1KIntro->playerFrames, 5, &player1->animator, true, 0);77player1->state = Player_State_Static;78return true;79}8081return false;82}8384bool32 MSZ1KIntro_Cutscene_MagicianMischief(EntityCutsceneSeq *host)85{86MANIA_GET_PLAYER(player1, player2, camera);87UNUSED(player2);88UNUSED(camera);8990if (!host->timer) {91RSDK.SetSpriteAnimation(MSZ1KIntro->playerFrames, 5, &player1->animator, true, 0);92player1->state = Player_State_Static;93player1->tileCollisions = TILECOLLISION_NONE;94}9596if (player1->animator.animationID == 5 && player1->animator.frameID == 1 && !host->values[0]) {97RSDK.PlaySfx(MSZ1KIntro->sfxImpact, false, 0xFF);98Camera_ShakeScreen(0, 0, 4);99host->values[0] = true;100}101102if (host->timer == 60)103RSDK.SetSpriteAnimation(MSZ1KIntro->playerFrames, 7, &player1->animator, false, 0);104105if (host->timer == 180)106RSDK.SetSpriteAnimation(MSZ1KIntro->playerFrames, 3, &player1->animator, true, 0);107108if (player1->animator.animationID == 3 && player1->animator.frameID == player1->animator.frameCount - 1) {109RSDK.SetSpriteAnimation(player1->aniFrames, 0, &player1->animator, true, 0);110return true;111}112return false;113}114115bool32 MSZ1KIntro_Cutscene_StartAct(EntityCutsceneSeq *host)116{117MANIA_GET_PLAYER(player1, player2, camera);118UNUSED(player2);119UNUSED(camera);120121if (host->timer == 30) {122player1->stateInput = Player_Input_P1;123player1->tileCollisions = TILECOLLISION_DOWN;124player1->onGround = true;125player1->state = Player_State_Ground;126127foreach_all(TitleCard, titleCard)128{129titleCard->active = ACTIVE_NORMAL;130titleCard->state = TitleCard_State_SetupBGElements;131titleCard->stateDraw = TitleCard_Draw_SlideIn;132foreach_break;133}134135Music_PlayTrack(TRACK_STAGE);136return true;137}138139return false;140}141142#if GAME_INCLUDE_EDITOR143void MSZ1KIntro_EditorDraw(void)144{145RSDK_THIS(MSZ1KIntro);146147CutsceneRules_DrawCutsceneBounds(self, &self->size);148}149150void MSZ1KIntro_EditorLoad(void) {}151#endif152153void MSZ1KIntro_Serialize(void) { RSDK_EDITABLE_VAR(MSZ1KIntro, VAR_VECTOR2, size); }154155156