Path: blob/master/SonicMania/Objects/Menu/LogoSetup.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: LogoSetup Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89ObjectLogoSetup *LogoSetup;1011void LogoSetup_Update(void)12{13RSDK_THIS(LogoSetup);1415StateMachine_Run(self->state);1617ScreenInfo->position.x = 0x100 - ScreenInfo->center.x;18}1920void LogoSetup_LateUpdate(void) {}2122void LogoSetup_StaticUpdate(void) {}2324void LogoSetup_Draw(void)25{26RSDK_THIS(LogoSetup);2728StateMachine_Run(self->stateDraw);29}3031void LogoSetup_Create(void *data)32{33RSDK_THIS(LogoSetup);3435if (!SceneInfo->inEditor) {36self->active = ACTIVE_ALWAYS;37self->visible = true;38self->drawGroup = 12;39self->state = sku_region == REGION_JP ? LogoSetup_State_CESAScreen : LogoSetup_State_ShowLogos;40self->stateDraw = LogoSetup_Draw_Fade;41self->timer = 1024;42}43}4445void LogoSetup_StageLoad(void)46{47LogoSetup->sfxSega = RSDK.GetSfx("Stage/Sega.wav");48RSDK.ResetEntitySlot(0, LogoSetup->classID, NULL);49UIPicture->aniFrames = RSDK.LoadSpriteAnimation("Logos/Logos.bin", SCOPE_STAGE);5051// What... is this for...?52// LogoSetup is never in any other stages besides category 0, scene 0 (Logos) so this should never be used...53// However it was even updated for plus which means it has to have been some sort of dev/debug feature5455if (SceneInfo->listPos >= 3) {56switch (SceneInfo->listPos) {57case 3: globals->playerID = ID_SONIC; break;58case 4: globals->playerID = ID_TAILS; break;59case 5: globals->playerID = ID_KNUCKLES; break;60#if MANIA_USE_PLUS61case 6: globals->playerID = ID_MIGHTY; break;62case 7: globals->playerID = ID_RAY; break;63#endif64default: break;65}66}67}6869bool32 LogoSetup_ImageCallback(void)70{71if (LogoSetup->timer > 12072&& (ControllerInfo->keyA.press || ControllerInfo->keyB.press || ControllerInfo->keyStart.press || LogoSetup->timer >= 300)) {73return true;74}7576LogoSetup->timer++;77return false;78}7980void LogoSetup_State_CESAScreen(void)81{82RSDK_THIS(LogoSetup);8384LogoSetup->timer = 0;85#if MANIA_USE_PLUS86RSDK.LoadImage("CESA.png", 60.0, 2.0, LogoSetup_ImageCallback);87#else88RSDK.LoadImage("CESA.tga", 60.0, 2.0, LogoSetup_ImageCallback);89#endif9091self->timer = 1024;92self->state = LogoSetup_State_ShowLogos;93}9495void LogoSetup_State_ShowLogos(void)96{97RSDK_THIS(LogoSetup);9899if (self->timer <= 0) {100if (!ScreenInfo->position.y)101RSDK.PlaySfx(LogoSetup->sfxSega, false, 0xFF);102103self->timer = 0;104self->state = LogoSetup_State_FadeToNextLogos;105self->stateDraw = StateMachine_None;106}107else {108self->timer -= 16;109}110}111112void LogoSetup_State_FadeToNextLogos(void)113{114RSDK_THIS(LogoSetup);115116if (++self->timer > 120 || (self->timer > 30 && ControllerInfo->keyStart.press)) {117self->timer = 0;118self->state = LogoSetup_State_NextLogos;119self->stateDraw = LogoSetup_Draw_Fade;120}121}122123void LogoSetup_State_NextLogos(void)124{125RSDK_THIS(LogoSetup);126127if (self->timer >= 1024) {128if (ScreenInfo->position.y >= SCREEN_YSIZE) {129++SceneInfo->listPos;130RSDK.LoadScene();131}132else {133ScreenInfo->position.y += SCREEN_YSIZE;134self->state = LogoSetup_State_ShowLogos;135self->stateDraw = LogoSetup_Draw_Fade;136self->timer = 0x400;137}138}139else {140self->timer += 16;141}142}143144void LogoSetup_Draw_Fade(void)145{146RSDK_THIS(LogoSetup);147148RSDK.FillScreen(0x000000, self->timer, self->timer - 128, self->timer - 256);149}150151#if GAME_INCLUDE_EDITOR152void LogoSetup_EditorDraw(void) {}153154void LogoSetup_EditorLoad(void) {}155#endif156157void LogoSetup_Serialize(void) {}158159160