Finish Snow::Manager implementation

This commit is contained in:
Maple Redleaf
2025-12-12 07:40:19 -06:00
parent 9f4b0015aa
commit 588d921553
4 changed files with 27 additions and 2 deletions

View File

@@ -4,8 +4,29 @@
namespace Snow {
Manager::Manager() = default;
Manager::~Manager() = default;
void Manager::NewSnow() { std::make_unique<Snow>(); }
void Manager::Update() {}
void Manager::NewSnow() { snows.push_back(std::make_unique<Snow>()); }
void Manager::Update() {
for (auto snowi = 0; snowi < snows.size(); snowi++) {
auto &snow = snows[snowi];
if (!snow->IsAlive()) {
Kill(snowi);
continue;
}
snow->Update();
}
}
void Manager::Draw() {
for (auto snowi = 0; snowi < snows.size(); snowi++)
snows[snowi]->Draw();
}
void Manager::Kill(uint pos) {
std::swap(snows[pos], snows.back());
snows.pop_back();
}
} // namespace Snow

View File

@@ -13,5 +13,6 @@ public:
private:
std::vector<std::unique_ptr<Snow>> snows;
void Kill(uint pos);
};
} // namespace Snow

View File

@@ -30,6 +30,8 @@ void Snow::Move() {
position += move;
}
bool Snow::IsAlive() { return live; }
void Snow::CheckLive() {
if (position.y >= SCREEN_HEIGHT)
live = false;

View File

@@ -10,6 +10,7 @@ public:
void Update();
void Draw();
bool IsAlive();
~Snow();