From 763bd80603dbace9f14c25309159ed07ec6e9a93 Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Sat, 30 Jan 2021 11:50:30 -0500 Subject: Added sprite Y sorting --- src/game.h | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) (limited to 'src/game.h') diff --git a/src/game.h b/src/game.h index bb99543..abb70ce 100644 --- a/src/game.h +++ b/src/game.h @@ -1,6 +1,8 @@ #ifndef GAME_H_E6F1396E #define GAME_H_E6F1396E +#include +#include #include #include "sprite.h" @@ -14,23 +16,34 @@ struct Input { class Game { public: - int addSprite(Sprite sprite) { - int id = sprites_.size(); - sprites_.push_back(std::move(sprite)); - return id; - } + int addSprite(Sprite sprite); - Sprite& getSprite(int id) { + const Sprite& getSprite(int id) const { return sprites_.at(id); } - std::vector& getSprites() { + const std::vector& getSprites() { return sprites_; } + auto spriteView() const { + return ranges::views::transform([&] (int id) -> const Sprite& { + return sprites_.at(id); + }); + } + + auto getSpritesByY() const { + return spritesByY_ | ranges::views::transform([] (const std::tuple& val) { + return std::get<1>(val); + }); + } + + void moveSprite(int id, vec2i newLoc); + private: std::vector sprites_; + std::set> spritesByY_; }; #endif /* end of include guard: GAME_H_E6F1396E */ -- cgit 1.4.1