Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/BSS/BSS_HUD.c
338 views
1
// ---------------------------------------------------------------------
2
// RSDK Project: Sonic Mania
3
// Object Description: BSS_HUD Object
4
// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges
5
// Decompiled by: Rubberduckycooly & RMGRich
6
// ---------------------------------------------------------------------
7
8
#include "Game.h"
9
10
ObjectBSS_HUD *BSS_HUD;
11
12
void BSS_HUD_Update(void) {}
13
14
void BSS_HUD_LateUpdate(void) {}
15
16
void BSS_HUD_StaticUpdate(void) {}
17
18
void BSS_HUD_Draw(void)
19
{
20
RSDK_THIS(BSS_HUD);
21
22
Vector2 drawPos;
23
drawPos.x = TO_FIXED(ScreenInfo->center.x - 141);
24
drawPos.y = TO_FIXED(13);
25
RSDK.DrawSprite(&self->sphereAnimator, &drawPos, true);
26
27
drawPos.x += TO_FIXED(37);
28
drawPos.y = TO_FIXED(17);
29
BSS_HUD_DrawNumbers(BSS_Setup->sphereCount, &drawPos);
30
31
drawPos.x = TO_FIXED(ScreenInfo->center.x + 64);
32
drawPos.y = TO_FIXED(13);
33
RSDK.DrawSprite(&self->ringAnimator, &drawPos, true);
34
35
drawPos.x += TO_FIXED(56);
36
drawPos.y = TO_FIXED(17);
37
BSS_HUD_DrawNumbers(BSS_Setup->ringCount, &drawPos);
38
}
39
40
void BSS_HUD_Create(void *data)
41
{
42
RSDK_THIS(BSS_HUD);
43
44
if (!SceneInfo->inEditor) {
45
self->active = ACTIVE_NORMAL;
46
self->visible = true;
47
self->drawGroup = DRAWGROUP_COUNT - 1;
48
self->updateRange.x = TO_FIXED(128);
49
self->updateRange.y = TO_FIXED(128);
50
51
RSDK.SetSpriteAnimation(BSS_HUD->aniFrames, 0, &self->sphereAnimator, true, 0);
52
RSDK.SetSpriteAnimation(BSS_HUD->aniFrames, 0, &self->ringAnimator, true, 1);
53
RSDK.SetSpriteAnimation(BSS_HUD->aniFrames, 1, &self->numbersAnimator, true, 0);
54
}
55
}
56
57
void BSS_HUD_StageLoad(void)
58
{
59
BSS_HUD->aniFrames = RSDK.LoadSpriteAnimation("SpecialBS/HUD.bin", SCOPE_STAGE);
60
61
RSDK.ResetEntitySlot(SLOT_BSS_HUD, BSS_HUD->classID, NULL);
62
}
63
64
void BSS_HUD_DrawNumbers(int32 value, Vector2 *drawPos)
65
{
66
RSDK_THIS(BSS_HUD);
67
68
int32 mult = 1;
69
for (int32 i = 0; i < 3; ++i) {
70
self->numbersAnimator.frameID = value / mult % 10;
71
RSDK.DrawSprite(&self->numbersAnimator, drawPos, true);
72
drawPos->x -= TO_FIXED(16);
73
mult *= 10;
74
}
75
}
76
77
#if GAME_INCLUDE_EDITOR
78
void BSS_HUD_EditorDraw(void) {}
79
80
void BSS_HUD_EditorLoad(void) {}
81
#endif
82
83
void BSS_HUD_Serialize(void) {}
84
85