⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 guilddialog.cpp

📁 墨香最新私服
💻 CPP
字号:
// GuildDialog.cpp: implementation of the CGuildDialog class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "GuildDialog.h"
#include "./Interface/cWindowManager.h"
#include "./interface/cStatic.h"
#include "./interface/cComboBox.h"
#include "./interface/cListDialog.h"
#include "./interface/cPushupButton.h"
#include "WindowIDEnum.h"
#include "ObjectManager.h"
#include "GuildManager.h"
#include "ChatManager.h"
#include "../Interface/cResourceManager.h"
#include "cMsgBox.h"
#include "Guild.h"
#include "../Input/Mouse.h"
#include "GameIn.h"
#include "GuildRankDialog.h"
#include "GuildNickNameDialog.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CGuildDialog::CGuildDialog()
{
	m_type = WT_GUILDDLG;
	m_SelectedNum = -1;
	m_CurGuildMode = -1;
}

CGuildDialog::~CGuildDialog()
{
	for(int n=0;n<eMaxFunc;++n)
	{
		m_GuildFuncCtrlArray[n].RemoveAll();
	}
	for(n=0; n<eGuildMode_Max; ++n)
	{
		m_GuildModeArray[n].RemoveAll();
	}
}

void CGuildDialog::Linking()
{
	m_pGuildName = (cStatic*)GetWindowForID(GD_NAME);
	m_pGuildLvl = (cStatic*)GetWindowForID(GD_LEVEL);
	m_pMasterName = (cStatic*)GetWindowForID(GD_MASTER);
	m_pMemberNum = (cStatic*)GetWindowForID(GD_MEMBERNUM);
	m_pLocation = (cStatic*)GetWindowForID(GD_LOCATION);
	m_pListDlg = (cListDialog*)GetWindowForID(GD_MEMBERLIST);	

	m_pListDlg->SetHeight(158);

	for(int i=0; i<2; ++i)
		m_pGuildPushupBtn[i] = (cPushupButton*)GetWindowForID(GD_MEMBERINFOPUSHUPBTN+i);
	
	for(i=0; i<10; ++i)
	{
		m_GuildModeArray[eGuildMode_GuildInfo].AddTail((cStatic*)GetWindowForID(GD_NAME+i));
	}
	for(i=0; i<12; ++i)
	{
		m_GuildModeArray[eGuildMode_Func].AddTail((cButton*)GetWindowForID(GD_BANMEMBER+i));
	}
	for(i=0; i<7; ++i)
		m_GuildFuncCtrlArray[eInvailedFunc].AddTail((cButton*)GetWindowForID(GD_INVITEUNION+i));

	m_pBanMemberBtn = (cButton*)GetWindowForID(GD_BANMEMBER);
	m_pGiveMemberNickBtn = (cButton*)GetWindowForID(GD_GIVEMEMBERNICK);
	m_pGiveMemberRankBtn = (cButton*)GetWindowForID(GD_GIVEMEMBERRANK);
	m_pInviteMemberBtn = (cButton*)GetWindowForID(GD_INVITEMEMBER);
	m_pInviteUnionBtn = (cButton*)GetWindowForID(GD_INVITEUNION);
	m_pSecedeBtn = (cButton*)GetWindowForID(GD_SECEDE);

	m_GuildFuncCtrlArray[eMasterFunc].AddTail(m_pInviteUnionBtn);
	m_GuildFuncCtrlArray[eMasterFunc].AddTail(m_pGiveMemberRankBtn);
	m_GuildFuncCtrlArray[eMasterFunc].AddTail(m_pGiveMemberNickBtn);
	m_GuildFuncCtrlArray[eMasterFunc].AddTail(m_pBanMemberBtn);
	m_GuildFuncCtrlArray[eViceMasterFunc].AddTail(m_pInviteMemberBtn);
	m_GuildFuncCtrlArray[eMemberFunc].AddTail(m_pSecedeBtn);
	
}

void CGuildDialog::SetInfo(char* guildname, BYTE guildlvl, char* mastername, BYTE membernum, BYTE location)
{
	m_pGuildName->SetStaticText(guildname);
	m_pGuildLvl->SetStaticValue(guildlvl);
}

void CGuildDialog::DeleteMemberAll()
{	
	m_pListDlg->RemoveAll();
}

void CGuildDialog::ResetMemberInfo(char* Name, BYTE Rank, LEVELTYPE lvl, DWORD MemberIdx)
{
	char buf[64] = {" ",};
	char rank[8] = {0,};
	int namelen;
	int ranklen;
	char membername[MAX_NAME_LENGTH+1];
	char memberrank[7];
	SafeStrCpy(membername, Name, MAX_NAME_LENGTH+1);
	namelen = strlen(Name);
	for(int i=namelen; i<MAX_NAME_LENGTH; ++i)
		membername[i] = 0x20;
	
	SafeStrCpy(memberrank, GUILDMGR->GetRankName(Rank), 7);
	ranklen = strlen(memberrank);
	for(i=ranklen; i<6; ++i)
		memberrank[i] = 0x20;
	sprintf(buf, "%s %10s %4d", membername, memberrank, lvl);
	m_pListDlg->AddItem(buf, 0xffffffff);
}
void CGuildDialog::SetGuildInfo(char* GuildName, char* MasterName, char* MapName, BYTE GuildLevel, BYTE MemberNum)
{
	m_pGuildName->SetStaticText(GuildName);
		
	m_pGuildLvl->SetStaticValue(GuildLevel);
	m_pMasterName->SetStaticText(MasterName);
	m_pMemberNum->SetStaticValue(MemberNum);
	m_pLocation->SetStaticText(MapName);
}

