summaryrefslogtreecommitdiff
path: root/src/levelspecial.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/levelspecial.cpp')
-rw-r--r--src/levelspecial.cpp24
1 files changed, 21 insertions, 3 deletions
diff --git a/src/levelspecial.cpp b/src/levelspecial.cpp
index 3432002..962b87f 100644
--- a/src/levelspecial.cpp
+++ b/src/levelspecial.cpp
@@ -39,13 +39,18 @@ extern char SizerOn;
extern char ZOrderOn;
extern int GlobalStarsCollected;
+extern VEC2 BGScaleFront;
+extern VEC2 BGScaleBack;
+extern char BGScaleEnabled;
+
extern u32 GameTimer;
#define time *(u32*)((GameTimer) + 0x4)
-float GlobalSizeFloatModifications [] = {1, 0.25, 0.5, 0.75, 1.25, 1.5, 1.75, 2, 2.5, 3, 4, 5, 6, 7, 8, 10 };
-float GlobalRiderFloatModifications [] = {1, 0.6, 0.7, 0.9, 1, 1, 1, 1.1, 1.25, 1.5, 2, 2.5, 3, 3.5, 4, 5};
+static const float GlobalSizeFloatModifications [] = {1, 0.25, 0.5, 0.75, 1.25, 1.5, 1.75, 2, 2.5, 3, 4, 5, 6, 7, 8, 10 };
+static const float GlobalRiderFloatModifications [] = {1, 0.6, 0.7, 0.9, 1, 1, 1, 1.1, 1.25, 1.5, 2, 2.5, 3, 3.5, 4, 5};
+static const float BGScaleChoices[] = {0.1f, 0.15f, 0.25f, 0.375f, 0.5f, 0.625f, 0.75f, 0.9f, 1.0f, 1.125f, 1.25f, 1.5f, 1.75f, 2.0f, 2.25f, 2.5f};
bool NoMichaelBuble = false;
@@ -85,6 +90,7 @@ bool ResetAfterLevel(bool didItWork) {
NoMichaelBuble = false;
for (int i = 0; i < 4; i++)
Player_Flags[i] &= ~4;
+ BGScaleEnabled = 0;
return didItWork;
}
@@ -193,7 +199,15 @@ void LevelSpecial_Update(LevelSpecial *self) {
case 8:
NoMichaelBuble = true;
break;
-
+
+ case 9:
+ BGScaleEnabled = true;
+ BGScaleFront.x = BGScaleChoices[(self->settings >> 20) & 15];
+ BGScaleFront.y = BGScaleChoices[(self->settings >> 16) & 15];
+ BGScaleBack.x = BGScaleChoices[(self->settings >> 12) & 15];
+ BGScaleBack.y = BGScaleChoices[(self->settings >> 8) & 15];
+ break;
+
default:
break;
}
@@ -248,6 +262,10 @@ void LevelSpecial_Update(LevelSpecial *self) {
case 8:
NoMichaelBuble = false;
break;
+
+ case 9:
+ BGScaleEnabled = false;
+ break;
default:
break;