Path: blob/master/SonicMania/Objects/MMZ/ConveyorWheel.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: ConveyorWheel Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89ObjectConveyorWheel *ConveyorWheel;1011void ConveyorWheel_Update(void)12{13RSDK_THIS(ConveyorWheel);1415foreach_active(Player, player)16{17if (Player_CheckCollisionTouch(player, self, &ConveyorWheel->hitbox)) {18if (player->state == Player_State_KnuxGlideDrop || player->state == Player_State_KnuxGlideSlide)19player->state = Player_State_Ground;2021if (self->direction)22player->groundVel = CLAMP(player->groundVel, -0xF0000, -0x40000);23else24player->groundVel = CLAMP(player->groundVel, 0x40000, 0xF0000);25}26}2728self->angle = (self->angle + 4) & 0x1FF;29}3031void ConveyorWheel_LateUpdate(void) {}3233void ConveyorWheel_StaticUpdate(void) {}3435void ConveyorWheel_Draw(void) {}3637void ConveyorWheel_Create(void *data)38{39RSDK_THIS(ConveyorWheel);4041self->drawFX |= FX_FLIP;42self->active = ACTIVE_BOUNDS;43self->visible = true;44self->updateRange.x = 0x400000;45self->updateRange.y = 0x400000;46self->drawGroup = Zone->objectDrawGroup[1];4748RSDK.SetSpriteAnimation(ConveyorWheel->aniFrames, 0, &self->animator, true, 0);49}5051void ConveyorWheel_StageLoad(void)52{53if (RSDK.CheckSceneFolder("MMZ"))54ConveyorWheel->aniFrames = RSDK.LoadSpriteAnimation("MMZ/ConveyorWheel.bin", SCOPE_STAGE);5556ConveyorWheel->hitbox.left = -49;57ConveyorWheel->hitbox.top = -49;58ConveyorWheel->hitbox.right = 49;59ConveyorWheel->hitbox.bottom = 49;60}6162#if GAME_INCLUDE_EDITOR63void ConveyorWheel_EditorDraw(void)64{65RSDK_THIS(ConveyorWheel);6667RSDK.DrawSprite(&self->animator, NULL, false);6869if (showGizmos()) {70RSDK_DRAWING_OVERLAY(true);7172DrawHelpers_DrawHitboxOutline(self->position.x, self->position.y, &ConveyorWheel->hitbox, FLIP_NONE, 0xFF0000);7374RSDK_DRAWING_OVERLAY(false);75}76}7778void ConveyorWheel_EditorLoad(void)79{80ConveyorWheel->aniFrames = RSDK.LoadSpriteAnimation("MMZ/ConveyorWheel.bin", SCOPE_STAGE);8182ConveyorWheel->hitbox.left = -49;83ConveyorWheel->hitbox.top = -49;84ConveyorWheel->hitbox.right = 49;85ConveyorWheel->hitbox.bottom = 49;8687RSDK_ACTIVE_VAR(ConveyorWheel, direction);88RSDK_ENUM_VAR("Right", FLIP_NONE);89RSDK_ENUM_VAR("Left", FLIP_X);90}91#endif9293void ConveyorWheel_Serialize(void) { RSDK_EDITABLE_VAR(ConveyorWheel, VAR_UINT8, direction); }949596