Path: blob/master/SonicMania/Objects/SSZ/MSOrb.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: MSOrb Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89ObjectMSOrb *MSOrb;1011void MSOrb_Update(void)12{13RSDK_THIS(MSOrb);1415StateMachine_Run(self->state);16}1718void MSOrb_LateUpdate(void) {}1920void MSOrb_StaticUpdate(void) {}2122void MSOrb_Draw(void)23{24RSDK_THIS(MSOrb);2526StateMachine_Run(self->stateDraw);27}2829void MSOrb_Create(void *data)30{31RSDK_THIS(MSOrb);3233if (!SceneInfo->inEditor) {34self->active = ACTIVE_NORMAL;35self->inkEffect = INK_ALPHA;36self->visible = true;37self->updateRange.x = 0x400000;38self->updateRange.y = 0x400000;39self->alpha = 0xC0;40self->drawGroup = Zone->objectDrawGroup[0];4142RSDK.SetSpriteAnimation(MSOrb->aniFrames, 15, &self->animator, true, 0);43self->state = MSOrb_State_Orb;44self->stateDraw = MSOrb_Draw_Orb;45}46}4748void MSOrb_StageLoad(void)49{50if (RSDK.CheckSceneFolder("SSZ2"))51MSOrb->aniFrames = RSDK.LoadSpriteAnimation("SSZ2/MetalSonic.bin", SCOPE_STAGE);5253MSOrb->hitboxOrb.left = -6;54MSOrb->hitboxOrb.top = -6;55MSOrb->hitboxOrb.right = 6;56MSOrb->hitboxOrb.bottom = 6;57}5859void MSOrb_CheckPlayerCollisions(void)60{61RSDK_THIS(MSOrb);6263foreach_active(Player, player)64{65if (Player_CheckCollisionTouch(player, self, &MSOrb->hitboxOrb))66Player_Hurt(player, self);67}68}6970void MSOrb_State_Orb(void)71{72RSDK_THIS(MSOrb);7374RSDK.ProcessAnimation(&self->animator);7576self->position.x += self->velocity.x;77self->position.y += self->velocity.y;7879MSOrb_CheckPlayerCollisions();80}8182void MSOrb_Draw_Orb(void)83{84RSDK_THIS(MSOrb);8586RSDK.DrawSprite(&self->animator, NULL, false);87}8889#if GAME_INCLUDE_EDITOR90void MSOrb_EditorDraw(void)91{92RSDK_THIS(MSOrb);9394self->inkEffect = INK_ALPHA;95self->visible = true;96self->updateRange.x = 0x400000;97self->updateRange.y = 0x400000;98self->alpha = 0xC0;99self->drawGroup = Zone->objectDrawGroup[0];100RSDK.SetSpriteAnimation(MSOrb->aniFrames, 15, &self->animator, true, 0);101102MSOrb_Draw_Orb();103}104105void MSOrb_EditorLoad(void) { MSOrb->aniFrames = RSDK.LoadSpriteAnimation("SSZ2/MetalSonic.bin", SCOPE_STAGE); }106#endif107108void MSOrb_Serialize(void) {}109110111