summaryrefslogtreecommitdiff
path: root/src/bossRamboo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bossRamboo.cpp')
-rw-r--r--src/bossRamboo.cpp140
1 files changed, 101 insertions, 39 deletions
diff --git a/src/bossRamboo.cpp b/src/bossRamboo.cpp
index 15304c5..6bc7e51 100644
--- a/src/bossRamboo.cpp
+++ b/src/bossRamboo.cpp
@@ -14,18 +14,19 @@ class daRamboo_c : public dEn_c {
mHeapAllocator_c allocator;
m3d::mdl_c bodyModel;
+ m3d::mdl_c hideModel;
m3d::mdl_c fogModel;
nw4r::g3d::ResFile resFile;
- m3d::anmChr_c animationChrA;
- m3d::anmChr_c animationChrB;
- m3d::anmChr_c animationChrC;
- m3d::anmChr_c animationChrD;
-
+ m3d::anmChr_c anmFog;
+ m3d::anmChr_c anmWaitA;
+ m3d::anmChr_c anmShayA;
+ m3d::anmChr_c anmWaitB;
+ m3d::anmChr_c anmShayB;
int timer;
int ytimer;
- char BigBossRamboo;
+ char Hiding;
float Baseline;
float dying;
@@ -123,25 +124,33 @@ void daRamboo_c::setupModels() {
bool ret;
nw4r::g3d::ResMdl mdl = this->resFile.GetResMdl("fog");
- fogModel.setup(mdl, &allocator, 0x224, 1, 0);
- SetupTextures_Enemy(&fogModel, 0);
+ this->fogModel.setup(mdl, &allocator, 0x224, 1, 0);
+ SetupTextures_Enemy(&this->fogModel, 0);
nw4r::g3d::ResAnmChr anmChr = this->resFile.GetResAnmChr("fog");
- ret = this->animationChrA.setup(mdl, anmChr, &this->allocator, 0);
+ ret = this->anmFog.setup(mdl, anmChr, &this->allocator, 0);
nw4r::g3d::ResMdl mdlB = this->resFile.GetResMdl("teresaA");
- bodyModel.setup(mdlB, &allocator, 0x224, 1, 0);
- SetupTextures_Enemy(&bodyModel, 0);
-
- nw4r::g3d::ResAnmChr anmChrB = this->resFile.GetResAnmChr("move_cartain");
- ret = this->animationChrB.setup(mdlB, anmChrB, &this->allocator, 0);
+ this->bodyModel.setup(mdlB, &allocator, 0x224, 1, 0);
+ SetupTextures_Enemy(&this->bodyModel, 0);
nw4r::g3d::ResAnmChr anmChrC = this->resFile.GetResAnmChr("shay_teresaA");
- ret = this->animationChrC.setup(mdlB, anmChrC, &this->allocator, 0);
+ ret = this->anmShayA.setup(mdlB, anmChrC, &this->allocator, 0);
nw4r::g3d::ResAnmChr anmChrD = this->resFile.GetResAnmChr("wait");
- ret = this->animationChrD.setup(mdlB, anmChrD, &this->allocator, 0);
+ ret = this->anmWaitA.setup(mdlB, anmChrD, &this->allocator, 0);
+
+
+ nw4r::g3d::ResMdl mdlC = this->resFile.GetResMdl("teresaB");
+ this->hideModel.setup(mdlC, &allocator, 0x224, 1, 0);
+ SetupTextures_Enemy(&this->bodyModel, 0);
+
+ nw4r::g3d::ResAnmChr anmChrE = this->resFile.GetResAnmChr("shay_teresaB");
+ ret = this->anmShayB.setup(mdlC, anmChrE, &this->allocator, 0);
+
+ nw4r::g3d::ResAnmChr anmChrF = this->resFile.GetResAnmChr("shay_teresaB_wait");
+ ret = this->anmWaitB.setup(mdlC, anmChrF, &this->allocator, 0);
allocator.unlink();
}
@@ -185,6 +194,7 @@ int daRamboo_c::onCreate() {
this->rot.y = 0xE000; // Y is horizontal axis
this->rot.z = 0; // Z is ... an axis >.>
this->direction = 0; // Heading left.
+ this->Hiding = 0;
this->speed.x = 0.0;
this->ytimer = 0;
@@ -194,7 +204,10 @@ int daRamboo_c::onCreate() {
this->eventFlag = (u64)1 << (eventNum - 1);
- bindAnimChr_and_setUpdateRates("fog", this->animationChrA, this->fogModel, 1.0);
+ nw4r::g3d::ResAnmChr anmChr = this->resFile.GetResAnmChr("fog");
+ this->anmFog.bind(&this->fogModel, anmChr, 1);
+ this->fogModel.bindAnim(&this->anmFog, 0.0);
+ this->anmFog.setUpdateRate(1.0);
OSReport("Setting the State");
doStateChange(&StateID_Grow);
@@ -212,8 +225,10 @@ int daRamboo_c::onExecute() {
acState.execute();
updateModelMatrices();
- if(this->animationChrA.isAnimationDone())
- this->animationChrA.setCurrentFrame(0.0);
+ this->fogModel._vf1C();
+
+ if(this->anmFog.isAnimationDone())
+ this->anmFog.setCurrentFrame(0.0);
if (this->aPhysics.result1 == 1) {
char PlayerID = NearestPlayer(this);
@@ -231,7 +246,11 @@ int daRamboo_c::onExecute() {
int daRamboo_c::onDraw() {
fogModel.scheduleForDrawing();
- bodyModel.scheduleForDrawing();
+
+ if (this->Hiding == 0) {
+ bodyModel.scheduleForDrawing(); }
+ else {
+ hideModel.scheduleForDrawing(); }
return true;
}
@@ -247,9 +266,14 @@ void daRamboo_c::updateModelMatrices() {
matrix.translation(pos.x + 160.0, pos.y - 80.0, pos.z + 200.0);
matrix.applyRotationYXZ(&rot.x, &rot.y, &rot.z);
- bodyModel.setDrawMatrix(matrix);
- bodyModel.setScale(&scale);
- bodyModel.calcWorld(false);
+ if (this->Hiding == 0) {
+ bodyModel.setDrawMatrix(matrix);
+ bodyModel.setScale(&scale);
+ bodyModel.calcWorld(false); }
+ else {
+ hideModel.setDrawMatrix(matrix);
+ hideModel.setScale(&scale);
+ hideModel.calcWorld(false); }
}
@@ -259,21 +283,17 @@ void daRamboo_c::beginState_Grow() {
OSReport("Growing when Kameck Tells me to.");
this->timer = 0;
// PlaySound(this, SE_BOSS_ROY_MAGIC_MAKE_FAST);
- bindAnimChr_and_setUpdateRates("wait", this->animationChrD, this->bodyModel, 1.0);
}
void daRamboo_c::executeState_Grow() {
- if(this->animationChrD.isAnimationDone())
- this->animationChrD.setCurrentFrame(0.0);
-
this->timer = this->timer + 1;
float scaleSpeed, yPosScaling;
+ if (this->timer == 60) { PlaySound(this, SE_BOSS_IGGY_WANWAN_TO_L); }
if ((this->timer > 60) && (this->timer < 140)) {
- PlaySound(this, SE_BOSS_IGGY_WANWAN_L_TO_M);
scaleSpeed = 0.175;
// yPosScaling = 0;
@@ -311,13 +331,11 @@ void daRamboo_c::beginState_Advance() {
this->speed.z = 0;
this->timer = 0;
- bindAnimChr_and_setUpdateRates("move_cartain", this->animationChrB, this->bodyModel, 1.0);
}
void daRamboo_c::executeState_Advance() {
- if(this->animationChrB.isAnimationDone())
- this->animationChrB.setCurrentFrame(0.0);
+ this->bodyModel._vf1C();
this->pos.x -= this->timer / 32;
this->pos.y = this->Baseline + sin(this->ytimer * 3.14 / 192) * 48;
@@ -349,16 +367,36 @@ void daRamboo_c::beginState_Wait() {
}
void daRamboo_c::executeState_Wait() {
+
+ if (this->timer == 55) {
+ nw4r::g3d::ResAnmChr anmChrB = this->resFile.GetResAnmChr("shay_teresaB");
+ this->anmShayB.bind(&this->hideModel, anmChrB, 1);
+ this->hideModel.bindAnim(&this->anmShayB, 0.0);
+ this->anmShayB.setUpdateRate(1.0);
+ }
+
if (this->timer > 60) {
PlaySound(this, SE_EMY_CS_TERESA_BEAT_YOU);
doStateChange(&StateID_Advance);
}
+
+
+ this->hideModel._vf1C();
this->timer += 1;
}
-void daRamboo_c::endState_Wait() { OSReport("No more bouncing."); }
+void daRamboo_c::endState_Wait() {
+
+ this->Hiding = 0;
+
+ nw4r::g3d::ResAnmChr anmChr = this->resFile.GetResAnmChr("shay_teresaA");
+ this->anmShayA.bind(&this->bodyModel, anmChr, 1);
+ this->bodyModel.bindAnim(&this->anmShayA, 0.0);
+ this->anmShayA.setUpdateRate(1.0);
+
+ OSReport("No more bouncing."); }
@@ -368,31 +406,55 @@ void daRamboo_c::endState_Wait() { OSReport("No more bouncing."); }
void daRamboo_c::beginState_Flee() {
- bindAnimChr_and_setUpdateRates("shay_teresaA", this->animationChrC, this->bodyModel, 1.0);
+// bindAnimChr_and_setUpdateRates("shay_teresaA", this->animationChrC, this->bodyModel, 1.0);
+
+ nw4r::g3d::ResAnmChr anmChr = this->resFile.GetResAnmChr("wait");
+ this->anmWaitA.bind(&this->bodyModel, anmChr, 1);
+ this->bodyModel.bindAnim(&this->anmWaitA, 0.0);
+ this->anmWaitA.setUpdateRate(1.0);
OSReport("Damnit that hurt.");
this->timer = 0;
+
}
void daRamboo_c::executeState_Flee() {
-
- if(this->animationChrC.isAnimationDone())
- this->animationChrC.setCurrentFrame(0.0);
-
+
+ if (timer == 10) {
+ this->Hiding = 1;
+
+ nw4r::g3d::ResAnmChr anmChr = this->resFile.GetResAnmChr("shay_teresaB_wait");
+ this->anmWaitB.bind(&this->hideModel, anmChr, 1);
+ this->hideModel.bindAnim(&this->anmWaitB, 0.0);
+ this->anmWaitB.setUpdateRate(1.0);
+ }
+
this->pos.x += (60 - this->timer) / 8;
- if (this->timer > 60) { doStateChange(&StateID_Wait); }
+ if (timer < 10) {
+ this->bodyModel._vf1C(); }
+ else {
+ this->hideModel._vf1C(); }
+
+
+ if (this->timer > 60) {
+ doStateChange(&StateID_Wait);
+ }
this->timer += 1;
}
-void daRamboo_c::endState_Flee() { OSReport("Ugh, so dizzy."); }
+void daRamboo_c::endState_Flee() {
+
+ OSReport("Ugh, so dizzy.");
+}
void daRamboo_c::beginState_Outro() {
+ this->removeMyActivePhysics();
this->timer = 0;
this->rot.x = 0x0; // X is vertical axis
this->rot.y = 0xE000; // Y is horizontal axis