Path: blob/master/SonicMania/Objects/TMZ/TMZAlert.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: TMZAlert Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89ObjectTMZAlert *TMZAlert;1011void TMZAlert_Update(void)12{13RSDK_THIS(TMZAlert);1415StateMachine_Run(self->state);16}1718void TMZAlert_LateUpdate(void) {}1920void TMZAlert_StaticUpdate(void) {}2122void TMZAlert_Draw(void)23{24RSDK_THIS(TMZAlert);2526self->drawFX = FX_NONE;27self->inkEffect = INK_NONE;28self->screenAnimator.frameID = 0;29RSDK.DrawSprite(&self->screenAnimator, NULL, false);3031if (self->scale.y != 0x200)32self->drawFX = FX_SCALE;3334self->inkEffect = INK_ALPHA;35self->screenAnimator.frameID = 1;36RSDK.DrawSprite(&self->screenAnimator, NULL, false);3738RSDK.DrawSprite(&self->messageAnimator, NULL, false);39}4041void TMZAlert_Create(void *data)42{43RSDK_THIS(TMZAlert);4445if (!SceneInfo->inEditor) {46self->inkEffect = INK_ALPHA;47self->visible = true;48self->drawFX = FX_SCALE;49self->drawGroup = Zone->objectDrawGroup[0];50self->active = ACTIVE_BOUNDS;51self->updateRange.x = 0x800000;52self->updateRange.y = 0x800000;53self->scale.x = 0x200;54self->alpha = 0x10 * (RSDK.Rand(-32, -8) - 16);5556RSDK.SetSpriteAnimation(TMZAlert->aniFrames, 0, &self->screenAnimator, true, 0);57}58}5960void TMZAlert_StageLoad(void) { TMZAlert->aniFrames = RSDK.LoadSpriteAnimation("Phantom/AlertScreen.bin", SCOPE_STAGE); }6162void TMZAlert_State_Activating(void)63{64RSDK_THIS(TMZAlert);6566if (self->alpha >= 0x100) {67self->drawFX = FX_NONE;68self->state = TMZAlert_State_Alerting;69}70else {71self->alpha += 0x20;72if (self->alpha > 0x100)73self->alpha = 0x100;7475self->scale.y = 2 * self->alpha;76}77}78void TMZAlert_State_Alerting(void)79{80RSDK_THIS(TMZAlert);8182self->alpha = 0xE0 + (RSDK.Cos256(8 * ++self->timer) >> 2);8384if (!(self->timer & 0xF))85RSDK.SetSpriteAnimation(TMZAlert->aniFrames, 1, &self->messageAnimator, true, RSDK.Rand(0, 2));8687if (self->timer == 320) {88self->timer = 0;89self->state = TMZAlert_State_ShuttingDown;90}91}9293void TMZAlert_State_ShuttingDown(void)94{95RSDK_THIS(TMZAlert);9697if (self->alpha <= 0x10)98self->state = StateMachine_None;99else100self->alpha -= 8;101}102103#if GAME_INCLUDE_EDITOR104void TMZAlert_EditorDraw(void)105{106RSDK_THIS(TMZAlert);107108RSDK.SetSpriteAnimation(TMZAlert->aniFrames, 0, &self->screenAnimator, true, 0);109110TMZAlert_Draw();111}112113void TMZAlert_EditorLoad(void) { TMZAlert->aniFrames = RSDK.LoadSpriteAnimation("Phantom/AlertScreen.bin", SCOPE_STAGE); }114#endif115116void TMZAlert_Serialize(void) {}117118119