Mario: add basic big mario logic
This commit is contained in:
@@ -3,18 +3,22 @@
|
||||
#include "mario_visitor.hpp"
|
||||
#include "mushroom_visitor.hpp"
|
||||
#include "goomba_visitor.hpp"
|
||||
#include "../mario.hpp"
|
||||
|
||||
std::shared_ptr<SDLPP::Visitor>
|
||||
getVisitor(const MarioBlock &block, SDLPP::Scene &scene, bool &death,
|
||||
getVisitor(const MarioBlock &block, SDLPP::Scene &scene,
|
||||
int &coin_count,
|
||||
std::vector<std::shared_ptr<MarioBlock>> &moving_objects) {
|
||||
std::shared_ptr<SDLPP::Visitor> result{};
|
||||
switch (block.getId()) {
|
||||
case MARIO_ID:
|
||||
result = std::static_pointer_cast<SDLPP::Visitor>(
|
||||
std::make_shared<MarioVisitor>(block.getMovement().getY() < 0,
|
||||
scene, death, coin_count,
|
||||
moving_objects));
|
||||
{
|
||||
auto &mario = dynamic_cast<const Mario &>(block);
|
||||
result = std::static_pointer_cast<SDLPP::Visitor>(
|
||||
std::make_shared<MarioVisitor>(block.getMovement().getY() < 0,
|
||||
scene, coin_count,
|
||||
moving_objects, mario.isBig(), mario.hasStar()));
|
||||
}
|
||||
break;
|
||||
case MUSHROOM_ID:
|
||||
result = std::static_pointer_cast<SDLPP::Visitor>(
|
||||
@@ -22,7 +26,7 @@ getVisitor(const MarioBlock &block, SDLPP::Scene &scene, bool &death,
|
||||
break;
|
||||
case GOOMBA_ID:
|
||||
result = std::static_pointer_cast<SDLPP::Visitor>(
|
||||
std::make_shared<GoombaVisitor>());
|
||||
std::make_shared<GoombaVisitor>(block.getPos()));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user