diff options
-rw-r--r-- | src/shyguy.cpp | 57 |
1 files changed, 20 insertions, 37 deletions
diff --git a/src/shyguy.cpp b/src/shyguy.cpp index 2ebb3bb..0cd0608 100644 --- a/src/shyguy.cpp +++ b/src/shyguy.cpp @@ -89,7 +89,6 @@ class daShyGuy : public dEn_c { void bindAnimChr_and_setUpdateRate(const char* name, int unk, float unk2, float rate); void updateModelMatrices(); bool calculateTileCollisions(); - bool willWalkOntoSuitableGround(); // void spriteCollision(ActivePhysics *apThis, ActivePhysics *apOther); void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther); @@ -471,7 +470,7 @@ int daShyGuy::onCreate() { this->type = this->settings >> 28 & 0xF; int baln = this->settings >> 24 & 0xF; - this->distance = this->settings >> 12 & 0xF; + // this->distance = this->settings >> 12 & 0xF; allocator.link(-1, GameHeaps[0], 0, 0x20); @@ -558,6 +557,7 @@ int daShyGuy::onCreate() { // Shy Guy Colours if (type == 1 || type == 8 || type == 10) { this->resFile.data = getResource("shyguy", "g3d/ShyGuyBlue.brres"); + distance = 1; } else if (type == 5) { this->resFile.data = getResource("shyguy", "g3d/ShyGuyGreen.brres"); @@ -586,7 +586,7 @@ int daShyGuy::onCreate() { this->scale = (Vec){20.0, 20.0, 20.0}; - this->pos.y += 32.0; + this->pos.y += 36.0; this->rot.x = 0; // X is vertical axis this->rot.y = 0xD800; // Y is horizontal axis this->rot.z = 0; // Z is ... an axis >.> @@ -594,7 +594,7 @@ int daShyGuy::onCreate() { this->speed.x = 0.0; this->speed.y = 0.0; - this->max_speed.x = 0.8; + this->max_speed.x = 0.6; this->x_speed_inc = 0.2; this->Baseline = this->pos.y; this->XSpeed = 0.6; @@ -634,7 +634,7 @@ int daShyGuy::onCreate() { _324 = 16.0f; // These structs tell stupid collider what to collide with - these are from koopa troopa - static const lineSensor_s below(-12<<12, 12<<12, 0<<12); + static const lineSensor_s below(-0<<12, 0<<12, 0<<12); static const pointSensor_s above(0<<12, 12<<12); static const lineSensor_s adjacent(6<<12, 9<<12, 6<<12); @@ -657,7 +657,7 @@ int daShyGuy::onCreate() { } else if (type == 1) { bindAnimChr_and_setUpdateRate("c18_EV_WIN_2_R", 1, 0.0, 1.5); - doStateChange(&StateID_Walk); + doStateChange(&StateID_RealWalk); } else if (type == 2) { doStateChange(&StateID_Sleep); @@ -1200,29 +1200,6 @@ void daShyGuy::updateModelMatrices() { /////////////// // Real Walk State /////////////// -bool daShyGuy::willWalkOntoSuitableGround() { - static const float deltas[] = {2.5f, -2.5f}; - VEC3 checkWhere = { - pos.x + deltas[direction], - 2.0f + pos.y, - pos.z}; - - u32 props = collMgr.getTileBehaviour2At(checkWhere.x, checkWhere.y, currentLayerID); - - //if (getSubType(props) == B_SUB_LEDGE) - if (((props >> 16) & 0xFF) == 8) - return false; - - float someFloat = 0.0f; - if (collMgr.sub_800757B0(&checkWhere, &someFloat, currentLayerID, 1, -1)) { - if (someFloat < checkWhere.y && someFloat > (pos.y - 2.0f)) - return true; - } - - return false; -} - - void daShyGuy::beginState_RealWalk() { //inline this piece of code this->max_speed.x = (this->direction) ? -this->XSpeed : this->XSpeed; @@ -1235,12 +1212,13 @@ bool daShyGuy::willWalkOntoSuitableGround() { void daShyGuy::executeState_RealWalk() { chrAnimation.setUpdateRate(1.5f); - bool turne = this->willWalkOntoSuitableGround(); - // bool turne = collMgr.isOnTopOfTile(); - if (!turne) { - // pos.x = direction ? pos.x + 1.5 : pos.x - 1.5; - doStateChange(&StateID_RealTurn); - } + // if (distance) { + bool turn = collMgr.isOnTopOfTile(); + if (!turn) { + pos.x = direction ? pos.x + 1.5 : pos.x - 1.5; + doStateChange(&StateID_RealTurn); + } + // } bool ret = calculateTileCollisions(); if (ret) { @@ -1452,8 +1430,13 @@ bool daShyGuy::willWalkOntoSuitableGround() { calculateTileCollisions(); if(this->chrAnimation.isAnimationDone()) { - bindAnimChr_and_setUpdateRate("c18_EV_WIN_2_R", 1, 0.0, 1.5); - doStateChange(&StateID_RealWalk); + if (type == 3) { + doStateChange(&StateID_Jump); + } + else { + bindAnimChr_and_setUpdateRate("c18_EV_WIN_2_R", 1, 0.0, 1.5); + doStateChange(&StateID_RealWalk); + } } } void daShyGuy::endState_Recover() { |