Path: blob/master/SonicMania/Objects/MMZ/MMZLightning.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: MMZLightning Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89#if MANIA_USE_PLUS10ObjectMMZLightning *MMZLightning;1112void MMZLightning_Update(void)13{14RSDK_THIS(MMZLightning);1516StateMachine_Run(self->state);17}1819void MMZLightning_LateUpdate(void) {}2021void MMZLightning_StaticUpdate(void) {}2223void MMZLightning_Draw(void)24{25RSDK_THIS(MMZLightning);2627RSDK.SetActivePalette(1, 0, ScreenInfo->size.y);2829RSDK.DrawSprite(&self->animator, NULL, true);3031RSDK.SetActivePalette(0, 0, ScreenInfo->size.y);32}3334void MMZLightning_Create(void *data)35{36RSDK_THIS(MMZLightning);3738if (!SceneInfo->inEditor) {39self->active = ACTIVE_NORMAL;40self->state = (Type_StateMachine)data;41}42}4344void MMZLightning_StageLoad(void) { MMZLightning->aniFrames = RSDK.LoadSpriteAnimation("MMZ/Lightning.bin", SCOPE_STAGE); }4546void MMZLightning_State_BeginFadeIn(void)47{48RSDK_THIS(MMZLightning);4950if (!self->timer)51RSDK.SetLimitedFade(0, 0, 5, 192, 0, 255);5253if (++self->timer == 4) {54self->timer = 0;55self->state = MMZLightning_State_FadeIn;56}57}5859void MMZLightning_State_FadeIn(void)60{61RSDK_THIS(MMZLightning);6263RSDK.SetLimitedFade(0, 4, 1, self->timer, false, 255);6465self->timer += 4;66if (self->timer > 256)67destroyEntity(self);68}6970void MMZLightning_State_SetupLightningBig(void)71{72RSDK_THIS(MMZLightning);7374RSDK.SetSpriteAnimation(MMZLightning->aniFrames, 0, &self->animator, true, 0);7576self->position.x = (ScreenInfo->center.x + RSDK.Rand(-140, 140)) << 16;77self->position.y = RSDK.Rand(0x200000, 0x400000);78self->visible = true;79self->drawFX = FX_FLIP;80self->direction = RSDK.Rand(0, 2);81self->alpha = 0x200;82self->inkEffect = INK_ADD;83self->drawGroup = 1;8485self->state = MMZLightning_State_ShowLightningBig;86}8788void MMZLightning_State_ShowLightningBig(void)89{90RSDK_THIS(MMZLightning);9192RSDK.ProcessAnimation(&self->animator);9394if (self->animator.frameID == self->animator.frameCount - 1)95self->state = MMZLightning_State_LightningBigFadeOut;96}9798void MMZLightning_State_LightningBigFadeOut(void)99{100RSDK_THIS(MMZLightning);101102if (self->alpha > 0)103self->alpha -= 8;104else105destroyEntity(self);106}107108void MMZLightning_State_SetupLightningSmall(void)109{110RSDK_THIS(MMZLightning);111112RSDK.SetSpriteAnimation(MMZLightning->aniFrames, 1, &self->animator, true, RSDK.Rand(0, 4));113114self->position.x = (ScreenInfo->center.x + RSDK.Rand(-64, 64)) << 16;115self->position.y = RSDK.Rand(0x400000, 0x600000);116self->visible = true;117self->drawFX = FX_FLIP;118self->direction = RSDK.Rand(0, 4);119self->alpha = 320;120self->inkEffect = INK_ADD;121self->drawGroup = 1;122123self->state = MMZLightning_State_LightningSmallFadeOut;124}125126void MMZLightning_State_LightningSmallFadeOut(void)127{128RSDK_THIS(MMZLightning);129130if (self->alpha > 0)131self->alpha -= 0x20;132else133destroyEntity(self);134}135136#if GAME_INCLUDE_EDITOR137void MMZLightning_EditorDraw(void) {}138139void MMZLightning_EditorLoad(void) {}140#endif141142void MMZLightning_Serialize(void) {}143#endif144145146