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-07-28 19:37:31 +0000
committerStijn Buys <ingar@osirion.org>2008-07-28 19:37:31 +0000
commitd389a31f9816b55d8c7685ec24b9ab814252d693 (patch)
tree9b2577692e543fa6c59fcda508f92c3eb839ac7a /src/core/gameinterface.cc
parent17408276791033e8122819185abf3bcb01740105 (diff)
zone support
Diffstat (limited to 'src/core/gameinterface.cc')
-rw-r--r--src/core/gameinterface.cc41
1 files changed, 23 insertions, 18 deletions
diff --git a/src/core/gameinterface.cc b/src/core/gameinterface.cc
index be4d288..7833bf5 100644
--- a/src/core/gameinterface.cc
+++ b/src/core/gameinterface.cc
@@ -12,6 +12,7 @@
#include "core/func.h"
#include "core/gameinterface.h"
#include "core/player.h"
+#include "core/zone.h"
#include "model/model.h"
#include "sys/sys.h"
@@ -52,12 +53,12 @@ GameInterface::GameInterface()
game_localplayer.update_info();
}
- core::Func::add("list_model", (core::FuncPtr) func_list_model);
+ Func::add("list_model", (FuncPtr) func_list_model);
}
GameInterface::~GameInterface()
{
- core::Func::remove("list_model");
+ Func::remove("list_model");
game_localplayer.clear();
@@ -70,24 +71,30 @@ void GameInterface::clear()
//con_debug << "Clearing game data\n";
// remove all entities
- for (std::map<unsigned int, Entity*>::iterator it = Entity::registry.begin(); it != Entity::registry.end(); it++) {
+ for (Entity::Registry::iterator it = Entity::registry().begin(); it != Entity::registry().end(); it++) {
delete (*it).second;
}
- Entity::registry.clear();
+ Entity::registry().clear();
+
+ // remove all zones
+ for (Zone::Registry::iterator it = Zone::registry().begin(); it != Zone::registry().end(); it++) {
+ delete (*it).second;
+ }
+ Zone::registry().clear();
// remove all game functions
- for (std::map<std::string, Func*>::iterator it = Func::registry.begin(); it != Func::registry.end(); it++) {
+ for (Func::Registry::iterator it = Func::registry().begin(); it != Func::registry().end(); it++) {
if ( ((*it).second->flags() & Func::Game) == Func::Game) {
delete (*it).second;
- Func::registry.erase(it);
+ Func::registry().erase(it);
}
}
// remove all game cvars
- for (std::map<std::string, Cvar*>::iterator it = Cvar::registry.begin(); it != Cvar::registry.end(); it++) {
+ for (Cvar::Registry::iterator it = Cvar::registry().begin(); it != Cvar::registry().end(); it++) {
if ( ((*it).second->flags() & Cvar::Game) == Cvar::Game) {
delete (*it).second;
- Cvar::registry.erase(it);
+ Cvar::registry().erase(it);
}
}
@@ -104,12 +111,11 @@ void GameInterface::reset_clientstate(float timestamp, float prevtimestamp)
game_previousframetime = prevtimestamp;
game_serverframetime = timestamp;
- std::map<unsigned int, core::Entity *>::iterator it;
- for (it=core::Entity::registry.begin(); it != core::Entity::registry.end(); it++) {
+ for (Entity::Registry::iterator it = Entity::registry().begin(); it != Entity::registry().end(); it++) {
- core::Entity *entity = (*it).second;
+ Entity *entity = (*it).second;
- if (entity->state() && !(entity->flags() & core::Entity::Static))
+ if (entity->state() && !(entity->flags() & Entity::Static))
entity->state()->assign(entity);
}
@@ -124,7 +130,7 @@ void GameInterface::reset_clientstate(float timestamp, float prevtimestamp)
void GameInterface::update_entity_clientstate(Entity *entity)
{
if (!entity->state()) {
- entity->entity_clientstate = new core::ClientState(entity);
+ entity->entity_clientstate = new ClientState(entity);
entity->entity_clientstate->assign(entity);
}
@@ -134,7 +140,7 @@ void GameInterface::update_entity_clientstate(Entity *entity)
return;
}
- if (!(entity->flags() & core::Entity::Static)) {
+ if (!(entity->flags() & Entity::Static)) {
// clientstate location
entity->state()->state_location = entity->state()->previouslocation() +
@@ -156,7 +162,7 @@ void GameInterface::update_entity_clientstate(Entity *entity)
if (angle > MIN_DELTA)
entity->state()->state_axis.rotate(n, -angle);
}
-
+ /*
n.assign(math::crossproduct( entity->state()->axis().left(), entity->axis().left()));
if (!(n.length() < MIN_DELTA)) {
n.normalize();
@@ -174,7 +180,7 @@ void GameInterface::update_entity_clientstate(Entity *entity)
if (angle > MIN_DELTA)
entity->state()->state_axis.rotate(n, -angle);
}
-
+ */
} else {
entity->state()->state_axis.assign(entity->axis());
}
@@ -188,8 +194,7 @@ void GameInterface::update_clientstate(float seconds)
{
game_clientframetime += seconds;
- std::map<unsigned int, core::Entity *>::iterator it;
- for (it=core::Entity::registry.begin(); it != core::Entity::registry.end(); it++) {
+ for (Entity::Registry::iterator it = Entity::registry().begin(); it != Entity::registry().end(); it++) {
update_entity_clientstate((*it).second);
}
}