Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/TMZ/MonarchBG.c
338 views
1
// ---------------------------------------------------------------------
2
// RSDK Project: Sonic Mania
3
// Object Description: MonarchBG Object
4
// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges
5
// Decompiled by: Rubberduckycooly & RMGRich
6
// ---------------------------------------------------------------------
7
8
#include "Game.h"
9
10
ObjectMonarchBG *MonarchBG;
11
12
void MonarchBG_Update(void)
13
{
14
RSDK_THIS(MonarchBG);
15
16
StateMachine_Run(self->state);
17
}
18
19
void MonarchBG_LateUpdate(void) {}
20
21
void MonarchBG_StaticUpdate(void) {}
22
23
void MonarchBG_Draw(void)
24
{
25
RSDK_THIS(MonarchBG);
26
27
Vector2 drawPos;
28
drawPos.x = self->position.x - ((self->position.x - ((ScreenInfo->position.x + ScreenInfo->center.x) << 16)) >> 1);
29
drawPos.y = self->position.y - 208 * ((self->position.y - ((ScreenInfo->position.y + ScreenInfo->center.y) << 16)) >> 8);
30
31
self->direction = FLIP_NONE;
32
RSDK.DrawSprite(&self->animatorTop, &drawPos, false);
33
RSDK.DrawSprite(&self->animatorBottom, &drawPos, false);
34
35
self->direction = FLIP_X;
36
RSDK.DrawSprite(&self->animatorTop, &drawPos, false);
37
RSDK.DrawSprite(&self->animatorBottom, &drawPos, false);
38
}
39
40
void MonarchBG_Create(void *data)
41
{
42
RSDK_THIS(MonarchBG);
43
44
if (!SceneInfo->inEditor) {
45
self->visible = true;
46
self->drawFX = FX_FLIP;
47
self->drawGroup = 1;
48
self->scale.x = 0xE00;
49
self->active = ACTIVE_NORMAL;
50
self->updateRange.x = 0x800000;
51
self->updateRange.y = 0x800000;
52
self->position.x = 2048 << 16;
53
self->position.y = 3072 << 16;
54
55
RSDK.SetSpriteAnimation(MonarchBG->aniFrames, 0, &self->animatorTop, true, 0);
56
RSDK.SetSpriteAnimation(MonarchBG->aniFrames, 1, &self->animatorBottom, true, 0);
57
}
58
}
59
60
void MonarchBG_StageLoad(void)
61
{
62
MonarchBG->aniFrames = RSDK.LoadSpriteAnimation("TMZ1/MonarchBG.bin", SCOPE_STAGE);
63
64
// Code for loading the MonarchBG mesh???
65
// Does this mean the mesh was intended to be in the BG instead of the sprite at one point?
66
MonarchBG->meshIndex = RSDK.LoadMesh("TMZ/MonarchBG.bin", SCOPE_STAGE);
67
MonarchBG->sceneIndex = RSDK.Create3DScene("View:Monarch", 0x2000, SCOPE_STAGE);
68
69
RSDK.SetDiffuseColor(MonarchBG->sceneIndex, 0x40, 0x00, 0x40);
70
RSDK.SetDiffuseIntensity(MonarchBG->sceneIndex, 8, 8, 8);
71
RSDK.SetSpecularIntensity(MonarchBG->sceneIndex, 16, 16, 16);
72
}
73
74
#if GAME_INCLUDE_EDITOR
75
void MonarchBG_EditorDraw(void)
76
{
77
RSDK_THIS(MonarchBG);
78
79
self->position.x = 0x8000000;
80
self->position.y = 0xC000000;
81
self->drawFX = FX_FLIP;
82
83
RSDK.SetSpriteAnimation(MonarchBG->aniFrames, 0, &self->animatorTop, true, 0);
84
RSDK.SetSpriteAnimation(MonarchBG->aniFrames, 1, &self->animatorBottom, true, 0);
85
86
self->direction = FLIP_NONE;
87
RSDK.DrawSprite(&self->animatorTop, NULL, false);
88
RSDK.DrawSprite(&self->animatorBottom, NULL, false);
89
90
self->direction = FLIP_X;
91
RSDK.DrawSprite(&self->animatorTop, NULL, false);
92
RSDK.DrawSprite(&self->animatorBottom, NULL, false);
93
}
94
95
void MonarchBG_EditorLoad(void) { MonarchBG->aniFrames = RSDK.LoadSpriteAnimation("TMZ1/MonarchBG.bin", SCOPE_STAGE); }
96
#endif
97
98
void MonarchBG_Serialize(void) {}
99
100