From 15af665eac26f9a29b864617d571ef539a6c42b0 Mon Sep 17 00:00:00 2001 From: Treeki Date: Sun, 2 Dec 2012 02:33:34 +0100 Subject: collisionMgr_c updated --- src/topman.cpp | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) (limited to 'src/topman.cpp') diff --git a/src/topman.cpp b/src/topman.cpp index 56493da..0c2865a 100644 --- a/src/topman.cpp +++ b/src/topman.cpp @@ -213,8 +213,8 @@ bool daTopman::calculateTileCollisions() { HandleYSpeed(); doSpriteMovement(); - cmgr_returnValue = collMgr.CollidedWithTile(); - collMgr.execute(); + cmgr_returnValue = collMgr.isOnTopOfTile(); + collMgr.calculateBelowCollisionWithSmokeEffect(); if (isBouncing) { stuffRelatingToCollisions(0.1875f, 1.0f, 0.5f); @@ -228,7 +228,7 @@ bool daTopman::calculateTileCollisions() { else direction = 1; - if (collMgr.CollidedWithTile()) { + if (collMgr.isOnTopOfTile()) { // Walking into a tile branch if (cmgr_returnValue == 0) @@ -252,23 +252,23 @@ bool daTopman::calculateTileCollisions() { // Bouncing checks if (_34A & 4) { Vec v = (Vec){0.0f, 1.0f, 0.0f}; - collMgr.parent_speed_ptr = &v; + collMgr.pSpeed = &v; - if (collMgr.SomethingSemiImportant(collMgr.bitfield_for_checks)) + if (collMgr.calculateAboveCollision(collMgr.outputMaybe)) speed.y = 0.0f; - collMgr.parent_speed_ptr = &speed; + collMgr.pSpeed = &speed; } else { - if (collMgr.SomethingSemiImportant(collMgr.bitfield_for_checks)) + if (collMgr.calculateAboveCollision(collMgr.outputMaybe)) speed.y = 0.0f; } - collMgr.s_8006FA40(0); + collMgr.calculateAdjacentCollision(0); // Switch Direction - if (collMgr.bitfield_for_checks & (0x15 << direction)) { - if (collMgr.CollidedWithTile()) { + if (collMgr.outputMaybe & (0x15 << direction)) { + if (collMgr.isOnTopOfTile()) { isBouncing = true; } return true; @@ -346,17 +346,16 @@ int daTopman::onCreate() { _320 = 0.0f; _324 = 16.0f; - // These structs tell stupid collider what to collide with - these are from koopa troopa - static const u8 one[16] = {0,0,0,1, 0,0,0xC0,0, 0,0,0x40,0, 0,0,0,0}; - static const u8 two[12] = {0,0,0,0, 0,0,0,0, 0,0,0xC0,0}; - static const u8 three[16] = {0,0,0,1, 0,0,0x60,0, 0,0,0x90,0, 0,0,0xE0,0}; + static const lineSensor_s below(12<<12, 4<<12, 0<<12); + static const pointSensor_s above(0<<12, 12<<12); + static const lineSensor_s adjacent(6<<12, 9<<12, 14<<12); - collMgr.Init(this, one, two, three); - collMgr.execute(); + collMgr.init(this, &below, &above, &adjacent); + collMgr.calculateBelowCollisionWithSmokeEffect(); - cmgr_returnValue = collMgr.CollidedWithTile(); + cmgr_returnValue = collMgr.isOnTopOfTile(); - if (collMgr.CollidedWithTile()) + if (collMgr.isOnTopOfTile()) isBouncing = false; else isBouncing = true; -- cgit v1.2.3