void CGuildDialog::SetActive(BOOL val)
{
	if(val == TRUE)
	{
		ShowGuildMode(eGuildMode_GuildInfo);
	}
	if(val == FALSE)
	{
		cMsgBox* pSece =  (cMsgBox*)WINDOWMGR->GetWindowForID(MBI_GUILD_SECEDE);
		if(pSece)
			WINDOWMGR->AddListDestroyWindow( pSece );
		cMsgBox* pBan =  (cMsgBox*)WINDOWMGR->GetWindowForID(MBI_GUILD_BAN);
		if(pBan)
			WINDOWMGR->AddListDestroyWindow( pBan );
		if(GAMEIN->GetGuildRankDlg()->IsActive() == TRUE)
			GAMEIN->GetGuildRankDlg()->SetActive(FALSE);
//		if(GAMEIN->GetGuildNickNameDlg()->IsActive() == TRUE)
//			GAMEIN->GetGuildNickNameDlg()->SetActive(FALSE);
	}
	cDialog::SetActive(val);
}

void CGuildDialog::RefreshGuildInfo(CGuild* pGuild)
{
	m_pGuildName->SetStaticText(pGuild->GetGuildName());
		
	m_pGuildLvl->SetStaticValue(pGuild->GetLevel());
	m_pMasterName->SetStaticText(pGuild->GetMasterName());
	m_pMemberNum->SetStaticValue(pGuild->GetMemberNum());
	m_pLocation->SetStaticText(GetMapName(pGuild->GetLocation()));
}


DWORD CGuildDialog::ActionEvent(CMouse* mouseInfo)
{
	DWORD we = WE_NULL;
	if( !m_bActive )		return we;
	we = cDialog::ActionEvent(mouseInfo);	

	if(m_pListDlg->PtIdxInRow(mouseInfo->GetMouseX(),mouseInfo->GetMouseY()) != -1)
	{
		if(we & WE_LBTNCLICK && ( WINDOWMGR->IsMouseDownUsed() == FALSE) )
		{		
			int Idx = m_pListDlg->GetCurSelectedRowIdx();
			if(Idx != -1)
			{
				m_SelectedNum = Idx;
			//	GUILDMGR->SetSelec]tedMemberID();
				if(GAMEIN->GetGuildRankDlg()->IsActive())
					GAMEIN->GetGuildRankDlg()->RefreshName();
			}
		}
	}
	return we;
}

int CGuildDialog::GetSelectedColumn()
{
	return m_SelectedNum;
}

void CGuildDialog::ShowGuildMode(BYTE ShowMode)
{
	SetGuildPushupBtn(ShowMode);
	if(m_CurGuildMode == ShowMode)
		return;

	if(m_CurGuildMode  != -1)
	{
		ClearDisableBtn();
		SetActiveGuildMode(m_CurGuildMode ,FALSE);
	}

	SetActiveGuildMode(ShowMode,TRUE);
	m_CurGuildMode = ShowMode;

	SetDisableFuncBtn(HERO->GetGuildMemberRank());
}

void CGuildDialog::SetActiveGuildMode(int showmode,BOOL bActive)
{
	PTRLISTSEARCHSTART(m_GuildModeArray[showmode],cWindow*,pWin)
		pWin->SetActive(bActive);
	PTRLISTSEARCHEND
}

void CGuildDialog::SetGuildPushupBtn(BYTE ShowMode)
{
	if((ShowMode < 0) || (ShowMode > 2))
	{
		ASSERT(0);
		return;
	}
	for(int i=0; i<2; ++i)
		m_pGuildPushupBtn[i]->SetPush(FALSE);
	m_pGuildPushupBtn[ShowMode]->SetPush(TRUE);
}

void CGuildDialog::ClearDisableBtn()
{
	PTRLISTSEARCHSTART(m_GuildModeArray[eGuildMode_Func],cWindow*,pWin)
		pWin->SetDisable(FALSE);
	PTRLISTSEARCHEND
}

void CGuildDialog::SetDisableFuncBtn(BYTE Rank)
{
	int i = 0;
	switch(Rank)
	{
	case GUILD_MASTER:	i = eInvailedFunc;	break;
	case GUILD_VICEMASTER:	i = eMasterFunc;	break;
	case GUILD_SENIOR:	i = eViceMasterFunc;	break;
	case GUILD_MEMBER:	i = eSeniorFunc;	break;
	}

	for(int j=0; j<i; ++j)
	{		
		PTRLISTSEARCHSTART(m_GuildFuncCtrlArray[j],cWindow*,pWin)
			pWin->SetDisable(FALSE);
		PTRLISTSEARCHEND
	}
	for(j=i; j<eMaxFunc; ++j)
	{		
		PTRLISTSEARCHSTART(m_GuildFuncCtrlArray[j],cWindow*,pWin)
			pWin->SetDisable(TRUE);
		PTRLISTSEARCHEND
	}
	if(Rank == GUILD_MASTER)
	{
		m_pSecedeBtn->SetDisable(TRUE);
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -