Files
Sun1602/Client/GameClient/Interface/uiGuildMain/uiGuildMain_dialogproc.cpp
T
2022-10-26 12:25:11 +08:00

460 lines
12 KiB
C++

//------------------------------------------------------------------------------
// uiGuildMain_dialogproc.cpp
// (C) 2005 ckbang
//------------------------------------------------------------------------------
#include "SunClientPrecompiledHeader.h"
#ifdef _NA_003923_20120217_GUILD_RENEWAL_UI_GUILD_MANAGER
#else
#include "uiGuildMain.h"
#include "BattleRoomEntry.h"
#include "BattleEntryTable.h"
#include "MapInfoParser.h"
#include "BattleScene.h"
#include "Hero.h"
#include "ChatDialog.h"
#include "uiBattleZonePassword/uiBattleZonePassword.h"
#include "map.h"
#include "uiGuildMan/uiGuildMan.h"
#include "Input.h"
#include "ObjectManager.h"
#include "Mouse.h"
#include "interfacemanager.h"
#include "globalfunc.h"
#include "uiGuildNotice/uiGuildNotice.h"
#include "uiGuildRightDelegation/uiGuildRightDelegation.h"
#include "uiGuildDutyVest/uiGuildDutyVest.h"
#include "uiGuildAlliance/uiGuildAlliance.h"
#include "uiCommunityInfo/uiCommunityInfo.h"
#include "uiCommunityMan/uiCommunityMan.h"
#include "GuildRightInfoParser.h"
//------------------------------------------------------------------------------
WzID uiGuildMain::m_wzId[DIALOG_MAX] =
{
StrToWzID("L001"), // DLGPOS_LST_MEMBERS,
StrToWzID("ST00"), // DLGPOS_TXT_CURRENT_SELECT
StrToWzID("ST01"), // DLGPOS_TXT_NUMBER_OF_GUILDMEMBER
StrToWzID("LS00"), // DLGPOS_LST_CORP
StrToWzID("TI00"), //DLGPOS_BTN_SORT_NAME,
StrToWzID("TI01"), //DLGPOS_BTN_SORT_LEVEL,
StrToWzID("TI02"), //DLGPOS_BTN_SORT_CLASS,
StrToWzID("TI11"), //DLGPOS_BTN_SORT_DUTY,
StrToWzID("TI03"), //DLGPOS_BTN_SORT_CONNECT,
StrToWzID("C001"), // DLGPOS_CHKBTN_MEMBER_INFOS
StrToWzID("C002"), // DLGPOS_CHKBTN_GUILD_INFO
StrToWzID("C003"), // DLGPOS_CHKBTN_GUILD_STYLE
StrToWzID("C004"), // DLGPOS_CHKBTN_GUILD_MAN
StrToWzID("B999"), // DLGPOS_BTN_EXIT,
StrToWzID("TI05"), // DLGPOS_BTN_GUILD_INVITE,
StrToWzID("TI06"), // DLGPOS_BTN_GUILD_DELETE,
StrToWzID("TI08"), // DLGPOS_BTN_GUILD_EXIT,
StrToWzID("TI10"), // DLGPOS_BTN_GUILD_NOTICE,
StrToWzID("TI14"), // DLGPOS_BTN_DUTY_VEST,
StrToWzID("TI04"), // DLGPOS_BTN_GUILD_RELATIONSHIP
StrToWzID("TI07"), // DLGPOS_BTN_GUILD_MASTER_DELEGATION
StrToWzID("TI12"), // DLGPOS_BTN_GUILD_MEMBER_RIGHT_INFO
StrToWzID("TI13"), // DLGPOS_BTN_GUILD_CORP_CHANGE
StrToWzID("BT00"), // DLGPOS_BTN_CORP_LIST
StrToWzID("TI09"), // DLGPOS_BTN_RIGHT_DELEGATION,
StrToWzID("VS00"), // DLGPOS_SCR_VERTICAL,
};
//------------------------------------------------------------------------------
/**
called to show request
*/
void
uiGuildMain::OnShowWindow( BOOL val )
{
if (val)
{
if (!this->m_bControlsInitialized)
{
this->ShowInterface(FALSE);
return;
}
//m_bShow = true;
keyMsg msg;
ZeroMemory(&msg,sizeof(msg));
msg.dwType = eDoType_dialog_guild_main;
msg.wParam = InterfaceManager::DIALOG_GUILD_MAIN;
msg.DoSomething = GlobalFunc::DoGuildMain;
g_KeyQueueManager.PushBack(msg);
if (m_pScrollControl)
{
m_pScrollControl->SetScrollPosWZ(last_scrollbar_position());
}
SetListCaption();
m_pListCorps->ShowWindowWZ(WZ_HIDE);
}
else
{
//m_bShow = false;
if (m_pScrollControl)
{
set_last_scrollbar_position(m_pScrollControl->GetScrollPosWZ());
}
uiCommunityMan* community_man = static_cast<uiCommunityMan*>(g_InterfaceManager.GetUserInterfaceManager(UIMAN_COMMUNITY));
if ((community_man != NULL) &&
( community_man->GetCommunityinfo_Dialog() != NULL))
{
if (community_man->GetCommunityinfo_Dialog()->request_uimanager_id() == UIMAN_GUILD)
{
community_man->GetCommunityinfo_Dialog()->ShowInterface(val);
}
}
g_KeyQueueManager.DeleteMsg(eDoType_dialog_guild_main);
}
}
//------------------------------------------------------------------------------
/**
*/
void
uiGuildMain::MessageProc( SI_MESSAGE * pMessage )
{
if (this->IsLock())
return;
switch( pMessage->eResultMsg )
{
case RT_MSG_LBUTTONCLICK:
{
switch( getCtrlIDToPos( pMessage->dwCtrlID ) )
{
case DLGPOS_CHKBTN_GUILD_INFO:
{
//this->ShowInterface(FALSE);
//GET_DIALOG(IM_GUILD_MANAGER::GUILD_WINDOW)->ShowInterface(TRUE);
GetManager()->ChangeTab(GET_DIALOG(IM_GUILD_MANAGER::GUILD_WINDOW));
}
break;
case DLGPOS_BTN_EXIT:
{
if (GetManager())
{
GetManager()->set_active_tab(this);
}
ShowInterfaceWithSound(FALSE);
//m_bShow = FALSE;
}
break;
// 길드 초대
case DLGPOS_BTN_GUILD_INVITE:
{
if(GetManager())
{
GetManager()->Invite(NULL);
}
}
break;
// 길드 제명
case DLGPOS_BTN_GUILD_DELETE:
{
int start = this->m_pScrollControl->GetScrollPosWZ();
int cursel = this->m_pLstControl->GetCurSel();
if (cursel >= 0)
{
int iIndex = start + cursel;
VEC_GUILD_MEMBER & rGuildMembers = const_cast<VEC_GUILD_MEMBER &> (GetManager()->GetGuildMembers());
if(rGuildMembers.size() < static_cast<size_t>(iIndex + 1))
return;
stGUILD_MEMBER_INFO * member = GetSelectedPacketForGuildMember();
if (member)
{
if(GetManager())
{
TCHAR tszKickCharName[MAX_CHARNAME_LENGTH+1] = {0,};
StrnCopy(tszKickCharName, member->m_tszCharName, MAX_CHARNAME_LENGTH);
GetManager()->Kick(tszKickCharName);
}
}
}
}
break;
// 길드 탈퇴
case DLGPOS_BTN_GUILD_EXIT:
{
if(GetManager())
{
GetManager()->Withdraw();
}
}
break;
case DLGPOS_BTN_GUILD_NOTICE:
{
// 길드 공지 창 띄우기
OpenGuildNotice();
}
break;
case DLGPOS_BTN_DUTY_VEST: //직책 부여
{
OnClickDutyVest();
}
break;
case DLGPOS_BTN_RIGHT_DELEGATION: //권한 위임
{
OnClickRightDelegation();
}
break;
case DLGPOS_BTN_GUILD_MASTER_DELEGATION: // 길드 마스터 위임
{
OnClickGuildMasterDelegation();
}
break;
case DLGPOS_BTN_GUILD_MEMBER_RIGHT_INFO: // 길드 멤버 권한 정보
{
OnClickGuildMemberRightInfo();
}
break;
case DLGPOS_BTN_GUILD_CORP_CHANGE:
{
OnClickGuildCropChange();
}
break;
case DLGPOS_BTN_CORP_LIST:
{
if( m_pListCorps )
{
ENUM_STATEWZ eState = m_pListCorps->GetState() == WZ_SHOW ?WZ_HIDE : WZ_SHOW;
if( eState == WZ_SHOW )
InsertAllCorps();
m_pListCorps->ShowWindowWZ(eState);
}
}
break;
case DLGPOS_LST_CORP:
{
if( m_pListCorps->GetCurSel() != -1)
{
int iCurSel = m_pListCorps->GetCurSel();
byte * pData = (byte *)m_pListCorps->GetItemData(iCurSel);
m_iCurSelCorps = *pData;
m_pScrollControl->SetScrollPosWZ(0);
SetListCaption();
}
m_pListCorps->ShowWindowWZ(WZ_HIDE);
}
break;
case DLGPOS_BTN_SORT_NAME:
{
GetManager()->SortMember(eSORT_NAME);
}
break;
case DLGPOS_BTN_SORT_LEVEL:
{
GetManager()->SortMember(eSORT_LV);
}
break;
case DLGPOS_BTN_SORT_CLASS:
{
GetManager()->SortMember(eSORT_CLASS);
}
break;
case DLGPOS_BTN_SORT_DUTY:
{
GetManager()->SortMember(eSORT_DUTY);
}
break;
case DLGPOS_BTN_SORT_CONNECT:
{
GetManager()->SortMember(eSORT_CONNETION);
}
break;
case DLGPOS_BTN_GUILD_RELATIONSHIP:
{
BOOL right_by_grade = GuildRightInfoParser::Instance()->CheckGradeForRight(
eGUILD_RIGHTS_RELATION, GetManager()->GetGuildInfo().m_GuildGrade);
if (right_by_grade == FALSE)
{
TCHAR szMessage[INTERFACE_STRING_LENGTH + 1] = {0,};
//7207 레벨이 낮아 해당 기능 사용 못한다.
g_InterfaceManager.GetInterfaceString(7207, szMessage);
GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, szMessage);
}
else
{
MSG_CG_GUILD_ADD_INFO_SYN SendMsg;
GlobalFunc::SendPacket(CI_GAMESERVERIDX, &SendMsg, sizeof(SendMsg));
uiBase * pGuildAlliance = GET_DIALOG( IM_GUILD_MANAGER::GUILD_ALLIANCE );
if(pGuildAlliance)
{
pGuildAlliance->ShowInterface(TRUE);
}
}
}
break;
}
}
break;
case RT_MSG_LBUTTONDCLICK:
{
OnLDoubleButtonClick(pMessage);
}
break;
default:
{
SolarDialog::MessageProc( pMessage );
}
break;
case RT_MSG_SB_PAGETOP: //. 윗쪽 몸통을 눌렀다.
case RT_MSG_SB_LINETOP:
{
//.윗쪽 화살표를 눌렀다.
int pos = this->m_pScrollControl->GetScrollPosWZ(); // 현재 스크롤 값을 받아 온다.
int mmin = 0 , mmax = 0;
this->m_pScrollControl->GetScrollRangeWZ( &mmin, &mmax ); // 스크롤 값의 최대 최소를 얻어 온다.
if(pos>mmin) // 현재 입력된 라인수 보다 작으면
{
int nSkipLevel=m_MaxPage/2;//반페이지이동
( (pos-nSkipLevel)<mmin ? (pos=mmin):(pos-=nSkipLevel));
this->m_pScrollControl->SetScrollPosWZ(pos);
}
}
break;
case RT_MSG_SB_PAGEBOTTOM: //아랫쪽 몸통을 눌렀다.
case RT_MSG_SB_LINEBOTTOM:
{
//.아랫쪽 화살표를 눌렀다
int pos = this->m_pScrollControl->GetScrollPosWZ(); // 현재 스크롤 값을 받아 온다.
int mmin = 0 , mmax = 0;
this->m_pScrollControl->GetScrollRangeWZ( &mmin, &mmax ); // 스크롤 값의 최대 최소를 얻어 온다.
if(pos<mmax) // 현재 입력된 라인수 보다 작으면
{
int nSkipLevel=m_MaxPage/2;//반페이지이동
( (pos+nSkipLevel)>mmax ? (pos=mmax):(pos+=nSkipLevel));
this->m_pScrollControl->SetScrollPosWZ(pos);
}
}
break;
}
}
//------------------------------------------------------------------------------
/**
*/
void
uiGuildMain::OnUpdateSolarDialog()
{
if(!IsVisible())
{
this->ShowInterface(FALSE);
return;
}
if (this->IsLock())
return;
for (int i=0; i<POS_CHKBTN_SIZE; ++i)
{
this->m_pChkBtnControls[i]->SetCheckState(false);
}
this->m_pChkBtnControls[0]->SetCheckState(true);
this->updateMemberInfos();
updateMouseWheel();
}
//------------------------------------------------------------------------------
/**
*/
void
uiGuildMain::OnRenderSolarDialog()
{
this->renderMemberInfos();
}
//------------------------------------------------------------------------------
bool uiGuildMain::OnLDoubleButtonClick(SI_MESSAGE* message)
{
switch (getCtrlIDToPos(message->dwCtrlID))
{
case DLGPOS_LST_MEMBERS:
{
stGUILD_MEMBER_INFO* member_info = GetMemberInfo_byListboxCurSel();
if ((member_info != NULL) &&
#ifndef _NA_0_20100527_ADD_CHAR_RELATION_MEMO //#if'N'def
(member_info->m_bLogin == TRUE) &&
#endif //_NA_0_20100527_ADD_CHAR_RELATION_MEMO
(g_pHero != NULL) &&
(_tcscmp(g_pHero->GetName(), member_info->m_tszCharName) != 0))
{
GetManager()->Send_CW_FRIEND_STATUS_REQ(member_info->m_tszCharName,
member_info->m_CharGuid);
uiCommunityMan* community_man = static_cast<uiCommunityMan*>(g_InterfaceManager.GetUserInterfaceManager(UIMAN_COMMUNITY));
if ((community_man != NULL) &&
(community_man->GetCommunityinfo_Dialog() != NULL))
{
community_man->GetCommunityinfo_Dialog()->set_request_uimanager_id(UIMAN_GUILD);
}
}
}
break;
}
return true;
}
#endif //_NA_003923_20120217_GUILD_RENEWAL_UI_GUILD_MANAGER
//------------------------------------------------------------------------------
// EOF
//------------------------------------------------------------------------------