From: Borrillis <bor...@us...> - 2004-12-07 02:48:14
|
Update of /cvsroot/planeshift/planeshift/src/server In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32487/src/server Modified Files: advicemanager.cpp advicemanager.h client.cpp client.h gem.h usermanager.cpp usermanager.h Log Message: - AdvisorManager fixes/changes Index: advicemanager.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/advicemanager.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** advicemanager.cpp 6 Dec 2004 01:47:35 -0000 1.6 --- advicemanager.cpp 7 Dec 2004 02:48:02 -0000 1.7 *************** *** 39,127 **** #include "advicemanager.h" /****************************************************************************/ ! class psAdviceGameEvent : public psGEMEvent { protected: AdviceManager *advicemanager; public: [...968 lines suppressed...] ! } ! ! void AdviceManager::RemoveSession( AdviceSession * adviceSession) ! { ! AdviseeList.Delete( adviceSession ); ! delete adviceSession; ! } ! ! bool AdviceManager::GetAdvisorMode( int id, int connectionId ) ! { ! //Search loop that will found the right advisor nr in the advisors array and use it as an id ! for (size_t i = 0; i < advisors.Length(); i++) { ! if ( ( advisors[i].client_id == id ) ) ! return true; } + return false; } Index: advicemanager.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/advicemanager.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** advicemanager.h 28 Nov 2004 23:09:58 -0000 1.3 --- advicemanager.h 7 Dec 2004 02:48:02 -0000 1.4 *************** *** 19,24 **** ! #ifndef __AdviceMANAGER_H__ ! #define __AdviceMANAGER_H__ #include "net/messages.h" // Message definitions --- 19,24 ---- ! #ifndef __ADVICEMANAGER_H__ ! #define __ADVICEMANAGER_H__ #include "net/messages.h" // Message definitions *************** *** 28,35 **** #include "client.h" ! class psAdviceGameEvent; ! class psAdvisorTimeoutGameEvent; class Client; class psDatabase; #define ADVICE_QUESTION_TIMEOUT 60000 --- 28,37 ---- #include "client.h" ! class psAdviceRequestTimeoutGameEvent; ! class psAdviceSessionTimeoutGameEvent; class Client; class psDatabase; + class AdviceManager; + class AdviceSession; #define ADVICE_QUESTION_TIMEOUT 60000 *************** *** 50,112 **** }; - /** - * This class is the relationship of Advisor to Advicee. - */ - class AdviceSession - { - public: - int AdvisorClientNum; - int AdviseeClientNum; - Client *advisor, *advisee; - psAdviceGameEvent *event; - psAdvisorTimeoutGameEvent *timeoutEvent; - csString lastRequest; - size_t advisorPoints; - - AdviceSession(){ advisorPoints = 1;}; - - AdviceSession(Client *Advisor, - Client *Advisee, const char *request) - { - event = NULL; - timeoutEvent = NULL; - - advisorPoints = 1; - if (Advisor) - { - advisor = Advisor; - AdvisorClientNum = Advisor->GetClientNum(); - } - else - { - advisor = NULL; - AdvisorClientNum = -1; - } - if (Advisee) - { - advisee = Advisee; - AdviseeClientNum = Advisee->GetClientNum(); - } - else - { - advisee = NULL; - AdviseeClientNum = -1; - } - lastRequest = request; - }; - - virtual ~AdviceSession() {}; - - - int operator==(AdviceSession& other) const - { - return AdviseeClientNum == other.AdviseeClientNum; - }; - int operator<(AdviceSession& other) const - { - return (AdviseeClientNum < other.AdviseeClientNum); - }; - - }; --- 52,55 ---- *************** *** 141,149 **** void RemoveAdvisor(int id, int connectionId); ! /** Remove request for advice due to timeout. * * @param The session that has expired */ ! void CancelAdviceRequest(AdviceSession *adviceSession); /** Remove advise session due to timeout. --- 84,92 ---- void RemoveAdvisor(int id, int connectionId); ! /** Resend request for advice due to timeout. * * @param The session that has expired */ ! void AdviceRequestTimeout(AdviceSession *adviceSession); /** Remove advise session due to timeout. *************** *** 151,172 **** * @param The session that has expired */ ! void CancelAdvisorSession(AdviceSession *adviceSession); ! ! ! protected: ! void AdviceManager::HandleAdviceRequest( MsgEntry *me ); ! void AdviceManager::HandleAdviceResponse( MsgEntry *me ); ! /** Writes the request/advice to the database. ! * ! * @param playerID the person that gave the advice. ! * @param advice the advice that was given. ! * @param request the request that was sent for advice. * ! * @return true if database hit was successful. */ ! bool LogAdvice(int playerID, const char* advice, const char* request); BinaryRBTree<AdviceSession> AdviseeList; csArray<AdvisorStruct> advisors; --- 94,114 ---- * @param The session that has expired */ ! void CancelAdvisorSession(gemActor *who, AdviceSession *adviceSession, const char * msg ); ! void RemoveSession( AdviceSession *adviceSession); ! /** Retrieve the clients advisor mode * ! * @param id The id of the advisor to remove ( same as player ID ) ! * @param The client id that client dropping advisor role. */ ! bool GetAdvisorMode( int id, int connectionId ); + protected: + + void HandleAdviceRequest( Client *advisee, csString message ); + void HandleAdviceResponse( Client *advisee, csString sAdvisee, csString message ); + void HandleAdviceList( Client *advisor ); + BinaryRBTree<AdviceSession> AdviseeList; csArray<AdvisorStruct> advisors; Index: client.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/client.cpp,v retrieving revision 1.69 retrieving revision 1.70 diff -C2 -d -r1.69 -r1.70 *** client.cpp 13 Nov 2004 04:17:39 -0000 1.69 --- client.cpp 7 Dec 2004 02:48:02 -0000 1.70 *************** *** 51,55 **** actor = NULL; target = NULL; ! exchangeID = 0; } --- 51,56 ---- actor = NULL; target = NULL; ! exchangeID = 0; ! isAdvisor = false; } *************** *** 59,62 **** --- 60,64 ---- valid=true; // necessary for key search of bin tree clientnum=0; + isAdvisor = false; } Index: client.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/client.h,v retrieving revision 1.58 retrieving revision 1.59 diff -C2 -d -r1.58 -r1.59 *** client.h 13 Nov 2004 04:17:40 -0000 1.58 --- client.h 7 Dec 2004 02:48:02 -0000 1.59 *************** *** 232,236 **** /// Set this client's advisor status void SetAdvisor( bool advisor ) { isAdvisor = advisor; } ! /// For cheat detection csTicks accumulatedLag; --- 232,236 ---- /// Set this client's advisor status void SetAdvisor( bool advisor ) { isAdvisor = advisor; } ! bool GetAdvisor() { return isAdvisor; }; /// For cheat detection csTicks accumulatedLag; Index: gem.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/gem.h,v retrieving revision 1.58 retrieving revision 1.59 diff -C2 -d -r1.58 -r1.59 *** gem.h 23 Nov 2004 12:10:06 -0000 1.58 --- gem.h 7 Dec 2004 02:48:02 -0000 1.59 *************** *** 532,536 **** // Register for disconnect events ! dependency->Register(this); } --- 532,539 ---- // Register for disconnect events ! if ( dependency ) ! { ! dependency->Register(this); ! } } Index: usermanager.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/usermanager.cpp,v retrieving revision 1.164 retrieving revision 1.165 diff -C2 -d -r1.164 -r1.165 *** usermanager.cpp 24 Nov 2004 04:51:13 -0000 1.164 --- usermanager.cpp 7 Dec 2004 02:48:02 -0000 1.165 *************** *** 337,348 **** Assist( msg, client, me->clientnum ); } else if (msg.command == "/advisormode") { Advisor(client, me->clientnum, msg); } ! //else if (msg.command == "/advice") ! //{ ! // GiveAdvice(me->clientnum, msg.filter.GetData()); ! //} else if (msg.command == "/tip") { --- 337,347 ---- Assist( msg, client, me->clientnum ); } + + /* else if (msg.command == "/advisormode") { Advisor(client, me->clientnum, msg); } ! */ else if (msg.command == "/tip") { *************** *** 1142,1165 **** - - /*Some functions for the advisor system - */ - - void UserManager::Advisor(Client* client, int connectionId, psUserCmdMessage& msg) - { - // TODO: Add anoymous flag to command. - - if ( msg.filter == "on") - { - psserver->GetAdviceManager()->AddAdvisor(client->GetClientNum(), connectionId); - } - else if ( msg.filter == "off") - { - psserver->GetAdviceManager()->RemoveAdvisor(client->GetClientNum(), connectionId); - } - - } - - void UserManager::GiveTip(int id) { --- 1141,1144 ---- Index: usermanager.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/usermanager.h,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** usermanager.h 13 Nov 2004 01:24:32 -0000 1.38 --- usermanager.h 7 Dec 2004 02:48:02 -0000 1.39 *************** *** 215,230 **** void HandleQuests(Client *client); - - /** Used to let a client make/remove themselves as advisors. - * - * @param Client The client object of the player that wants to be an advisor. - * @param connectionID The client id for the player. - * @msg The command message from the client. - * - * The command message is looked at to see if it is /advisor on or - * /advisor off to determine what to do. - */ - void Advisor(Client* client, int connectionId, psUserCmdMessage& msg); - /** Give a tip from the database to the client * --- 215,218 ---- |