From 198fef6a6d019d8016c08e325b29a90acbd7a11e Mon Sep 17 00:00:00 2001 From: Andrew Kloet Date: Thu, 22 May 2025 20:53:41 -0400 Subject: [PATCH] refactor castle --- src/Castle.cpp | 38 ++++++++++---------------------------- src/Castle.h | 14 +++++++------- src/CastleAssets.h | 38 ++++++++++++++++++++++++++++++++++++++ src/assets/CastleAssets.h | 38 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 93 insertions(+), 35 deletions(-) create mode 100644 src/CastleAssets.h create mode 100644 src/assets/CastleAssets.h diff --git a/src/Castle.cpp b/src/Castle.cpp index e442fe8..dc92ff6 100644 --- a/src/Castle.cpp +++ b/src/Castle.cpp @@ -1,39 +1,24 @@ #include "Castle.h" #include "Aquarium.h" +#include "assets/CastleAssets.h" -const std::vector Castle::image = { - R"( T~~ )", R"( | )", - R"( /^\ )", R"( / \ )", - R"( _ _ _ / \ _ _ _ )", R"([ ]_[ ]_[ ]/ _ _ \[ ]_[ ]_[ ])", - R"(|_=__-_ =_|_[ ]_[ ]_|_=-___-__|)", R"( | _- = | =_ = _ |= _= | )", - R"( |= -[] |- = _ = |_-=_[] | )", R"( | =_ |= - ___ | =_ = | )", - R"( |= []- |- /| |\ |=_ =[] | )", R"( |- =_ | =| | | | |- = - | )", - R"( |_______|__|_|_|_|__|_______| )"}; +Castle::Castle() + : x(Aquarium::getInstance().getWidth() - 32), + y(Aquarium::getInstance().getHeight() - 13), image(castleAsset.image), + mask(castleAsset.mask) {} -const std::vector Castle::mask = { - R"( RR )", R"( )", - R"( yyy )", R"( y y )", - R"( y y )", R"( y y )", - R"( )", R"( )", - R"( )", R"( yyy )", - R"( yy yy )", R"( y y y y )", - R"( yyyyyyy )"}; +void Castle::draw() const { + auto &aquarium = Aquarium::getInstance(); -Castle::Castle() : Entity() { - x = Aquarium::getInstance().getWidth() - 32; - y = Aquarium::getInstance().getHeight() - 13; -} - -void Castle::draw() { for (size_t i = 0; i < image.size(); ++i) { std::string currentLine; std::string colorLine; + currentLine.reserve(image[i].size()); + colorLine.reserve(image[i].size()); // Iterate over characters in the current line for (size_t j = 0; j < image[i].size(); ++j) { char ch = image[i][j]; - if (ch == '?') - continue; char colorChar = 'K'; // default to black if (i < mask.size() && j < mask[i].size() && mask[i][j] != ' ') @@ -44,9 +29,6 @@ void Castle::draw() { colorLine += colorChar; } - Aquarium::getInstance().drawToBackBuffer(y + i, x, 0, currentLine, - colorLine); + aquarium.drawToBackBuffer(y + i, x, 0, currentLine, colorLine); } } - -void Castle::update() { return; } diff --git a/src/Castle.h b/src/Castle.h index bafe70a..762c5b3 100644 --- a/src/Castle.h +++ b/src/Castle.h @@ -1,14 +1,14 @@ #pragma once -#include "Entity.h" +#include +#include -class Castle : public Entity { +class Castle { private: - static const std::vector image; - static const std::vector mask; + const size_t x, y; + const std::vector image; + const std::vector mask; public: Castle(); - - void draw(); - void update(); + void draw() const; }; diff --git a/src/CastleAssets.h b/src/CastleAssets.h new file mode 100644 index 0000000..d24aeaa --- /dev/null +++ b/src/CastleAssets.h @@ -0,0 +1,38 @@ +#pragma once + +#include +#include + +using CastleAsset = + std::pair, std::vector>; + +inline std::vector castleAsset = { + {{ + R"( T~~)", + R"( |)", + R"( /^\)", + R"( / \)", + R"( _ _ _ / \ _ _ _)", + R"([ ]_[ ]_[ ]/ _ _ \[ ]_[ ]_[ ])", + R"(|_=__-_ =_|_[ ]_[ ]_|_=-___-__|)", + R"( | _- = | =_ = _ |= _= |)", + R"( |= -[] |- = _ = |_-=_[] |)", + R"( | =_ |= - ___ | =_ = |)", + R"( |= []- |- /| |\ |=_ =[] |)", + R"( |- =_ | =| | | | |- = - |)", + R"( |_______|__|_|_|_|__|_______|)"}, + { + R"( RR)", + R"()", + R"( yyy)", + R"( y y)", + R"( y y)", + R"( y y)", + R"()", + R"()", + R"()", + R"( yyy)", + R"( yy yy)", + R"( y y y y)", + R"( yyyyyyy)"}} +}; diff --git a/src/assets/CastleAssets.h b/src/assets/CastleAssets.h new file mode 100644 index 0000000..494038a --- /dev/null +++ b/src/assets/CastleAssets.h @@ -0,0 +1,38 @@ +#pragma once + +#include +#include + +struct CastleAsset { + std::vector image; + std::vector mask; +}; + +inline CastleAsset castleAsset = {{ + R"( T~~)", + R"( |)", + R"( /^\)", + R"( / \)", + R"( _ _ _ / \ _ _ _)", + R"([ ]_[ ]_[ ]/ _ _ \[ ]_[ ]_[ ])", + R"(|_=__-_ =_|_[ ]_[ ]_|_=-___-__|)", + R"( | _- = | =_ = _ |= _= |)", + R"( |= -[] |- = _ = |_-=_[] |)", + R"( | =_ |= - ___ | =_ = |)", + R"( |= []- |- /| |\ |=_ =[] |)", + R"( |- =_ | =| | | | |- = - |)", + R"( |_______|__|_|_|_|__|_______|)"}, + { + R"( RR)", + R"()", + R"( yyy)", + R"( y y)", + R"( y y)", + R"( y y)", + R"()", + R"()", + R"()", + R"( yyy)", + R"( yy yy)", + R"( y y y y)", + R"( yyyyyyy)"}};