#pragma once #include #include #include bool compareById(const GameObject& a, const GameObject& b) { return a.id > b.id; } class Gamedbase { 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: Gamedbase() = default; void Insert(ObjectId id, string name, size_t x, size_t y) { int new_id = Get_Index(id); if (new_id == -1) { db.emplace_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 dbyName(string name) const { vector v; for (auto x : db) if (x.name == name) v.emplace_back(x); std::sort(v.begin(), v.end(), compareById); return v; } vector dbyPosition(size_t x, size_t y) const { vector v; for (auto i : db) if (i.x == x && i.y == y) v.emplace_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; } };