Path: blob/master/SonicMania/Objects/Cutscene/FXExpandRing.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: FXExpandRing Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89ObjectFXExpandRing *FXExpandRing;1011void FXExpandRing_Update(void)12{13RSDK_THIS(FXExpandRing);1415StateMachine_Run(self->state);1617Entity *parent = self->parent;18if (parent) {19if (self->drawFX == FX_FLIP && parent->direction) {20self->position.x = parent->position.x - self->posOffset.x;21self->position.y = parent->position.y + self->posOffset.y;22}23else {24self->position.x = parent->position.x + self->posOffset.x;25self->position.y = parent->position.y + self->posOffset.y;26}27}28}2930void FXExpandRing_LateUpdate(void) {}3132void FXExpandRing_StaticUpdate(void) {}3334void FXExpandRing_Draw(void)35{36RSDK_THIS(FXExpandRing);3738RSDK.DrawCircleOutline(self->position.x, self->position.y, self->innerRadius, self->outerRadius, self->color, self->alpha, INK_ADD, false);39}4041void FXExpandRing_Create(void *data)42{43RSDK_THIS(FXExpandRing);4445if (!SceneInfo->inEditor) {46self->visible = true;47self->active = ACTIVE_NORMAL;48self->drawGroup = Zone->objectDrawGroup[1];49self->expandMax = 64;50self->expandSpeed = 8;51self->state = FXExpandRing_State_FadeIn;52self->color = 0xF0F0F0;53}54}5556void FXExpandRing_StageLoad(void) {}5758void FXExpandRing_State_FadeIn(void)59{60RSDK_THIS(FXExpandRing);6162if (self->alpha < 0xC0)63self->alpha += 0x10;6465self->outerRadius += self->expandSpeed;6667if (self->outerRadius > self->expandMax - (self->expandMax >> 2))68self->state = FXExpandRing_State_Expand;69}70void FXExpandRing_State_Expand(void)71{72RSDK_THIS(FXExpandRing);7374if (self->alpha < 0xC0)75self->alpha += 0x10;7677if (self->outerRadius < self->expandMax)78self->outerRadius += self->expandSpeed;7980if (self->innerRadius >= self->expandMax - (self->expandMax >> 3))81self->state = FXExpandRing_State_FadeOut;82else83self->innerRadius += (self->expandSpeed >> 1);84}85void FXExpandRing_State_FadeOut(void)86{87RSDK_THIS(FXExpandRing);8889if (self->alpha <= 0)90destroyEntity(self);91else92self->alpha -= 0x10;93}9495#if GAME_INCLUDE_EDITOR96void FXExpandRing_EditorDraw(void) {}9798void FXExpandRing_EditorLoad(void) {}99#endif100101void FXExpandRing_Serialize(void) {}102103104