diff options
Diffstat (limited to 'src/core/entity.cc')
-rw-r--r-- | src/core/entity.cc | 50 |
1 files changed, 45 insertions, 5 deletions
diff --git a/src/core/entity.cc b/src/core/entity.cc index c8736da..7f23213 100644 --- a/src/core/entity.cc +++ b/src/core/entity.cc @@ -11,33 +11,71 @@ namespace core { -Entity::Entity(unsigned int entity_type, unsigned int entity_flags) +// --- Entity ----------------------------------------------------- + +Entity::Entity(unsigned int entity_flags, unsigned int entity_type) { flags = entity_flags; type = entity_type; + core::entity::add(this); } Entity::~Entity() +{} + +// --- EntityDynamic ------------------------------------------ + +EntityDynamic::EntityDynamic(unsigned int entity_flags, unsigned int entity_type) : + Entity(entity_type, entity_flags), + speed(0,0,0) +{ + +} + +// --- EntityControlable ------------------------------------------ + +EntityControlable::EntityControlable(unsigned int entity_flags, unsigned int entity_type) : + EntityDynamic(entity_type, entity_flags) { + owner = 0; } -namespace entity +// --- namespace entity ------------------------------------------- + +namespace entity { std::vector<Entity*> registry; void add(Entity *ent) { - ent->id = (unsigned int) registry.size(); + std::vector<Entity *>::iterator it; + unsigned int entity_id = 1; + for (it=registry.begin(); it != registry.end() && entity_id == (*it)->id; it++) { + entity_id++; + } + ent->id = entity_id; registry.push_back(ent); } +void remove(unsigned int entity_id) +{ + std::vector<Entity *>::iterator it; + for (it=registry.begin(); it != registry.end(); it++) { + if (entity_id == (*it)->id) { + delete((*it)); + registry.erase(it); + return; + } + } +} + void clear() { std::vector<Entity *>::iterator it; for (it=registry.begin(); it != registry.end(); it++) { - delete (*it); + delete(*it); (*it) = 0; } registry.clear(); @@ -47,7 +85,9 @@ void list() { std::vector<Entity *>::iterator it; for (it=registry.begin(); it != registry.end(); it++) { - con_print << " id " << std::setw(3) << (*it)->id << " type " << std::setw(2) << (*it)->type << std::endl; + con_print << " id " << std::setw(3) << (*it)->id + << " type " << std::setw(2) << (*it)->type + << " " << (*it)->label << std::endl; } con_print << registry.size() << " registered entities" << std::endl; } |