Col_Valid_Type cBaseBox::Validate_Collision(cSprite* obj) { switch (obj->m_type) { case TYPE_MUSHROOM_LIVE_1: case TYPE_MUSHROOM_DEFAULT: case TYPE_MUSHROOM_POISON: case TYPE_MUSHROOM_BLUE: case TYPE_MUSHROOM_GHOST: case TYPE_FGOLDPIECE: { return COL_VTYPE_BLOCKING; } default: { break; } } if (obj->m_massive_type == MASS_MASSIVE) { return COL_VTYPE_BLOCKING; } else if (obj->m_massive_type == MASS_HALFMASSIVE) { if (m_vely >= 0.0f && Is_On_Top(obj)) { return COL_VTYPE_BLOCKING; } } return COL_VTYPE_NOT_VALID; }
Col_Valid_Type cBall :: Validate_Collision( cSprite *obj ) { // basic validation checking Col_Valid_Type basic_valid = Validate_Collision_Ghost( obj ); // found valid collision if( basic_valid != COL_VTYPE_NOT_POSSIBLE ) { return basic_valid; } switch( obj->m_type ) { case TYPE_PLAYER: { if( m_origin_type != TYPE_PLAYER ) { return COL_VTYPE_INTERNAL; } return COL_VTYPE_NOT_VALID; } case TYPE_BALL: { return COL_VTYPE_NOT_VALID; } default: { break; } } if( obj->m_massive_type == MASS_MASSIVE ) { if( obj->m_sprite_array == ARRAY_ENEMY && m_origin_array == ARRAY_ENEMY ) { return COL_VTYPE_NOT_VALID; } return COL_VTYPE_BLOCKING; } else if( obj->m_massive_type == MASS_HALFMASSIVE ) { // if moving downwards and the object is on bottom if( m_vely >= 0.0f && Is_On_Top( obj ) ) { return COL_VTYPE_BLOCKING; } } return COL_VTYPE_NOT_VALID; }
Col_Valid_Type cMovingSprite :: Validate_Collision( cSprite *obj ) { if( obj->m_massive_type == MASS_MASSIVE ) { return COL_VTYPE_BLOCKING; } else if( obj->m_massive_type == MASS_HALFMASSIVE ) { // if moving downwards and the object is on bottom if( m_vely >= 0.0f && Is_On_Top( obj ) ) { return COL_VTYPE_BLOCKING; } } return COL_VTYPE_NOT_VALID; }
Col_Valid_Type cPowerUp::Validate_Collision(cSprite* obj) { Col_Valid_Type basic_valid = Validate_Collision_Ghost(obj); if (basic_valid != COL_VTYPE_NOT_POSSIBLE) { return basic_valid; } switch (obj->m_type) { case TYPE_PLAYER: { return COL_VTYPE_INTERNAL; } case TYPE_BALL: { return COL_VTYPE_NOT_VALID; } default: { break; } } if (obj->m_massive_type == MASS_MASSIVE) { if (obj->m_sprite_array == ARRAY_ENEMY) { return COL_VTYPE_NOT_VALID; } return COL_VTYPE_BLOCKING; } if (obj->m_massive_type == MASS_HALFMASSIVE) { if (m_vely >= 0.0f && Is_On_Top(obj)) { return COL_VTYPE_BLOCKING; } } return COL_VTYPE_NOT_VALID; }
Col_Valid_Type cSpikeball :: Validate_Collision( cSprite *obj ) { // basic validation checking Col_Valid_Type basic_valid = Validate_Collision_Ghost( obj ); // found valid collision if( basic_valid != COL_VTYPE_NOT_POSSIBLE ) { return basic_valid; } if( obj->m_massive_type == MASS_MASSIVE ) { switch( obj->m_type ) { case TYPE_FLYON: { return COL_VTYPE_NOT_VALID; } case TYPE_ROKKO: { return COL_VTYPE_NOT_VALID; } case TYPE_GEE: { return COL_VTYPE_NOT_VALID; } case TYPE_SPIKA: { return COL_VTYPE_NOT_VALID; } case TYPE_STATIC_ENEMY: { return COL_VTYPE_NOT_VALID; } case TYPE_TURTLE_BOSS: { return COL_VTYPE_NOT_VALID; } case TYPE_FURBALL_BOSS: { return COL_VTYPE_NOT_VALID; } default: { break; } } return COL_VTYPE_BLOCKING; } else if( obj->m_massive_type == MASS_HALFMASSIVE ) { // if moving downwards and the object is on bottom if( m_vely >= 0.0f && Is_On_Top( obj ) ) { return COL_VTYPE_BLOCKING; } } else if( obj->m_massive_type == MASS_PASSIVE ) { switch( obj->m_type ) { case TYPE_ENEMY_STOPPER: { return COL_VTYPE_BLOCKING; } default: { break; } } } return COL_VTYPE_NOT_VALID; }