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