mirror of
https://github.com/NickTheFox99/ChristmOS.git
synced 2026-06-28 16:55:11 -04:00
Finish Snow::Manager implementation
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -13,5 +13,6 @@ public:
|
||||
|
||||
private:
|
||||
std::vector<std::unique_ptr<Snow>> snows;
|
||||
void Kill(uint pos);
|
||||
};
|
||||
} // namespace Snow
|
||||
|
||||
@@ -30,6 +30,8 @@ void Snow::Move() {
|
||||
position += move;
|
||||
}
|
||||
|
||||
bool Snow::IsAlive() { return live; }
|
||||
|
||||
void Snow::CheckLive() {
|
||||
if (position.y >= SCREEN_HEIGHT)
|
||||
live = false;
|
||||
|
||||
@@ -10,6 +10,7 @@ public:
|
||||
|
||||
void Update();
|
||||
void Draw();
|
||||
bool IsAlive();
|
||||
|
||||
~Snow();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user