You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
896 B
26 lines
896 B
#include "dinkyecs.hpp"
|
|
#include <unordered_map>
|
|
|
|
// BUG: this should have a bool for "permanent" or "constant" so that
|
|
// everything working with it knows to do the make_constant/not_constant
|
|
// dance when using it. Idea is the System:: ops for this would get it
|
|
// and then look at the bool and add the constant ops as needed.
|
|
namespace inventory {
|
|
using Slot = std::string;
|
|
|
|
struct Model {
|
|
std::unordered_map<Slot, DinkyECS::Entity> by_slot;
|
|
std::unordered_map<DinkyECS::Entity, Slot> by_entity;
|
|
|
|
bool add(const Slot &in_slot, DinkyECS::Entity ent);
|
|
Slot& get(DinkyECS::Entity ent);
|
|
DinkyECS::Entity get(const Slot& slot);
|
|
bool has(DinkyECS::Entity ent);
|
|
bool has(const Slot& slot);
|
|
void remove(const Slot& slot, DinkyECS::Entity ent);
|
|
void remove(DinkyECS::Entity ent);
|
|
void remove(const Slot& slot);
|
|
void invariant();
|
|
void dump();
|
|
};
|
|
}
|
|
|