Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-1-2-2013-Decompilation
Path: blob/main/RSDKv4/NativeObjects/ModsButton.cpp
817 views
1
#include "RetroEngine.hpp"
2
3
#if RETRO_USE_MOD_LOADER
4
void ModsButton_Create(void *objPtr)
5
{
6
RSDK_THIS(ModsButton);
7
self->textureCircle = LoadTexture("Data/Game/Menu/Circle.png", TEXFMT_RGBA4444);
8
9
int texture = LoadTexture("Data/Game/Menu/Intro.png", TEXFMT_RGBA4444);
10
self->meshMods = LoadMesh("Data/Game/Models/Options.bin", texture);
11
self->x = 0.0;
12
self->y = 16.0;
13
self->z = 160.0;
14
self->r = 0xFF;
15
self->g = 0xFF;
16
self->b = 0x00;
17
self->labelPtr = CREATE_ENTITY(TextLabel);
18
self->labelPtr->fontID = FONT_HEADING;
19
self->labelPtr->scale = 0.15;
20
self->labelPtr->alpha = 0;
21
self->labelPtr->state = TEXTLABEL_STATE_IDLE;
22
SetStringToFont8(self->labelPtr->text, "MODS", FONT_HEADING);
23
self->labelPtr->alignPtr(self->labelPtr, ALIGN_CENTER);
24
}
25
26
void ModsButton_Main(void *objPtr)
27
{
28
RSDK_THIS(ModsButton);
29
30
if (self->visible) {
31
if (self->scale < 0.2) {
32
self->scale += ((0.25 - self->scale) / ((60.0 * Engine.deltaTime) * 16.0));
33
if (self->scale > 0.2)
34
self->scale = 0.2;
35
}
36
SetRenderBlendMode(RENDER_BLEND_ALPHA);
37
SetRenderVertexColor(self->r, self->g, self->b);
38
RenderImage(self->x, self->y, self->z, self->scale, self->scale, 256.0, 256.0, 512.0, 512.0, 0.0, 0.0, 255, self->textureCircle);
39
SetRenderVertexColor(0xFF, 0xFF, 0xFF);
40
SetRenderBlendMode(RENDER_BLEND_NONE);
41
42
self->angle -= Engine.deltaTime;
43
if (self->angle < -M_PI_2)
44
self->angle += M_PI_2;
45
46
NewRenderState();
47
MatrixRotateXYZF(&self->renderMatrix, 0.0, 0.0, self->angle);
48
MatrixTranslateXYZF(&self->matrixTemp, self->x, self->y, self->z - 8.0);
49
MatrixMultiplyF(&self->renderMatrix, &self->matrixTemp);
50
SetRenderMatrix(&self->renderMatrix);
51
RenderMesh(self->meshMods, MESH_NORMALS, true);
52
SetRenderMatrix(NULL);
53
54
NativeEntity_TextLabel *label = self->labelPtr;
55
label->x = self->x;
56
label->y = self->y - 72.0;
57
label->z = self->z;
58
if (label->x <= -8.0 || label->x >= 8.0) {
59
if (label->alpha > 0)
60
label->alpha -= 8;
61
}
62
else if (label->alpha < 0x100)
63
label->alpha += 8;
64
}
65
}
66
#endif
67