Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
MorsGames
GitHub Repository: MorsGames/sm64plus
Path: blob/master/src/game/behaviors/bowser_key_cutscene.inc.c
7861 views
1
// bowser_key_cutscene.inc.c
2
3
Gfx *geo_scale_bowser_key(s32 run, struct GraphNode *node, UNUSED f32 mtx[4][4]) {
4
struct Object *sp4;
5
if (run == TRUE) {
6
sp4 = (struct Object *) gCurGraphNodeObject;
7
((struct GraphNodeScale *) node->next)->scale = sp4->oBowserKeyScale;
8
}
9
return 0;
10
}
11
12
void bhv_bowser_key_unlock_door_loop(void) {
13
s32 animTimer;
14
animTimer = o->header.gfx.animInfo.animFrame;
15
cur_obj_init_animation_with_sound(0);
16
if (animTimer < 38)
17
o->oBowserKeyScale = 0.0f;
18
else if (animTimer < 49)
19
o->oBowserKeyScale = 0.2f;
20
else if (animTimer < 58)
21
o->oBowserKeyScale = (animTimer - 53) * 0.11875f + 0.2; // 0.11875?
22
else if (animTimer < 59)
23
o->oBowserKeyScale = 1.1f;
24
else if (animTimer < 60)
25
o->oBowserKeyScale = 1.05f;
26
else
27
o->oBowserKeyScale = 1.0f;
28
if (o->oTimer > 150)
29
obj_mark_for_deletion(o);
30
}
31
32
void bhv_bowser_key_course_exit_loop(void) {
33
s32 animTimer = o->header.gfx.animInfo.animFrame;
34
cur_obj_init_animation_with_sound(1);
35
if (animTimer < 38)
36
o->oBowserKeyScale = 0.2f;
37
else if (animTimer < 52)
38
o->oBowserKeyScale = (animTimer - 42) * 0.042857f + 0.2; // TODO 3/70?
39
else if (animTimer < 94)
40
o->oBowserKeyScale = 0.8f;
41
else if (animTimer < 101)
42
o->oBowserKeyScale = (101 - animTimer) * 0.085714f + 0.2; // TODO 6/70?
43
else
44
o->oBowserKeyScale = 0.2f;
45
if (o->oTimer > 138)
46
obj_mark_for_deletion(o);
47
}
48
49