From d389a31f9816b55d8c7685ec24b9ab814252d693 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Mon, 28 Jul 2008 19:37:31 +0000 Subject: zone support --- src/core/gameinterface.cc | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-) (limited to 'src/core/gameinterface.cc') 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::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::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::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::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::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); } } -- cgit v1.2.3