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()20NetworkManager &NetworkManager::getInstance(){ 21 static NetworkManager networkManager; 22 return networkManager; 23 } 24 NetworkManager()25NetworkManager::NetworkManager(){ 26 gameNetworkInterface= NULL; 27 networkRole= nrIdle; 28 } 29 init(NetworkRole networkRole)30void 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()45void NetworkManager::end(){ 46 delete gameNetworkInterface; 47 gameNetworkInterface= NULL; 48 networkRole= nrIdle; 49 } 50 update()51void NetworkManager::update(){ 52 if(gameNetworkInterface!=NULL){ 53 gameNetworkInterface->update(); 54 } 55 } 56 isNetworkGame()57bool NetworkManager::isNetworkGame(){ 58 return networkRole==nrClient || getServerInterface()->getConnectedSlotCount()>0; 59 } 60 getGameNetworkInterface()61GameNetworkInterface* NetworkManager::getGameNetworkInterface(){ 62 assert(gameNetworkInterface!=NULL); 63 return gameNetworkInterface; 64 } 65 getServerInterface()66ServerInterface* NetworkManager::getServerInterface(){ 67 assert(gameNetworkInterface!=NULL); 68 assert(networkRole==nrServer); 69 return static_cast<ServerInterface*>(gameNetworkInterface); 70 } 71 getClientInterface()72ClientInterface* NetworkManager::getClientInterface(){ 73 assert(gameNetworkInterface!=NULL); 74 assert(networkRole==nrClient); 75 return static_cast<ClientInterface*>(gameNetworkInterface); 76 } 77 78 }}//end namespace 79