Mario: Fireball works

This commit is contained in:
2022-11-12 21:32:18 +01:00
parent 3cde73d1ed
commit 7bd652f4e9
19 changed files with 300 additions and 16 deletions
+24 -1
View File
@@ -72,6 +72,9 @@ void handleKeyDown(SDL_Keycode key, SDLPP::Scene &scene) {
if (fps) {
fps->setHidden(!fps->getHidden());
}
case SDLK_RETURN:
mario->fire();
break;
default:
break;
}
@@ -261,6 +264,24 @@ void mainGameAdditional(std::shared_ptr<SDLPP::Scene> & /*UNUSED*/) {
}
}
void addObjectToScene(std::shared_ptr<MarioBlock> &object, bool moving) {
game_scenes.back().scene->addObject(object);
object->setAlignment(SDLPP::OBJ_CENTER, SDLPP::OBJ_CENTER);
if(moving) {
moving_objects.push_back(object);
}
}
void addObjectToSceneTop(std::shared_ptr<MarioBlock> &object, bool moving) {
addObjectToScene(object, moving);
game_scenes.back().scene->moveZTop(object);
}
void addObjectToSceneBack(std::shared_ptr<MarioBlock> &object, bool moving) {
addObjectToScene(object, moving);
game_scenes.back().scene->moveZJustAboveBackground(object);
}
SceneStruct mainGameScene(const std::string &level_path) {
auto scene = std::make_shared<SDLPP::Scene>(renderer);
g_playground = scene;
@@ -272,7 +293,7 @@ SceneStruct mainGameScene(const std::string &level_path) {
scene->addObject(bg);
mario.reset();
mario = std::make_shared<Mario>(renderer);
mario = std::make_shared<Mario>(renderer, addObjectToSceneTop);
scene->addObject(mario);
auto defeat =
@@ -390,6 +411,8 @@ int main() {
renderer, "sprites/terrain.png", MARIO_OVERWORLD_COLORKEY);
g_enemies_texture = std::make_shared<SDLPP::Texture>(
renderer, "sprites/enemies.png", MARIO_OVERWORLD_COLORKEY);
g_items_texture = std::make_shared<SDLPP::Texture>(
renderer, "sprites/items.png", MARIO_OVERWORLD_COLORKEY);
g_mario_texture = std::make_shared<SDLPP::Texture>(
renderer, "sprites/mario.png", MARIO_OVERWORLD_COLORKEY);