Path: blob/master/SonicMania/Objects/MSZ/LocoSmoke.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: LocoSmoke Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89ObjectLocoSmoke *LocoSmoke;1011void LocoSmoke_Update(void)12{13RSDK_THIS(LocoSmoke);1415RSDK.ProcessAnimation(&self->animator);1617if (++self->timer == 26) {18for (int32 i = 0; i < 8; ++i) {19int32 x = self->position.x + RSDK.Rand(-0x280000, 0x180000);20int32 y = self->position.y + RSDK.Rand(-0x480000, -0x180000);21EntityDebris *debris = CREATE_ENTITY(Debris, NULL, x, y);2223debris->state = Debris_State_Fall;24debris->gravityStrength = 512;25debris->velocity.x = RSDK.Rand(-0x20000, -0x8000);26debris->velocity.y = RSDK.Rand(-0x20000, -0x8000);27debris->drawGroup = Zone->objectDrawGroup[0] - 1;28debris->timer = 42;29RSDK.SetSpriteAnimation(LocoSmoke->aniFrames, 9, &debris->animator, true, 0);30}31}3233if (self->timer > 0x20) {34self->alpha -= 0x10;3536if (self->alpha <= 0)37destroyEntity(self);38}39}4041void LocoSmoke_LateUpdate(void) {}4243void LocoSmoke_StaticUpdate(void) {}4445void LocoSmoke_Draw(void)46{47RSDK_THIS(LocoSmoke);4849RSDK.DrawSprite(&self->animator, NULL, false);50}5152void LocoSmoke_Create(void *data)53{54RSDK_THIS(LocoSmoke);5556self->active = ACTIVE_NORMAL;57self->visible = true;58self->drawGroup = Zone->objectDrawGroup[0];59self->inkEffect = INK_ALPHA;60self->alpha = 0x100;6162RSDK.SetSpriteAnimation(LocoSmoke->aniFrames, 8, &self->animator, true, 0);63}6465void LocoSmoke_StageLoad(void) { LocoSmoke->aniFrames = RSDK.LoadSpriteAnimation("MSZ/Train.bin", SCOPE_STAGE); }6667#if GAME_INCLUDE_EDITOR68void LocoSmoke_EditorDraw(void)69{70RSDK_THIS(LocoSmoke);7172RSDK.SetSpriteAnimation(LocoSmoke->aniFrames, 8, &self->animator, true, 0);7374LocoSmoke_Draw();75}7677void LocoSmoke_EditorLoad(void) { LocoSmoke->aniFrames = RSDK.LoadSpriteAnimation("MSZ/Train.bin", SCOPE_STAGE); }78#endif7980void LocoSmoke_Serialize(void) {}818283