Path: blob/master/SonicMania/Objects/OOZ/Valve.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: Valve Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89ObjectValve *Valve;1011void Valve_Update(void)12{13RSDK_THIS(Valve);1415RSDK.ProcessAnimation(&self->valveAnimator);16RSDK.ProcessAnimation(&self->wheelAnimator);1718foreach_active(Player, player)19{20if (Player_CheckCollisionTouch(player, self, &Valve->hitbox))21OOZSetup->smogTimer = 0;22}2324if (self->wheelAnimator.animationID == 2 && self->wheelAnimator.frameID == 5 && self->wheelAnimator.timer == 1)25RSDK.PlaySfx(Valve->sfxClick, false, 0xFF);26}2728void Valve_LateUpdate(void) {}2930void Valve_StaticUpdate(void) {}3132void Valve_Draw(void)33{34RSDK_THIS(Valve);3536RSDK.DrawSprite(&self->wheelAnimator, NULL, false);37RSDK.DrawSprite(&self->valveAnimator, NULL, false);38}3940void Valve_Create(void *data)41{42RSDK_THIS(Valve);4344self->drawFX = FX_FLIP;45if (!SceneInfo->inEditor) {46self->active = ACTIVE_BOUNDS;47self->visible = true;48self->drawGroup = Zone->objectDrawGroup[0] - 1;49self->updateRange.x = 0x800000;50self->updateRange.y = 0x800000;5152RSDK.SetSpriteAnimation(Valve->aniFrames, 1, &self->valveAnimator, true, 3);53RSDK.SetSpriteAnimation(Valve->aniFrames, 3, &self->wheelAnimator, true, 3);54}55}5657void Valve_StageLoad(void)58{59if (RSDK.CheckSceneFolder("OOZ1") || RSDK.CheckSceneFolder("OOZ2"))60Valve->aniFrames = RSDK.LoadSpriteAnimation("OOZ/Valve.bin", SCOPE_STAGE);6162Valve->hitbox.left = -16;63Valve->hitbox.top = -16;64Valve->hitbox.right = 16;65Valve->hitbox.bottom = 16;6667Valve->sfxClick = RSDK.GetSfx("Stage/Click.wav");68}6970#if GAME_INCLUDE_EDITOR71void Valve_EditorDraw(void)72{73RSDK_THIS(Valve);7475RSDK.SetSpriteAnimation(Valve->aniFrames, 1, &self->valveAnimator, false, 3);76RSDK.SetSpriteAnimation(Valve->aniFrames, 3, &self->wheelAnimator, false, 3);7778Valve_Draw();79}8081void Valve_EditorLoad(void)82{83Valve->aniFrames = RSDK.LoadSpriteAnimation("OOZ/Valve.bin", SCOPE_STAGE);8485RSDK_ACTIVE_VAR(Valve, direction);86RSDK_ENUM_VAR("No Flip", FLIP_NONE);87RSDK_ENUM_VAR("Flipped", FLIP_X);88}89#endif9091void Valve_Serialize(void) { RSDK_EDITABLE_VAR(Valve, VAR_UINT8, direction); }929394