home *** CD-ROM | disk | FTP | other *** search
/ Enter 2005 March / ENTER.ISO / files / fwp-0.0.6-win32-installer.exe / NetworkCCmds.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2005-01-21  |  5.4 KB  |  190 lines

  1. #include "NetworkCCmds.h"
  2.  
  3. #define _WINSOCKAPI_    // wegen doppelten defines
  4.  
  5. #include <stdlib.h>
  6.  
  7. #include "Network.h"
  8. #include "log.h"
  9. #include "Gui.h"
  10. #include "Game.h"
  11.  
  12. CCmdNetworkRestart::CCmdNetworkRestart():CCmd("network.restart"){
  13.     usageStr="network.restart";
  14.     infoStr="restarts the network subsystem";
  15. }
  16.  
  17. CCmdNetworkRestart::~CCmdNetworkRestart(){
  18.     if(console!=NULL)
  19.         console->unregisterCCmd(this);
  20. }
  21.  
  22. bool CCmdNetworkRestart::exec(int argc, char* argv[]){
  23.     if(argc==0){
  24.         if(Game::wasInit()){
  25.             console->print("network.restart: Cannot restart network while game is running, use 'game.shutdown' first.\n");
  26.             return false;
  27.         }
  28.  
  29.         if(Network::wasInit())
  30.             Network::shutdown();
  31.         else
  32.             console->print("network.restart: Network not initialized, so I'll start it.\n");
  33.  
  34.         return Network::init();
  35.  
  36.     }else{
  37.         console->print("usage: %s\n", usageStr);
  38.         return false;
  39.     }
  40. }
  41.  
  42.  
  43. CCmdNetworkConnect::CCmdNetworkConnect():CCmd("network.connect"){
  44.     usageStr="network.connect <host:port>";
  45.     infoStr="connects to the currently set server or to the one specified in the argument";
  46. }
  47.  
  48. CCmdNetworkConnect::~CCmdNetworkConnect(){
  49.     if(console!=NULL)
  50.         console->unregisterCCmd(this);
  51. }
  52.  
  53. bool CCmdNetworkConnect::exec(int argc, char* argv[]){
  54.     if(argc==0){
  55. /*        if(!Network::wasInit()){
  56.             error("(in CCmdNetworkConnect::exec()): Network subsystem not initialized.\n\n");
  57.             return false;
  58.         }
  59.         if(Network::wasServerInit()){
  60.             log("Shutting down server...\n");
  61.             Network::shutdownServer();
  62.         }
  63.         if(Network::wasClientInit()){
  64.             log("Shutting down client...\n");
  65.             Network::shutdownClient();
  66.         }
  67.  
  68.         if(Game::wasInit()){
  69.             Game::shutdown();
  70.         }
  71.  
  72.         return Game::init();
  73. */
  74.         console->print("use 'game.startClientGame'!\n");
  75.         return true;
  76.     }else{
  77.         console->print("usage: %s\n", usageStr);
  78.         return false;
  79.     }
  80. }
  81.  
  82. CCmdNetworkDisconnect::CCmdNetworkDisconnect():CCmd("network.disconnect"){
  83.     usageStr="network.disconnect <host:port>";
  84.     infoStr="disconnects from the server (or - if you are the server - kills it)";
  85. }
  86.  
  87. CCmdNetworkDisconnect::~CCmdNetworkDisconnect(){
  88.     if(console!=NULL)
  89.         console->unregisterCCmd(this);
  90. }
  91.  
  92. bool CCmdNetworkDisconnect::exec(int argc, char* argv[]){
  93.     if(argc==0){
  94.         console->print("use 'game.shutdown'!\n");
  95.         return true;
  96.     }else{
  97.         console->print("usage: %s\n", usageStr);
  98.         return false;
  99.     }
  100. }
  101.  
  102.  
  103. CCmdNetworkServerinfo::CCmdNetworkServerinfo():CCmd("network.serverinfo"){
  104.     usageStr="network.serverinfo";
  105.     infoStr="displays info about the server";
  106. }
  107.  
  108. CCmdNetworkServerinfo::~CCmdNetworkServerinfo(){
  109.     if(console!=NULL)
  110.         console->unregisterCCmd(this);
  111. }
  112.  
  113. bool CCmdNetworkServerinfo::exec(int argc, char* argv[]){
  114.     if(argc==0){
  115.         if( !Network::wasServerInit() ){
  116.             console->print("Server was not initialized.\n");
  117.             return false;
  118.         }
  119.  
  120. //        Network::server->displayServerInfo();
  121.  
  122.         console->print("Serverinfo for '%s':\n", Network::server->si.name);
  123.         console->print("(%s)\n", Game::info.var.clientGame ? "remote server": "local server");
  124.         console->print("Description: '%s'\n", Network::server->si.description);
  125.         console->print("Hostname: '%s'; ip: %s; port: %d\n", Network::info.var.server_hostName, Network::info.var.server_ip, Network::info.var.server_port);
  126.         console->print("Arena: '%s'\n", Game::info.var.arena);
  127.         console->print("Gamemode: %s\n", Game::getModeName(Game::info.var.mode));
  128.         console->print("Option flags:  %s | %s"
  129.             , ((Network::server->si.optionFlags & PACKET_OPTION_FLAG_GAME_ENABLE_FRIENDLY_FIRE) == PACKET_OPTION_FLAG_GAME_ENABLE_FRIENDLY_FIRE) ? "FF_ENABLED" : "FF_DISABLED"
  130.             , ((Network::server->si.optionFlags & PACKET_OPTION_FLAG_GAME_USE_ARENA_CYCLE) == PACKET_OPTION_FLAG_GAME_USE_ARENA_CYCLE) ? "AC_ENABLED" : "AC_DISABLED"
  131.             );
  132. //        printf("of: %i\n", Network::server->si.optionFlags);
  133.         console->print("Players (%i/%i):\n", Network::server->si.numClients, Network::server->si.maxClients);
  134.         for(int i=0;i<Network::server->si.maxClients;i++){
  135.             if( Network::server->clients[i] != NULL ){
  136.                 console->print(" %i : '%s'\n", i, Network::server->clients[i]->ci.name);
  137.             }
  138.         }
  139.  
  140.  
  141.         return true;
  142.     }else{
  143.         console->print("usage: %s\n", usageStr);
  144.         return false;
  145.     }
  146. }
  147.  
  148.  
  149. CCmdNetworkDisconnectClient::CCmdNetworkDisconnectClient():CCmd("network.disconnectClient"){
  150.     usageStr="network.disconnectClient [id|name]";
  151.     infoStr="disconnects a client";
  152. }
  153.  
  154. CCmdNetworkDisconnectClient::~CCmdNetworkDisconnectClient(){
  155.     if(console!=NULL)
  156.         console->unregisterCCmd(this);
  157. }
  158.  
  159. bool CCmdNetworkDisconnectClient::exec(int argc, char* argv[]){
  160.     if(argc==1){
  161.         if( !Network::wasServerInit() ){
  162.             console->print("Server was not initialized.\n");
  163.             return false;
  164.         }
  165.         if( Game::info.var.clientGame ){
  166.             console->print("You cannot disconnect clients from a remote server.\n");
  167.             return false;
  168.         }
  169.  
  170.         int clientId = atoi(argv[0]);
  171.         if( Network::server->clients[clientId] != NULL){
  172.             if( Network::server->clients[clientId] != Network::server->localClient ){
  173.                 return Network::server->disconnectClient(Network::server->clients[clientId], "Disconnected by console command.");
  174.             }else{
  175.                 console->print("You cannot disconnect yourself from a local server.\n");
  176.                 return false;
  177.             }
  178.         }else{
  179.             console->print("clientId %i not in use.\n", clientId);
  180.             return false;
  181.         }
  182.  
  183.         return true;
  184.     }else{
  185.         console->print("usage: %s\n", usageStr);
  186.         return false;
  187.     }
  188. }
  189.  
  190.