Mario: added destructible modifier to editor

This commit is contained in:
2021-05-26 00:46:19 +02:00
parent 6fe283bb34
commit c2fb78b0a6
12 changed files with 100 additions and 33 deletions
+14 -5
View File
@@ -11,12 +11,13 @@ Mario::Mario(const std::shared_ptr< SDLPP::Renderer > &renderer) : SDLPP::Rectan
pauseAnimation();
setMovement( 0, 0 );
setMovementSpeed( 1 );
auto bottom_detect = SDLPP::RectColider( 0.3, 1, 0.4, 0, MARIO_FLOOR_DETECT );
bottom_detect.setMinHeight(1);
addCollision(bottom_detect);
addCollision(
SDLPP::RectColider( 0.21, 0.85, 0.65, 0.25, MARIO_FLOOR_DETECT ) );
SDLPP::RectColider( 0.05, 0.1, 0.1, 0.89, MARIO_LEFT_SIDE_DETECT ) );
addCollision(
SDLPP::RectColider( 0.05, 0.1, 0.1, 0.8, MARIO_LEFT_SIDE_DETECT ) );
addCollision(
SDLPP::RectColider( 0.85, 0.1, 0.1, 0.8, MARIO_RIGHT_SIDE_DETECT ) );
SDLPP::RectColider( 0.85, 0.1, 0.1, 0.89, MARIO_RIGHT_SIDE_DETECT ) );
addCollision(
SDLPP::RectColider( 0.05, 0, 0.1, 0.1, MARIO_TOP_LEFT_DETECT ) );
addCollision(
@@ -76,8 +77,16 @@ void Mario::handleVisitor(MarioVisitor &visitor, SDLPP::Vec2D<double> previous_p
}
// make sure Mario isn't stuck inside a wall
// TODO more readable function names
if ( visitor.isStopped() || !visitor.canGoLeft() || !visitor.canGoRight() ) {
if ( visitor.isStopped() ) {
if(visitor.getStopX() > previous_position.getX())
previous_position = {visitor.getStopX(), previous_position.getY()};
setPos( previous_position.getX(), getPos().getY() );
} else if ( visitor.canGoLeft() != visitor.canGoRight() ) {
SDLPP::Vec2D<double> next_pos = { visitor.getMovementBlockage().getX() + (visitor.canGoLeft() * -1 + visitor.canGoRight() * 1) * BLOCK_SIZE, getPos().getY() };
if((visitor.canGoLeft() && next_pos.getX() > previous_position.getX()) || (visitor.canGoRight() && next_pos.getX() < previous_position.getX())) {
next_pos = previous_position;
}
setPos(next_pos);
} else if (visitor.moveTop() && (jumping && !stop_jump)) {
auto objPos = visitor.getRightLeftPos();
if(objPos.getX() < getPos().getX()) {