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-18 17:52:15 +0000
committerStijn Buys <ingar@osirion.org>2008-02-18 17:52:15 +0000
commit0b8582a9aa825024edbd0a21c6287bfcccec28de (patch)
tree2d9a46c60b028300b1b9133b84764b6c39964c33 /src/core/gameinterface.cc
parent982562fa19bb87a3dab352e562f386f61c171b7b (diff)
core redesign, part II
Diffstat (limited to 'src/core/gameinterface.cc')
-rw-r--r--src/core/gameinterface.cc80
1 files changed, 28 insertions, 52 deletions
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 <stdlib.h>
#include <iostream>
-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<unsigned int, Entity*>::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<std::string, Func*>::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<std::string, Cvar*>::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