#pragma once #include #include #include bool compareById(const GameObject& a, const GameObject& b) { return a.id > b.id; } class GameDatabase { private: int Get_Index(ObjectId id) { for (unsigned int i = 0; i < db_.size(); i++) { if (db_[i].id == id) return i; } return -1; } std::vector db_; public: GameDatabase() = default; void Insert(ObjectId id, string name, size_t x, size_t y) { int new_id = Get_Index(id); if (new_id == -1) { db_.push_back({ id, name, x, y }); } else { db_[new_id] = {id, name, x, y}; } } void Remove(ObjectId id) { int new_id = Get_Index(id); if (new_id != -1) db_.erase(db_.begin() + new_id); } vector DataByName(string name) const { vector v; for (auto x : db_) if (x.name == name) v.push_back(x); std::sort(v.begin(), v.end(), compareById); return v; } vector DataByPosition(size_t x, size_t y) const { vector v; for (auto i : db_) if (i.x == x && i.y == y) v.push_back(i); std::sort(v.begin(), v.end(), compareById); return v; } vector Data() const { vector v = db_; std::sort(v.begin(), v.end(), compareById); return v; } };