ClientAdmin.cpp

Go to the documentation of this file.
00001 ////////////////////////////////////////////////////////////////////////////////
00002 //    Scorched3D (c) 2000-2009
00003 //
00004 //    This file is part of Scorched3D.
00005 //
00006 //    Scorched3D is free software; you can redistribute it and/or modify
00007 //    it under the terms of the GNU General Public License as published by
00008 //    the Free Software Foundation; either version 2 of the License, or
00009 //    (at your option) any later version.
00010 //
00011 //    Scorched3D is distributed in the hope that it will be useful,
00012 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014 //    GNU General Public License for more details.
00015 //
00016 //    You should have received a copy of the GNU General Public License
00017 //    along with Scorched3D; if not, write to the Free Software
00018 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019 ////////////////////////////////////////////////////////////////////////////////
00020 
00021 #include <client/ClientAdmin.h>
00022 #include <client/ScorchedClient.h>
00023 #include <client/ClientChannelManager.h>
00024 #include <client/ClientAdminResultHandler.h>
00025 #include <tank/TankContainer.h>
00026 #include <console/Console.h>
00027 #include <coms/ComsMessageSender.h>
00028 #include <coms/ComsAdminMessage.h>
00029 #include <common/Defines.h>
00030 
00031 ClientAdmin *ClientAdmin::instance_ = 0;
00032 
00033 ClientAdmin *ClientAdmin::instance()
00034 {
00035         if (!instance_)
00036         {
00037                 instance_ = new ClientAdmin();
00038         }
00039         return instance_;
00040 }
00041 
00042 ClientAdmin::ClientAdmin() 
00043 {
00044         // Help
00045         new ConsoleRuleMethodIAdapter<ClientAdmin>(
00046                 this, &ClientAdmin::adminHelp, "admin", 
00047                 ConsoleUtil::formParams(ConsoleRuleParam("help")));
00048 
00049         // No Params
00050         new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00051                 this, &ClientAdmin::adminNoParams, "admin", 
00052                 ConsoleUtil::formParams(ConsoleRuleParam("killall")),
00053                 (unsigned int) ComsAdminMessage::AdminKillAll);
00054         new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00055                 this, &ClientAdmin::adminNoParams, "admin", 
00056                 ConsoleUtil::formParams(ConsoleRuleParam("newgame")),
00057                 (unsigned int) ComsAdminMessage::AdminNewGame);
00058         new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00059                 this, &ClientAdmin::adminNoParams, "admin", 
00060                 ConsoleUtil::formParams(ConsoleRuleParam("showbanned")),
00061                 (unsigned int) ComsAdminMessage::AdminShowBanned);
00062         new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00063                 this, &ClientAdmin::adminNoParams, "admin", 
00064                 ConsoleUtil::formParams(ConsoleRuleParam("show")),
00065                 (unsigned int) ComsAdminMessage::AdminShow);
00066         new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00067                 this, &ClientAdmin::adminNoParams, "admin", 
00068                 ConsoleUtil::formParams(ConsoleRuleParam("logout")),
00069                 (unsigned int) ComsAdminMessage::AdminLogout);
00070         new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00071                 this, &ClientAdmin::adminNoParams, "admin", 
00072                 ConsoleUtil::formParams(ConsoleRuleParam("synccheck")),
00073                 (unsigned int) ComsAdminMessage::AdminSyncCheck);
00074 
00075         // One Number Param 
00076         new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00077                 this, &ClientAdmin::adminOneParam, "admin", 
00078                 ConsoleUtil::formParams(ConsoleRuleParam("kick"), 
00079                 ConsoleRuleParam("player", ConsoleRuleTypeNumber)),
00080                 (unsigned int) ComsAdminMessage::AdminKick);
00081         new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00082                 this, &ClientAdmin::adminOneParam, "admin", 
00083                 ConsoleUtil::formParams(ConsoleRuleParam("ban"), 
00084                 ConsoleRuleParam("player", ConsoleRuleTypeNumber)),
00085                 (unsigned int) ComsAdminMessage::AdminBan);
00086         new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00087                 this, &ClientAdmin::adminOneParam, "admin", 
00088                 ConsoleUtil::formParams(ConsoleRuleParam("flag"), 
00089                 ConsoleRuleParam("player", ConsoleRuleTypeNumber)),
00090                 (unsigned int) ComsAdminMessage::AdminFlag);
00091         new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00092                 this, &ClientAdmin::adminOneParam, "admin", 
00093                 ConsoleUtil::formParams(ConsoleRuleParam("mute"), 
00094                 ConsoleRuleParam("player", ConsoleRuleTypeNumber)),
00095                 (unsigned int) ComsAdminMessage::AdminMute);
00096         new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00097                 this, &ClientAdmin::adminOneParam, "admin", 
00098                 ConsoleUtil::formParams(ConsoleRuleParam("permmute"), 
00099                 ConsoleRuleParam("player", ConsoleRuleTypeNumber)),
00100                 (unsigned int) ComsAdminMessage::AdminPermMute);
00101         new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00102                 this, &ClientAdmin::adminOneParam, "admin", 
00103                 ConsoleUtil::formParams(ConsoleRuleParam("unpermmute"), 
00104                 ConsoleRuleParam("player", ConsoleRuleTypeNumber)),
00105                 (unsigned int) ComsAdminMessage::AdminUnPermMute);
00106         new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00107                 this, &ClientAdmin::adminOneParam, "admin", 
00108                 ConsoleUtil::formParams(ConsoleRuleParam("unmute"), 
00109                 ConsoleRuleParam("player", ConsoleRuleTypeNumber)),
00110                 (unsigned int) ComsAdminMessage::AdminUnMute);
00111         new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00112                 this, &ClientAdmin::adminOneParam, "admin", 
00113                 ConsoleUtil::formParams(ConsoleRuleParam("poor"), 
00114                 ConsoleRuleParam("player", ConsoleRuleTypeNumber)),
00115                 (unsigned int) ComsAdminMessage::AdminPoor);
00116 
00117         // One String Param
00118         new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00119                 this, &ClientAdmin::adminOneParam, "admin", 
00120                 ConsoleUtil::formParams(ConsoleRuleParam("talk"), 
00121                 ConsoleRuleParam("text", ConsoleRuleTypeString)),
00122                 (unsigned int) ComsAdminMessage::AdminTalk);
00123         new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00124                 this, &ClientAdmin::adminOneParam, "admin", 
00125                 ConsoleUtil::formParams(ConsoleRuleParam("admintalk"), 
00126                 ConsoleRuleParam("text", ConsoleRuleTypeString)),
00127                 (unsigned int) ComsAdminMessage::AdminAdminTalk);
00128         new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00129                 this, &ClientAdmin::adminOneParam, "admin", 
00130                 ConsoleUtil::formParams(ConsoleRuleParam("message"), 
00131                 ConsoleRuleParam("text", ConsoleRuleTypeString)),
00132                 (unsigned int) ComsAdminMessage::AdminMessage);
00133         new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00134                 this, &ClientAdmin::adminOneParam, "admin", 
00135                 ConsoleUtil::formParams(ConsoleRuleParam("add"), 
00136                 ConsoleRuleParam("playertype", ConsoleRuleTypeString)),
00137                 (unsigned int) ComsAdminMessage::AdminAdd);
00138 
00139         // Two Number Params
00140         new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00141                 this, &ClientAdmin::adminTwoParam, "admin", 
00142                 ConsoleUtil::formParams(ConsoleRuleParam("slap"), 
00143                 ConsoleRuleParam("player", ConsoleRuleTypeNumber),
00144                 ConsoleRuleParam("amount", ConsoleRuleTypeNumber)),
00145                 (unsigned int) ComsAdminMessage::AdminSlap);
00146 
00147         // Two String Params
00148         new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00149                 this, &ClientAdmin::adminTwoParam, "admin", 
00150                 ConsoleUtil::formParams(ConsoleRuleParam("login"), 
00151                 ConsoleRuleParam("username", ConsoleRuleTypeString),
00152                 ConsoleRuleParam("password", ConsoleRuleTypeString)),
00153                 (unsigned int) ComsAdminMessage::AdminLogin);
00154         new ConsoleRuleMethodIAdapterEx2<ClientAdmin>(
00155                 this, &ClientAdmin::adminNoParams, "admin", 
00156                 ConsoleUtil::formParams(ConsoleRuleParam("login")),
00157                 (unsigned int) ComsAdminMessage::AdminLogin);
00158 }
00159 
00160 ClientAdmin::~ClientAdmin()
00161 {
00162 
00163 }
00164 
00165 void ClientAdmin::adminNoParams(std::vector<ConsoleRuleValue> &values, 
00166         unsigned int userData)
00167 {
00168         ComsAdminMessage::ComsAdminMessageType type = 
00169                 (ComsAdminMessage::ComsAdminMessageType) userData;
00170 
00171         unsigned int sid = ClientAdminResultHandler::instance()->getSid();
00172         ComsAdminMessage message(sid, type);
00173         ComsMessageSender::sendToServer(message);
00174 
00175         if (type == ComsAdminMessage::AdminLogout)
00176         {
00177                 ClientChannelManager::instance()->removeChannel("admin");
00178         }
00179         else if (type == ComsAdminMessage::AdminLogin)
00180         {
00181                 ClientChannelManager::instance()->addChannel("general", "admin");
00182         }
00183 }
00184 
00185 void ClientAdmin::adminOneParam(std::vector<ConsoleRuleValue> &values, 
00186         unsigned int userData)
00187 {
00188         ComsAdminMessage::ComsAdminMessageType type = 
00189                 (ComsAdminMessage::ComsAdminMessageType) userData;
00190 
00191         ConsoleRuleValue param = values[2];
00192 
00193         unsigned int sid = ClientAdminResultHandler::instance()->getSid();
00194         ComsAdminMessage message(sid, type, param.valueString.c_str());
00195         ComsMessageSender::sendToServer(message);
00196 }
00197 
00198 void ClientAdmin::adminTwoParam(std::vector<ConsoleRuleValue> &values, 
00199         unsigned int userData)
00200 {
00201         ComsAdminMessage::ComsAdminMessageType type = 
00202                 (ComsAdminMessage::ComsAdminMessageType) userData;
00203 
00204         ConsoleRuleValue param1 = values[2];
00205         ConsoleRuleValue param2 = values[3];
00206 
00207         unsigned int sid = ClientAdminResultHandler::instance()->getSid();
00208         ComsAdminMessage message(sid, type, 
00209                 param1.valueString.c_str(), param2.valueString.c_str());
00210         ComsMessageSender::sendToServer(message);
00211 
00212         if (type == ComsAdminMessage::AdminLogin)
00213         {
00214                 ClientChannelManager::instance()->addChannel("general", "admin");
00215         }
00216 }
00217 
00218 void ClientAdmin::adminHelp()
00219 {
00220         Console::instance()->addLine(false, "  help - This help");
00221         Console::instance()->addLine(false, "  login <username> <password> - Login as admin");
00222         Console::instance()->addLine(false, "  logout - Logoff as admin");
00223         Console::instance()->addLine(false, "  show - Show ids for all current players");
00224         Console::instance()->addLine(false, "  showbanned - Shows all banned/perm muted players");
00225         Console::instance()->addLine(false, "  killall - Kills all current players and starts next round");
00226         Console::instance()->addLine(false, "  newgame - Kills all current players and starts new game");       
00227         Console::instance()->addLine(false, "  kick <player id> - Kicks specified player");
00228         Console::instance()->addLine(false, "  ban <player id> - Bans and kicks specified player");
00229         Console::instance()->addLine(false, "  poor <player id> - Removes all money from player");
00230         Console::instance()->addLine(false, "  mute <player id> - Mutes specified player for everyone");
00231         Console::instance()->addLine(false, "  flag <player id> - Flags specified player for all admins");
00232         Console::instance()->addLine(false, "  unmute <player id> - Un-mutes specified player for everyone");
00233         Console::instance()->addLine(false, "  permmute <player id> - Mutes specified player for everyone perminantly");
00234         Console::instance()->addLine(false, "  unpermmute <player id> - Un-Mutes specified player for everyone perminantly");
00235         Console::instance()->addLine(false, "  slap <player id> <health> - Removes health from specified player");
00236         Console::instance()->addLine(false, "  talk <text> - Admin talk to all players (white with no name)");
00237         Console::instance()->addLine(false, "  admintalk <text> - Admin talk to all admin players only");
00238         Console::instance()->addLine(false, "  message <text> - Message to all players (yellow in center of screen)");
00239         Console::instance()->addLine(false, "  synccheck - Check client landscape is in sync with server");
00240 }

Generated on Mon Feb 16 15:14:36 2009 for Scorched3D by  doxygen 1.5.3