From: Keith F. <ven...@us...> - 2002-02-25 09:00:12
|
Update of /cvsroot/planeshift/planeshift/src/server In directory usw-pr-cvs1:/tmp/cvs-serv30649 Added Files: guildmanager.h guildmanager.cpp Log Message: Guild manager handles incoming guild command requests from clients. --- NEW FILE: guildmanager.h --- /* guildmanager.h * (c) Keith Fulton 2002 <ke...@pa...> * * This implements the guild command handler which handles guild creation, * deletion, invites, etc. */ #ifndef __GUILDMANAGER_H__ #define __GUILDMANAGER_H__ #include "net/messages.h" // Message definitions #include "net/msghandler.h" // Network access #include "net/client.h" // Client, and ClientConnectionSet classes #include "interface/subscriber.h" // Subscriber class #include "iserver/database.h" // Database class GuildManager : public iNetSubscriber { public: SCF_DECLARE_IBASE; GuildManager(MsgHandler *mh,ClientConnectionSet *pCCS,ipsDatabase *db); virtual ~GuildManager(); virtual void HandleMessage(MsgEntry *pMsg); protected: void CreateGuild(psGuildCmdMessage& msg,Client *client,int clientnum); MsgHandler* msghandler; ClientConnectionSet* clients; ipsDatabase *database; }; #endif --- NEW FILE: guildmanager.cpp --- /* guildmanager.cpp * (c) 2002 Keith Fulton <ke...@pa...> */ #include "config.h" #include <string.h> #include <malloc.h> #include <iostream.h> #include "serverconsole.h" #include "guildmanager.h" #include "net/netthread.h" #include "util/pserror.h" SCF_IMPLEMENT_IBASE( GuildManager ) SCF_IMPLEMENTS_INTERFACE( iNetSubscriber ) SCF_IMPLEMENT_IBASE_END GuildManager::GuildManager(MsgHandler *mh, ClientConnectionSet *cs, ipsDatabase *db) { SCF_CONSTRUCT_IBASE(0); msghandler = mh; clients = cs; database = db; msghandler->Subscribe(MSGTYPEGUILDCMD, this); } GuildManager::~GuildManager() { if (msghandler) msghandler->Unsubscribe(MSGTYPEGUILDCMD, this); } void GuildManager::HandleMessage(MsgEntry *me) { psGuildCmdMessage msg(me); Client *client = clients->Find(me->clientnum); if (!msg.valid) { psSystemMessage newmsg(me->clientnum,"Command not supported by server yet."); msghandler->SendMessage(newmsg.msg); return; } if (!client) { psSystemMessage newmsg(me->clientnum,"Origination client connection not found."); msghandler->SendMessage(newmsg.msg); return; } if (msg.command == "/newguild") { CreateGuild(msg,client,me->clientnum); } else { psSystemMessage newmsg(me->clientnum,"Command not supported by server yet."); msghandler->SendMessage(newmsg.msg); } } void GuildManager::CreateGuild(psGuildCmdMessage& msg,Client *client,int clientnum) { int iRet = database->CreateGuild(msg.guildname, client->GetPlayerName() ); switch (iRet) { case 0: { psSystemMessage newmsg(clientnum,"Guild created successfully.\n"); msghandler->SendMessage(newmsg.msg); break; } case 1: { psSystemMessage newmsg(clientnum,"That guildname already exists.\n"); msghandler->SendMessage(newmsg.msg); break; } case 2: { psSystemMessage newmsg(clientnum,"That leader name was not found.\n"); msghandler->SendMessage(newmsg.msg); break; } default: { psSystemMessage newmsg(clientnum,"SQL Error: %s\n",database->GetLastError()); msghandler->SendMessage(newmsg.msg); break; } } return; } |