home *** CD-ROM | disk | FTP | other *** search
- #include "NetworkCCmds.h"
-
- #define _WINSOCKAPI_ // wegen doppelten defines
-
- #include <stdlib.h>
-
- #include "Network.h"
- #include "log.h"
- #include "Gui.h"
- #include "Game.h"
-
- CCmdNetworkRestart::CCmdNetworkRestart():CCmd("network.restart"){
- usageStr="network.restart";
- infoStr="restarts the network subsystem";
- }
-
- CCmdNetworkRestart::~CCmdNetworkRestart(){
- if(console!=NULL)
- console->unregisterCCmd(this);
- }
-
- bool CCmdNetworkRestart::exec(int argc, char* argv[]){
- if(argc==0){
- if(Game::wasInit()){
- console->print("network.restart: Cannot restart network while game is running, use 'game.shutdown' first.\n");
- return false;
- }
-
- if(Network::wasInit())
- Network::shutdown();
- else
- console->print("network.restart: Network not initialized, so I'll start it.\n");
-
- return Network::init();
-
- }else{
- console->print("usage: %s\n", usageStr);
- return false;
- }
- }
-
-
- CCmdNetworkConnect::CCmdNetworkConnect():CCmd("network.connect"){
- usageStr="network.connect <host:port>";
- infoStr="connects to the currently set server or to the one specified in the argument";
- }
-
- CCmdNetworkConnect::~CCmdNetworkConnect(){
- if(console!=NULL)
- console->unregisterCCmd(this);
- }
-
- bool CCmdNetworkConnect::exec(int argc, char* argv[]){
- if(argc==0){
- /* if(!Network::wasInit()){
- error("(in CCmdNetworkConnect::exec()): Network subsystem not initialized.\n\n");
- return false;
- }
- if(Network::wasServerInit()){
- log("Shutting down server...\n");
- Network::shutdownServer();
- }
- if(Network::wasClientInit()){
- log("Shutting down client...\n");
- Network::shutdownClient();
- }
-
- if(Game::wasInit()){
- Game::shutdown();
- }
-
- return Game::init();
- */
- console->print("use 'game.startClientGame'!\n");
- return true;
- }else{
- console->print("usage: %s\n", usageStr);
- return false;
- }
- }
-
- CCmdNetworkDisconnect::CCmdNetworkDisconnect():CCmd("network.disconnect"){
- usageStr="network.disconnect <host:port>";
- infoStr="disconnects from the server (or - if you are the server - kills it)";
- }
-
- CCmdNetworkDisconnect::~CCmdNetworkDisconnect(){
- if(console!=NULL)
- console->unregisterCCmd(this);
- }
-
- bool CCmdNetworkDisconnect::exec(int argc, char* argv[]){
- if(argc==0){
- console->print("use 'game.shutdown'!\n");
- return true;
- }else{
- console->print("usage: %s\n", usageStr);
- return false;
- }
- }
-
-
- CCmdNetworkServerinfo::CCmdNetworkServerinfo():CCmd("network.serverinfo"){
- usageStr="network.serverinfo";
- infoStr="displays info about the server";
- }
-
- CCmdNetworkServerinfo::~CCmdNetworkServerinfo(){
- if(console!=NULL)
- console->unregisterCCmd(this);
- }
-
- bool CCmdNetworkServerinfo::exec(int argc, char* argv[]){
- if(argc==0){
- if( !Network::wasServerInit() ){
- console->print("Server was not initialized.\n");
- return false;
- }
-
- // Network::server->displayServerInfo();
-
- console->print("Serverinfo for '%s':\n", Network::server->si.name);
- console->print("(%s)\n", Game::info.var.clientGame ? "remote server": "local server");
- console->print("Description: '%s'\n", Network::server->si.description);
- console->print("Hostname: '%s'; ip: %s; port: %d\n", Network::info.var.server_hostName, Network::info.var.server_ip, Network::info.var.server_port);
- console->print("Arena: '%s'\n", Game::info.var.arena);
- console->print("Gamemode: %s\n", Game::getModeName(Game::info.var.mode));
- console->print("Option flags: %s | %s"
- , ((Network::server->si.optionFlags & PACKET_OPTION_FLAG_GAME_ENABLE_FRIENDLY_FIRE) == PACKET_OPTION_FLAG_GAME_ENABLE_FRIENDLY_FIRE) ? "FF_ENABLED" : "FF_DISABLED"
- , ((Network::server->si.optionFlags & PACKET_OPTION_FLAG_GAME_USE_ARENA_CYCLE) == PACKET_OPTION_FLAG_GAME_USE_ARENA_CYCLE) ? "AC_ENABLED" : "AC_DISABLED"
- );
- // printf("of: %i\n", Network::server->si.optionFlags);
- console->print("Players (%i/%i):\n", Network::server->si.numClients, Network::server->si.maxClients);
- for(int i=0;i<Network::server->si.maxClients;i++){
- if( Network::server->clients[i] != NULL ){
- console->print(" %i : '%s'\n", i, Network::server->clients[i]->ci.name);
- }
- }
-
-
- return true;
- }else{
- console->print("usage: %s\n", usageStr);
- return false;
- }
- }
-
-
- CCmdNetworkDisconnectClient::CCmdNetworkDisconnectClient():CCmd("network.disconnectClient"){
- usageStr="network.disconnectClient [id|name]";
- infoStr="disconnects a client";
- }
-
- CCmdNetworkDisconnectClient::~CCmdNetworkDisconnectClient(){
- if(console!=NULL)
- console->unregisterCCmd(this);
- }
-
- bool CCmdNetworkDisconnectClient::exec(int argc, char* argv[]){
- if(argc==1){
- if( !Network::wasServerInit() ){
- console->print("Server was not initialized.\n");
- return false;
- }
- if( Game::info.var.clientGame ){
- console->print("You cannot disconnect clients from a remote server.\n");
- return false;
- }
-
- int clientId = atoi(argv[0]);
- if( Network::server->clients[clientId] != NULL){
- if( Network::server->clients[clientId] != Network::server->localClient ){
- return Network::server->disconnectClient(Network::server->clients[clientId], "Disconnected by console command.");
- }else{
- console->print("You cannot disconnect yourself from a local server.\n");
- return false;
- }
- }else{
- console->print("clientId %i not in use.\n", clientId);
- return false;
- }
-
- return true;
- }else{
- console->print("usage: %s\n", usageStr);
- return false;
- }
- }
-
-