diff --git a/IRCSock.cpp b/IRCSock.cpp index 5fff4c53..cced6528 100644 --- a/IRCSock.cpp +++ b/IRCSock.cpp @@ -342,10 +342,18 @@ void CIRCSock::ReadLine(const string& sData) { CUtils::LeftChomp(sNewNick); } + vector vFoundChans; const vector& vChans = m_pUser->GetChans(); + for (unsigned int a = 0; a < vChans.size(); a++) { - if ((vChans[a]->ChangeNick(sNick, sNewNick)) && (!vChans[a]->IsDetached())) { - bIsVisible = true; + CChan* pChan = vChans[a]; + + if (pChan->ChangeNick(sNick, sNewNick)) { + vFoundChans.push_back(pChan); + + if (!pChan->IsDetached()) { + bIsVisible = true; + } } } @@ -359,7 +367,7 @@ void CIRCSock::ReadLine(const string& sData) { KeepNick(); } #ifdef _MODULES - m_pUser->GetModules().OnNick(sNickMask, sNewNick); + m_pUser->GetModules().OnNick(sNickMask, sNewNick, vFoundChans); #endif if (!bIsVisible) { @@ -376,10 +384,18 @@ void CIRCSock::ReadLine(const string& sData) { // :nick!ident@host.com QUIT :message CNick Nick(sNickMask); + vector vFoundChans; const vector& vChans = m_pUser->GetChans(); + for (unsigned int a = 0; a < vChans.size(); a++) { - if ((vChans[a]->RemNick(sNick)) && (!vChans[a]->IsDetached())) { - bIsVisible = true; + CChan* pChan = vChans[a]; + + if (pChan->RemNick(sNick)) { + vFoundChans.push_back(pChan); + + if (!pChan->IsDetached()) { + bIsVisible = true; + } } } @@ -388,7 +404,7 @@ void CIRCSock::ReadLine(const string& sData) { } #ifdef _MODULES - m_pUser->GetModules().OnQuit(Nick, sMessage); + m_pUser->GetModules().OnQuit(Nick, sMessage, vFoundChans); #endif if (!bIsVisible) { diff --git a/Modules.cpp b/Modules.cpp index ff5bbcf8..d18bf6cb 100644 --- a/Modules.cpp +++ b/Modules.cpp @@ -149,8 +149,8 @@ void CModule::OnModCommand(const string& sCommand) {} void CModule::OnModNotice(const string& sMessage) {} void CModule::OnModCTCP(const string& sMessage) {} -void CModule::OnQuit(const CNick& Nick, const string& sMessage) {} -void CModule::OnNick(const CNick& Nick, const string& sNewNick) {} +void CModule::OnQuit(const CNick& Nick, const string& sMessage, const vector vChans) {} +void CModule::OnNick(const CNick& Nick, const string& sNewNick, const vector vChans) {} void CModule::OnKick(const CNick& Nick, const string& sKickedNick, const CChan& Channel, const string& sMessage) {} void CModule::OnJoin(const CNick& Nick, const CChan& Channel) {} void CModule::OnPart(const CNick& Nick, const CChan& Channel) {} @@ -299,15 +299,15 @@ bool CModules::OnUserRaw(string& sLine) { return false; } -void CModules::OnQuit(const CNick& Nick, const string& sMessage) { +void CModules::OnQuit(const CNick& Nick, const string& sMessage, const vector vChans) { for (unsigned int a = 0; a < size(); a++) { - (*this)[a]->OnQuit(Nick, sMessage); + (*this)[a]->OnQuit(Nick, sMessage, vChans); } } -void CModules::OnNick(const CNick& Nick, const string& sNewNick) { +void CModules::OnNick(const CNick& Nick, const string& sNewNick, const vector vChans) { for (unsigned int a = 0; a < size(); a++) { - (*this)[a]->OnNick(Nick, sNewNick); + (*this)[a]->OnNick(Nick, sNewNick, vChans); } } diff --git a/Modules.h b/Modules.h index be7cc4bf..54ac7d83 100644 --- a/Modules.h +++ b/Modules.h @@ -8,7 +8,7 @@ using std::vector; using std::string; -#define VERSION 0.030 +#define VERSION 0.031 #define MODULEDEFS(CLASS) extern "C" { CModule* Load(void* p, CUser* pUser, const string& sModName); void Unload(CModule* pMod); double GetVersion(); } double GetVersion() { return VERSION; } CModule* Load(void* p, CUser* pUser, const string& sModName) { return new CLASS(p, pUser, sModName); } void Unload(CModule* pMod) { if (pMod) { delete pMod; } } #define MODCONSTRUCTOR(CLASS) CLASS(void *pDLL, CUser* pUser, const string& sModName) : CModule(pDLL, pUser, sModName) @@ -72,8 +72,8 @@ public: virtual void OnModNotice(const string& sMessage); virtual void OnModCTCP(const string& sMessage); - virtual void OnQuit(const CNick& Nick, const string& sMessage); - virtual void OnNick(const CNick& Nick, const string& sNewNick); + virtual void OnQuit(const CNick& Nick, const string& sMessage, const vector vChans); + virtual void OnNick(const CNick& Nick, const string& sNewNick, const vector vChans); virtual void OnKick(const CNick& Nick, const string& sOpNick, const CChan& Channel, const string& sMessage); virtual void OnJoin(const CNick& Nick, const CChan& Channel); virtual void OnPart(const CNick& Nick, const CChan& Channel); @@ -148,8 +148,8 @@ public: virtual void OnModNotice(const string& sMessage); virtual void OnModCTCP(const string& sMessage); - virtual void OnQuit(const CNick& Nick, const string& sMessage); - virtual void OnNick(const CNick& Nick, const string& sNewNick); + virtual void OnQuit(const CNick& Nick, const string& sMessage, const vector vChans); + virtual void OnNick(const CNick& Nick, const string& sNewNick, const vector vChans); virtual void OnKick(const CNick& Nick, const string& sOpNick, const CChan& Channel, const string& sMessage); virtual void OnJoin(const CNick& Nick, const CChan& Channel); virtual void OnPart(const CNick& Nick, const CChan& Channel); diff --git a/modules/sample.cpp b/modules/sample.cpp index 8a822a81..d324cf51 100644 --- a/modules/sample.cpp +++ b/modules/sample.cpp @@ -84,7 +84,7 @@ public: PutModule("[" + OpNick.GetNick() + "] kicked [" + sKickedNick + "] from [" + Channel.GetName() + "] with the msg [" + sMessage + "]"); } - virtual void OnQuit(const CNick& Nick, const string& sMessage) { + virtual void OnQuit(const CNick& Nick, const string& sMessage, const vector vChans) { PutModule("* Quits: " + Nick.GetNick() + " (" + Nick.GetIdent() + "!" + Nick.GetHost() + ") (" + sMessage + ")"); } @@ -96,7 +96,7 @@ public: PutModule("* Parts: " + Nick.GetNick() + " (" + Nick.GetIdent() + "!" + Nick.GetHost() + ")"); } - virtual void OnNick(const CNick& OldNick, const string& sNewNick) { + virtual void OnNick(const CNick& OldNick, const string& sNewNick, const vector vChans) { PutModule("* " + OldNick.GetNick() + " is now known as " + sNewNick); } diff --git a/modules/savebuff.cpp b/modules/savebuff.cpp index 2a5fef27..6016b3f7 100644 --- a/modules/savebuff.cpp +++ b/modules/savebuff.cpp @@ -26,6 +26,9 @@ * better solution then plain text. * * $Log$ + * Revision 1.15 2005/04/23 07:24:58 prozacx + * Changed OnNick() and OnQuit() to take a vector of common channels + * * Revision 1.14 2005/04/23 06:44:19 prozacx * Changed buffer playback messages to mirror engine behavior * @@ -289,18 +292,14 @@ public: { ((CChan &)cChannel).AddBuffer( SpoofChanMsg( cChannel.GetName(), cOpNick.GetNickMask() + " MODE " + sModes + " " + sArgs ) ); } - virtual void OnQuit(const CNick& cNick, const string& sMessage) + virtual void OnQuit(const CNick& cNick, const string& sMessage, const vector vChans) { - vector vChans; - cNick.GetCommonChans( vChans, m_pUser ); for( u_int a = 0; a < vChans.size(); a++ ) vChans[a]->AddBuffer( SpoofChanMsg( vChans[a]->GetName(), cNick.GetNickMask() + " QUIT " + sMessage ) ); } - virtual void OnNick(const CNick& cNick, const string& sNewNick) + virtual void OnNick(const CNick& cNick, const string& sNewNick, const vector vChans) { - vector vChans; - cNick.GetCommonChans( vChans, m_pUser ); for( u_int a = 0; a < vChans.size(); a++ ) vChans[a]->AddBuffer( SpoofChanMsg( vChans[a]->GetName(), cNick.GetNickMask() + " NICK " + sNewNick ) ); } diff --git a/modules/watch.cpp b/modules/watch.cpp index 34a9fa6b..beb49f20 100644 --- a/modules/watch.cpp +++ b/modules/watch.cpp @@ -190,7 +190,7 @@ public: Process(OpNick, "* " + OpNick.GetNick() + " kicked " + sKickedNick + " from " + Channel.GetName() + " because [" + sMessage + "]", Channel.GetName()); } - virtual void OnQuit(const CNick& Nick, const string& sMessage) { + virtual void OnQuit(const CNick& Nick, const string& sMessage, const vector vChans) { Process(Nick, "* Quits: " + Nick.GetNick() + " (" + Nick.GetIdent() + "@" + Nick.GetHost() + ") (" + sMessage + ")", ""); } @@ -202,7 +202,7 @@ public: Process(Nick, "* " + Nick.GetNick() + " (" + Nick.GetIdent() + "@" + Nick.GetHost() + ") parts " + Channel.GetName(), Channel.GetName()); } - virtual void OnNick(const CNick& OldNick, const string& sNewNick) { + virtual void OnNick(const CNick& OldNick, const string& sNewNick, const vector vChans) { Process(OldNick, "* " + OldNick.GetNick() + " is now known as " + sNewNick, ""); }