From 0b8582a9aa825024edbd0a21c6287bfcccec28de Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Mon, 18 Feb 2008 17:52:15 +0000 Subject: core redesign, part II --- src/core/gameinterface.cc | 80 +++++++++++++++++------------------------------ 1 file changed, 28 insertions(+), 52 deletions(-) (limited to 'src/core/gameinterface.cc') diff --git a/src/core/gameinterface.cc b/src/core/gameinterface.cc index 38ea6fe..908ffca 100644 --- a/src/core/gameinterface.cc +++ b/src/core/gameinterface.cc @@ -7,81 +7,57 @@ #include #include -class GameInterface; - +#include "sys/sys.h" #include "core/application.h" +#include "core/cvar.h" +#include "core/func.h" #include "core/gameinterface.h" #include "core/player.h" -#include "sys/sys.h" namespace core { -GameInterface *game() -{ - return GameInterface::instance(); -} - -GameInterface *GameInterface::gameinterface_instance = 0; - -GameInterface::GameInterface(const char *gamename) +GameInterface::GameInterface() { - gameinterface_instance = this; - connected = false; - if (gamename) - game_name.assign(gamename); + if (Cvar::sv_dedicated->value()) + local_player.player_name.assign("Console"); else - game_name.clear(); + local_player.player_name.assign("Player0"); + clear(); } GameInterface::~GameInterface() { - gameinterface_instance = 0; -} - -GameInterface *GameInterface::instance() -{ - return gameinterface_instance; + clear(); } -std::string const &GameInterface::name() +// clear all game related objects +void GameInterface::clear() { - return game_name; -} + con_debug << "Clearing game data\n"; -void message_broadcast(std::string const & message, int ignoreplayer) -{ - // send to console - con_print << message << std::endl; - - // broadcast to remote clients - if (application()->netserver) { - std::string netmessage("msg info "); - netmessage.append(message); - netmessage += '\n'; - - application()->netserver->broadcast(netmessage, ignoreplayer); + // remove all entities + for (std::map::iterator it = Entity::registry.begin(); it != Entity::registry.end(); it++) { + delete (*it).second; } -} + Entity::registry.clear(); -void message_send(Player const *player, const char *protohdr, std::string message) -{ - // send to console - if (player == &Player::local) { - con_print << message << std::endl; + // remove all game functions + for (std::map::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); + } } - // send to remote clients - if (application()->netserver) { - NetClient *client = application()->netserver->find_client(player); - if (client) { - std::string netmessage("msg info "); - netmessage.append(message); - netmessage += '\n'; - - application()->netserver->send(client, message); + // remove all game cvars + for (std::map::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); } } } + } // namespace core -- cgit v1.2.3