1 // ==============================================================
2 //	This file is part of Glest (www.glest.org)
3 //
4 //	Copyright (C) 2001-2008 Marti�o Figueroa
5 //
6 //	You can redistribute this code and/or modify it under
7 //	the terms of the GNU General Public License as published
8 //	by the Free Software Foundation; either version 2 of the
9 //	License, or (at your option) any later version
10 // ==============================================================
11 
12 #include "network_manager.h"
13 
14 namespace Glest{ namespace Game{
15 
16 // =====================================================
17 //	class NetworkManager
18 // =====================================================
19 
getInstance()20 NetworkManager &NetworkManager::getInstance(){
21 	static NetworkManager networkManager;
22 	return networkManager;
23 }
24 
NetworkManager()25 NetworkManager::NetworkManager(){
26 	gameNetworkInterface= NULL;
27 	networkRole= nrIdle;
28 }
29 
init(NetworkRole networkRole)30 void NetworkManager::init(NetworkRole networkRole)
31 {
32 	assert(gameNetworkInterface==NULL);
33 
34 	this->networkRole = networkRole;
35 
36 	if(networkRole==nrServer){
37 		gameNetworkInterface = new ServerInterface();
38 	}
39 	else
40 	{
41 		gameNetworkInterface = new ClientInterface();
42 	}
43 }
44 
end()45 void NetworkManager::end(){
46 	delete gameNetworkInterface;
47 	gameNetworkInterface= NULL;
48 	networkRole= nrIdle;
49 }
50 
update()51 void NetworkManager::update(){
52 	if(gameNetworkInterface!=NULL){
53 		gameNetworkInterface->update();
54 	}
55 }
56 
isNetworkGame()57 bool NetworkManager::isNetworkGame(){
58 	return networkRole==nrClient || getServerInterface()->getConnectedSlotCount()>0;
59 }
60 
getGameNetworkInterface()61 GameNetworkInterface* NetworkManager::getGameNetworkInterface(){
62 	assert(gameNetworkInterface!=NULL);
63 	return gameNetworkInterface;
64 }
65 
getServerInterface()66 ServerInterface* NetworkManager::getServerInterface(){
67 	assert(gameNetworkInterface!=NULL);
68 	assert(networkRole==nrServer);
69 	return static_cast<ServerInterface*>(gameNetworkInterface);
70 }
71 
getClientInterface()72 ClientInterface* NetworkManager::getClientInterface(){
73 	assert(gameNetworkInterface!=NULL);
74 	assert(networkRole==nrClient);
75 	return static_cast<ClientInterface*>(gameNetworkInterface);
76 }
77 
78 }}//end namespace
79