summaryrefslogtreecommitdiff
path: root/src/topman.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/topman.cpp')
-rw-r--r--src/topman.cpp28
1 files changed, 14 insertions, 14 deletions
diff --git a/src/topman.cpp b/src/topman.cpp
index ba784c7..66b4454 100644
--- a/src/topman.cpp
+++ b/src/topman.cpp
@@ -30,6 +30,8 @@ class daTopman : public dEn_c {
char isInSpace;
char fromBehind;
char isWaiting;
+ char backFire;
+ int directionStore;
static daTopman *build();
@@ -116,10 +118,10 @@ daTopman *daTopman::build() {
else if(hitType == 0) {
EN_LandbarrelPlayerCollision(this, apThis, apOther);
if (this->pos.x > apOther->owner->pos.x) {
- this->direction = 1;
+ this->backFire = 1;
}
else {
- this->direction = 0;
+ this->backFire = 0;
}
doStateChange(&StateID_KnockBack);
}
@@ -152,6 +154,7 @@ daTopman *daTopman::build() {
}
void daTopman::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) {
+ backFire = apOther->owner->direction ^ 1;
doStateChange(&StateID_KnockBack);
}
@@ -164,15 +167,17 @@ daTopman *daTopman::build() {
}
void daTopman::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther){
+ backFire = apOther->owner->direction ^ 1;
doStateChange(&StateID_KnockBack);
}
void daTopman::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther){
+ backFire = apOther->owner->direction ^ 1;
doStateChange(&StateID_KnockBack);
}
void daTopman::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) {
- direction = apOther->owner->direction ^ 1;
+ backFire = apOther->owner->direction ^ 1;
doStateChange(&StateID_KnockBack);
}
@@ -508,8 +513,9 @@ void daTopman::updateModelMatrices() {
void daTopman::beginState_KnockBack() {
bindAnimChr_and_setUpdateRate("begoman_damage", 1, 0.0, 0.75);
- this->max_speed.x = (this->direction) ? this->XSpeed*5.0 : -this->XSpeed*5.0;
- this->speed.x = (this->direction) ? 4.0f : -4.0f;
+ directionStore = direction;
+ speed.x = (backFire) ? XSpeed*5.0f : XSpeed*-5.0f;
+ max_speed.x = speed.x;
}
void daTopman::executeState_KnockBack() {
@@ -519,22 +525,16 @@ void daTopman::updateModelMatrices() {
bodyModel._vf1C();
if(this->chrAnimation.isAnimationDone()) {
if (this->isWaiting == 0) {
+ OSReport("Done being knocked back, going back to Walk state\n");
doStateChange(&StateID_Walk); }
else {
+ OSReport("Done being knocked back, going back to Wait state\n");
doStateChange(&StateID_Wait); }
}
}
void daTopman::endState_KnockBack() {
- if (this->rot.y == 0x2800) {
-
- this->direction = 0;
- }
- else {
-
- this->direction = 1;
- }
- // this->direction ^= 1;
+ direction = directionStore;
bindAnimChr_and_setUpdateRate("begoman_wait2", 1, 0.0, 1.0);
}