bool CJobChange::ReceiveMessage(CN3UIBase* pSender, uint32_t dwMsg)
{
#define MIN_LEVEL 10
#define MAX_LEVEL 83
enum class Class {
Warrior = 1,
Rogue = 2,
Priest = 3,
Mage = 4
};
if (dwMsg == UIMSG_BUTTON_CLICK) {
if (Engine->m_PlayerBase == NULL)
return false;
if (Engine->m_PlayerBase->GetLevel() < MIN_LEVEL
|| Engine->m_PlayerBase->GetLevel() > MAX_LEVEL) {
Close();
if (Engine->m_PlayerBase->GetLevel() < MIN_LEVEL)
Engine->m_UiMgr->ShowMessageBox(xorstr("Job Change Failed"), xorstr("You do not have enough level. You must be a least 10 level."), Ok);
else if (Engine->m_PlayerBase->GetLevel() > MAX_LEVEL)
Engine->m_UiMgr->ShowMessageBox(xorstr("Job Change Failed"), xorstr("You cannot use this feature.You must be level 83 maximum."), Ok);
return false;
}
if (pSender == btn_warrior) {
if (!Engine->m_PlayerBase->isRogue()
&& !Engine->m_PlayerBase->isMage()
&& !Engine->m_PlayerBase->isPriest()) {
Close();
Engine->m_UiMgr->ShowMessageBox(xorstr("Failed"), xorstr("You cannot select the same job again. Please choose a different job."), Ok);
return false;
}
Packet test(WIZ_GUARD_HOOK, uint8(GGACSOpCodes::WIZ_JOBCHANGE));
test << uint8(Class::Warrior) << Engine->m_PlayerBase->GetClass();
Engine->Send(&test);
}
else if (pSender == btn_rogue) {
if (!Engine->m_PlayerBase->isWarrior()
&& !Engine->m_PlayerBase->isMage()
&& !Engine->m_PlayerBase->isPriest()) {
Close();
Engine->m_UiMgr->ShowMessageBox(xorstr("Failed"), xorstr("You cannot select the same job again. Please choose a different job."), Ok);
return false;
}
Packet test(WIZ_GUARD_HOOK, uint8(GGACSOpCodes::WIZ_JOBCHANGE));
test << uint8(Class::Rogue) << Engine->m_PlayerBase->GetClass();
Engine->Send(&test);
}
else if (pSender == btn_priest) {
if (!Engine->m_PlayerBase->isWarrior()
&& !Engine->m_PlayerBase->isMage()
&& !Engine->m_PlayerBase->isRogue()) {
Close();
Engine->m_UiMgr->ShowMessageBox(xorstr("Failed"), xorstr("You cannot select the same job again. Please choose a different job."), Ok);
return false;
}
Packet test(WIZ_GUARD_HOOK, uint8(GGACSOpCodes::WIZ_JOBCHANGE));
test << uint8(Class::Priest) << Engine->m_PlayerBase->GetClass();
Engine->Send(&test);
}
else if (pSender == btn_mage) {
if (!Engine->m_PlayerBase->isWarrior()
&& !Engine->m_PlayerBase->isPriest()
&& !Engine->m_PlayerBase->isRogue()) {
Close();
Engine->m_UiMgr->ShowMessageBox(xorstr("Failed"), xorstr("You cannot select the same job again. Please choose a different job."), Ok);
return false;
}
Packet test(WIZ_GUARD_HOOK, uint8(GGACSOpCodes::WIZ_JOBCHANGE));
test << uint8(Class::Mage) << Engine->m_PlayerBase->GetClass();
Engine->Send(&test);
}
else if (pSender == btn_close) {
Close();
}
}
return true;
}