Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-02-09 23:06:00 +0000
committerStijn Buys <ingar@osirion.org>2008-02-09 23:06:00 +0000
commit31959bc355c471c573828bf63932850e46c4b5bc (patch)
treecc473901e88926e36c89775a7fc97a51da948498 /src/core/entity.cc
parentd281384f727583b39b8e97ffea58b278ecc8dd47 (diff)
more entities
Diffstat (limited to 'src/core/entity.cc')
-rw-r--r--src/core/entity.cc50
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;
}