From 9fcac8618afa3f7dc0568052bb3858256b5b2d2d Mon Sep 17 00:00:00 2001 From: harveynw Date: Sun, 11 Feb 2024 10:08:51 +0000 Subject: [PATCH 1/5] StoneBlock actor created --- assets/stone.png | Bin 0 -> 14635 bytes common/BomberBlokeScene.cpp | 5 +++-- common/StoneBlock.hpp | 34 ++++++++++++++++++++++++++++++++++ common/bomberbloke.h | 3 ++- common/bomberbloke_actors.hpp | 1 + common/woodenCrate.hpp | 6 +++--- 6 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 assets/stone.png create mode 100644 common/StoneBlock.hpp diff --git a/assets/stone.png b/assets/stone.png new file mode 100644 index 0000000000000000000000000000000000000000..81e1341ba28aad3f19f2baabab305e03606786f3 GIT binary patch literal 14635 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

Kq~LG32?pc$T<9W{;Dkhy><9 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 #include #include @@ -220,7 +221,7 @@ BomberBlokeScene::BomberBlokeScene(unsigned int size_x, unsigned int size_y) for (int j = 0; j < 10; j++) { if (blocks[i][j] == EMPTY) { blocks[i][j] = ACTOR_WOODEN_CRATE; - addActor(std::shared_ptr(new woodenCrate(i, j))); + addActor(std::shared_ptr(new WoodenCrate(i, j))); } } } diff --git a/common/StoneBlock.hpp b/common/StoneBlock.hpp new file mode 100644 index 0000000..6194703 --- /dev/null +++ b/common/StoneBlock.hpp @@ -0,0 +1,34 @@ +#ifndef WOODENCRATE_HPP +#define WOODENCRATE_HPP + +#include +#include "staticSprite.hpp" +#include "bomberbloke.h" + +class StoneBlock : public actor{ +public: + + int getType() const{ + return ACTOR_STONE_BLOCK; + } + + StoneBlock(int x=0, int y=0) : actor(double(x), double(y), true){ + mpSpriteHandler = std::shared_ptr(new staticSprite(double(x), double(y), 1.0, 1.0, "stone.png")); + return; + } + + void handleCommand(std::string command){ + (void) command; + return; // Stone blocks are unbreakable + } + + template + void serialize(Archive &archive){ + archive(cereal::base_class(this)); + return; + } +}; + +CEREAL_REGISTER_TYPE(StoneBlock) + +#endif diff --git a/common/bomberbloke.h b/common/bomberbloke.h index 6759941..c66314c 100644 --- a/common/bomberbloke.h +++ b/common/bomberbloke.h @@ -45,7 +45,8 @@ enum block_types /* Cereal magic: include all actor types here so cereal knows about them */ #include "bloke.hpp" #include "bomb.hpp" -#include "woodenCrate.hpp" +#include "WoodenCrate.hpp" +#include "StoneBlock.hpp" #include "BomberBlokeScene.hpp" diff --git a/common/bomberbloke_actors.hpp b/common/bomberbloke_actors.hpp index 009808a..ad99c4c 100644 --- a/common/bomberbloke_actors.hpp +++ b/common/bomberbloke_actors.hpp @@ -3,6 +3,7 @@ enum actor_types{ ACTOR_WOODEN_CRATE, + ACTOR_STONE_BLOCK, ACTOR_METAL_CRATE, ACTOR_EXPLOSIVE_CRATE, ACTOR_DEATH_BLOCK, diff --git a/common/woodenCrate.hpp b/common/woodenCrate.hpp index 521dc11..53ef415 100644 --- a/common/woodenCrate.hpp +++ b/common/woodenCrate.hpp @@ -9,14 +9,14 @@ #include "BombPickup.hpp" #include "BigBombPickup.hpp" -class woodenCrate : public actor{ +class WoodenCrate : public actor{ public: int getType() const{ return ACTOR_WOODEN_CRATE; } - woodenCrate(int x=0, int y=0) : actor(double(x), double(y), true){ + WoodenCrate(int x=0, int y=0) : actor(double(x), double(y), true){ mpSpriteHandler = std::shared_ptr(new staticSprite(double(x), double(y), 1.0, 1.0, "crate.png")); return; } @@ -64,6 +64,6 @@ class woodenCrate : public actor{ } }; -CEREAL_REGISTER_TYPE(woodenCrate) +CEREAL_REGISTER_TYPE(WoodenCrate) #endif From e888b06e256342e072e756f7a128cf9d4d03ba05 Mon Sep 17 00:00:00 2001 From: harveynw Date: Sun, 11 Feb 2024 10:17:35 +0000 Subject: [PATCH 2/5] Stone texture loads --- cmake/assets.cmake | 1 + common/BomberBlokeScene.cpp | 6 ++++-- common/StoneBlock.hpp | 5 +---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cmake/assets.cmake b/cmake/assets.cmake index d0a5a79..d3de89c 100644 --- a/cmake/assets.cmake +++ b/cmake/assets.cmake @@ -36,6 +36,7 @@ assets/bomb.png assets/bomb_pickup.png assets/crate.png assets/crate.svg +assets/stone.png assets/flames.png assets/lightning.png assets/explosion_frame_1.png diff --git a/common/BomberBlokeScene.cpp b/common/BomberBlokeScene.cpp index 249ca4e..c4ff518 100644 --- a/common/BomberBlokeScene.cpp +++ b/common/BomberBlokeScene.cpp @@ -220,8 +220,10 @@ BomberBlokeScene::BomberBlokeScene(unsigned int size_x, unsigned int size_y) for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (blocks[i][j] == EMPTY) { - blocks[i][j] = ACTOR_WOODEN_CRATE; - addActor(std::shared_ptr(new WoodenCrate(i, j))); + //blocks[i][j] = ACTOR_WOODEN_CRATE; + //addActor(std::shared_ptr(new WoodenCrate(i, j))); + blocks[i][j] = ACTOR_STONE_BLOCK; + addActor(std::shared_ptr(new StoneBlock(i, j))); } } } diff --git a/common/StoneBlock.hpp b/common/StoneBlock.hpp index 6194703..d2c1e86 100644 --- a/common/StoneBlock.hpp +++ b/common/StoneBlock.hpp @@ -1,5 +1,4 @@ -#ifndef WOODENCRATE_HPP -#define WOODENCRATE_HPP +#pragma once #include #include "staticSprite.hpp" @@ -30,5 +29,3 @@ class StoneBlock : public actor{ }; CEREAL_REGISTER_TYPE(StoneBlock) - -#endif From 7a317778b525e94e98b808122a106c3256a5a427 Mon Sep 17 00:00:00 2001 From: harveynw Date: Sun, 11 Feb 2024 17:52:22 +0000 Subject: [PATCH 3/5] Block explosion properly --- common/bomb.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/common/bomb.cpp b/common/bomb.cpp index f2c09fe..68be521 100644 --- a/common/bomb.cpp +++ b/common/bomb.cpp @@ -112,17 +112,13 @@ bomb::explode() bool withSound = true; for(const auto& path : targets) { for(const auto& coord : path.squares) { - explosionEffects.push_back( - std::make_shared(coord.first, coord.second, 1, 1, false, 30, 64, 0, withSound) - ); - if(withSound) - withSound = false; // Only one explosion needs to generate a sound effect + bool stopped = false; // Do not continue along blast path past this one + bool blocked = false; // Do not explode on current square auto square = std::make_shared(coord.first, coord.second, 1, 1, false); std::list> actor_list = _pScene->ActorsCollidingWith(square.get()); - bool stopped = false; for (std::shared_ptr pActor : actor_list) { if (pActor.get() == this) continue; @@ -134,12 +130,23 @@ bomb::explode() case ACTOR_BOMB: stopped = true; break; + case ACTOR_STONE_BLOCK: + blocked = true; + break; default: break; } } } - if (stopped) + + if(blocked) + break; + explosionEffects.push_back( + std::make_shared(coord.first, coord.second, 1, 1, false, 30, 64, 0, withSound) + ); + if(withSound) + withSound = false; // Only one explosion needs to generate a sound effect + if(stopped) break; } } From 635981e7b6acfee1663ddefe40354816b9af16ae Mon Sep 17 00:00:00 2001 From: harveynw Date: Sun, 11 Feb 2024 19:41:43 +0000 Subject: [PATCH 4/5] Level gen fixed --- common/BomberBlokeScene.cpp | 53 ++++++++++++++++++++++++++++--------- common/bomberbloke.h | 3 ++- 2 files changed, 43 insertions(+), 13 deletions(-) diff --git a/common/BomberBlokeScene.cpp b/common/BomberBlokeScene.cpp index c4ff518..0c9b3d2 100644 --- a/common/BomberBlokeScene.cpp +++ b/common/BomberBlokeScene.cpp @@ -186,27 +186,54 @@ BomberBlokeScene::BomberBlokeScene(unsigned int size_x, unsigned int size_y) std::vector> blocks{ size_x, std::vector(size_y, 0) }; + /* Lay down stone blocks */ + int mapType = distrib(gen); + std::string mapTypeName; + if(mapType < 6) + mapTypeName = "Clear"; + else if(mapType < 8) { + mapTypeName = "Walls"; + + // Top and bottom + for(int i = 2; i <= 7; i++) { + blocks[i][2] = STONE; + blocks[i][7] = STONE; + } + // Gates + blocks[2][3] = STONE; + blocks[7][3] = STONE; + blocks[2][6] = STONE; + blocks[7][6] = STONE; + + } else { + mapTypeName = "Grid"; + + for(int i = 1; i < 9; i += 2) + for(int j = 1; j < 9; j += 2) + blocks[i][j] = STONE; + } + log_message(INFO, "Map type: " + mapTypeName); + + /* Generate spawn points */ for (unsigned int i = 0; i < 16; i++) { bool set = false; for (int j = 0; j < 10000; j++) { unsigned int xpos = distrib(gen); unsigned int ypos = distrib(gen); - if (blocks[xpos][ypos] != SPAWN_POINT) { + if (blocks[xpos][ypos] != SPAWN_POINT && blocks[xpos][ypos] != STONE) { blocks[xpos][ypos] = SPAWN_POINT; spawn_points.push_back({ xpos, ypos }); + /* make space around the spawn point */ - if (xpos + 1 < size_x) { + if (xpos + 1 < size_x && blocks[xpos + 1][ypos] == EMPTY) blocks[xpos + 1][ypos] = RESERVED; - } - if (xpos >= 1) { + if (xpos >= 1 && blocks[xpos - 1][ypos] == EMPTY) blocks[xpos - 1][ypos] = RESERVED; - } - if (ypos + 1 < size_y) { + if (ypos + 1 < size_y && blocks[xpos][ypos + 1] == EMPTY) blocks[xpos][ypos + 1] = RESERVED; - } - if (ypos >= 1) { + if (ypos >= 1 && blocks[xpos][ypos - 1] == EMPTY) blocks[xpos][ypos - 1] = RESERVED; - } + set = true; break; } @@ -219,12 +246,14 @@ BomberBlokeScene::BomberBlokeScene(unsigned int size_x, unsigned int size_y) /* Fill in the other blocks - could be wooden crates or other types*/ for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { - if (blocks[i][j] == EMPTY) { - //blocks[i][j] = ACTOR_WOODEN_CRATE; - //addActor(std::shared_ptr(new WoodenCrate(i, j))); + if (blocks[i][j] == STONE) { blocks[i][j] = ACTOR_STONE_BLOCK; addActor(std::shared_ptr(new StoneBlock(i, j))); } + if (blocks[i][j] == EMPTY) { + blocks[i][j] = ACTOR_WOODEN_CRATE; + addActor(std::shared_ptr(new WoodenCrate(i, j))); + } } } diff --git a/common/bomberbloke.h b/common/bomberbloke.h index c66314c..d1a49b2 100644 --- a/common/bomberbloke.h +++ b/common/bomberbloke.h @@ -37,7 +37,8 @@ enum block_types EMPTY, RESERVED, SPAWN_POINT, - WOOD + WOOD, + STONE }; #include "bomberbloke_actors.hpp" From ef216d64250129918e9a32d6d2fcfcf46550c486 Mon Sep 17 00:00:00 2001 From: harveynw Date: Sun, 11 Feb 2024 19:47:37 +0000 Subject: [PATCH 5/5] Git doesn't track case changes --- common/{woodenCrate.hpp => WoodenCrate.hpp} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename common/{woodenCrate.hpp => WoodenCrate.hpp} (100%) diff --git a/common/woodenCrate.hpp b/common/WoodenCrate.hpp similarity index 100% rename from common/woodenCrate.hpp rename to common/WoodenCrate.hpp