📄 guildmanager.cpp
字号:
// GuildManager.cpp: implementation of the CGuildManager class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "GuildManager.h"
#include "ObjectManager.h"
#include "ChatManager.h"
#include "GameIn.h"
#include "GuildCreateDialog.h"
#include "CharacterDialog.h"
#include "GuildInviteDialog.h"
#include "GuildDialog.h"
#include "GuildLevelupDialog.h"
#include "GuildRankDialog.h"
#include "GuildWarehouseDialog.h"
#include "MHMap.h"
#include "GuildMarkManager.h"
#include "MHFile.h"
#include "AbilityManager.h"
#include "FilteringTable.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CGuildManager::CGuildManager()
{
}
CGuildManager::~CGuildManager()
{
}
void CGuildManager::Init()
{
m_Guild.Init(NULL);
SetCreating(FALSE);
SetRequestPlayerId(0);
m_SelectedMemberID = 0;
m_bActiveFunc = FALSE;
LoadLevelUpInfo();
GUILDMARKMGR->Init();
}
void CGuildManager::NetworkMsgParse(BYTE Protocol,void* pMsg)
{
if(HERO == 0)
return;
if(HERO->IsInited() == FALSE)
return;
switch(Protocol)
{
case MP_GUILD_CREATE_ACK:
{
SEND_GUILD_CREATE_ACK * pmsg = (SEND_GUILD_CREATE_ACK*)pMsg;
CreateGuildResult(pmsg->GuildIdx, pmsg->GuildName);
}
break;
case MP_GUILD_BREAKUP_ACK:
{
BreakUpGuildResult();
}
break;
case MP_GUILD_ADDMEMBER_INVITE:
{
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(33));
}
break;
case MP_GUILD_ADDMEMBER_ACK:
{
SEND_GUILD_MEMBER_INFO* pmsg = (SEND_GUILD_MEMBER_INFO*)pMsg;
m_Guild.AddMember(&pmsg->MemberInfo);
m_Guild.RefreshMember();
// create, addmember
if(pmsg->MemberInfo.MemberIdx == HEROID)
{
HERO->SetGuildIdxRank(pmsg->GuildIdx, pmsg->MemberInfo.Rank);
HERO->SetGuildName(pmsg->GuildName);
GAMEIN->GetCharacterDialog()->RefreshMunpaInfo();
}
GAMEIN->GetGuildDlg()->RefreshGuildInfo(&m_Guild);
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(37), pmsg->MemberInfo.MemberName);
}
break;
case MP_GUILD_DELETEMEMBER_ACK:
{
MSG_DWORDBYTE* pmsg = (MSG_DWORDBYTE*)pMsg;
GUILDMEMBERINFO * pInfo = m_Guild.GetMemberInfo(pmsg->dwData);
if(pInfo == 0)
return;
if(pmsg->dwData == HEROID)
{
m_Guild.Release();
HERO->ClearGuildInfo();
GAMEIN->GetCharacterDialog()->RefreshMunpaInfo();
if(GAMEIN->GetGuildDlg()->IsActive() == TRUE)
GAMEIN->GetGuildDlg()->SetActive(FALSE);
if(GAMEIN->GetGuildWarehouseDlg()->IsActive())
GAMEIN->GetGuildWarehouseDlg()->SetActive(FALSE);
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(51));
return;
}
if(pmsg->bData == eGuild_Delete) //ban
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(42), pInfo->MemberName);
else //secede
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(43), pInfo->MemberName);
m_Guild.DeleteMember(pmsg->dwData);
GAMEIN->GetGuildDlg()->RefreshGuildInfo(&m_Guild);
}
break;
case MP_GUILD_INVITE:
{
if(GAMEIN->GetGuildInviteDlg()->IsActive() == TRUE)
{
//檬措吝捞绢辑 促弗 巩颇狼 檬措甫 给罐绰促. chatmsg
return;
}
SEND_GUILD_INVITE* pmsg = (SEND_GUILD_INVITE*)pMsg;
SetRequestPlayerId(pmsg->MasterIdx);
GAMEIN->GetGuildInviteDlg()->SetInfo(pmsg->GuildName, pmsg->MasterName);
GAMEIN->GetGuildInviteDlg()->SetActive(TRUE);
}
break;
case MP_GUILD_INVITE_DENY:
{
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(47));
}
break;
case MP_GUILD_INFO:
{
SEND_GUILD_TOTALINFO* pmsg = (SEND_GUILD_TOTALINFO*)pMsg;
m_Guild.SetTotalInfo(&pmsg->GuildInfo, pmsg->MemberInfo, pmsg->membernum);
GAMEIN->GetGuildDlg()->RefreshGuildInfo(&m_Guild);
GAMEIN->GetGuildRankDlg()->ShowGuildRankMode(pmsg->GuildInfo.GuildLevel);
}
break;
case MP_GUILD_ACCEPT_ACK:
{
SEND_GUILD_TOTALINFO* pmsg = (SEND_GUILD_TOTALINFO*)pMsg;
HERO->SetGuildIdxRank(pmsg->GuildInfo.GuildIdx, GUILD_MEMBER);
HERO->SetGuildName(pmsg->GuildInfo.GuildName);
GAMEIN->GetCharacterDialog()->RefreshMunpaInfo();
m_Guild.SetTotalInfo(&pmsg->GuildInfo, pmsg->MemberInfo, pmsg->membernum);
GAMEIN->GetGuildDlg()->RefreshGuildInfo(&m_Guild);
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(31), GetRankName(HERO->GetGuildMemberRank()));
}
break;
case MP_GUILD_SECEDE_ACK:
{
HERO->ClearGuildInfo();
GAMEIN->GetCharacterDialog()->RefreshMunpaInfo();
m_Guild.Release();
GAMEIN->GetGuildDlg()->SetActive(FALSE);
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(48));
}
break;
case MP_GUILD_LEVELUP_ACK:
{
MSG_BYTE* pmsg = (MSG_BYTE*)pMsg;
m_Guild.SetLevel(pmsg->bData);
GAMEIN->GetCharacterDialog()->RefreshMunpaInfo();
GAMEIN->GetGuildDlg()->RefreshGuildInfo(&m_Guild);
GAMEIN->GetGuildLevelUpDlg()->SetLevel(pmsg->bData);
GAMEIN->GetGuildRankDlg()->ShowGuildRankMode(pmsg->bData);
if(pmsg->bData == GUILD_5LEVEL)
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(707));
else
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(40), pmsg->bData);
}
break;
case MP_GUILD_SETENTRYDATE:
{
MSG_NAME* pmsg = (MSG_NAME*)pMsg;
HERO->SetGuildEntryDate(pmsg->Name);
}
break;
case MP_GUILD_CHANGERANK_ACK:
{
MSG_DWORDBYTE * pmsg = (MSG_DWORDBYTE*)pMsg;
if(HEROID == pmsg->dwData)
{
HERO->SetGuildMemberRank(pmsg->bData);
GAMEIN->GetCharacterDialog()->RefreshMunpaInfo();
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(107), GetRankName(pmsg->bData));
}
else
{
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(721), GetMemberName(pmsg->dwData), GetRankName(pmsg->bData));
}
m_Guild.ChangeRank(pmsg->dwData, pmsg->bData);
m_Guild.RefreshMember();
}
break;
case MP_GUILD_PUTIN_MONEY_ACK: case MP_GUILD_PUTOUT_MONEY_ACK:
{
MSG_DWORD3 * pmsg = (MSG_DWORD3 *)pMsg;
GAMEIN->GetGuildWarehouseDlg()->PutInOutMoneyResult(pmsg);
}
break;
//////////////////////////////////////////////////////////
//NACK
case MP_GUILD_CREATE_NACK:
{
MSG_BYTE * pmsg = (MSG_BYTE*)pMsg;
if(pmsg->bData == eGuildErr_Create_Name)
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(29));
else
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(44));
SetCreating(FALSE);
}
break;
case MP_GUILD_BREAKUP_NACK:
{
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(44));
}
break;
case MP_GUILD_DELETEMEMBER_NACK:
{
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(44));
}
break;
case MP_GUILD_INVITE_ACCEPT_NACK:
{
//巩颇 秦眉
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(44));
}
break;
case MP_GUILD_ADDMEMBER_NACK:
{
MSG_BYTE* pmsg = (MSG_BYTE*)pMsg;
ShowErrMsg(pmsg->bData);
}
break;
//////////////////////////////////////////////////////////////
//mark
case MP_GUILDMARK_UPDATE_ACK:
{
MSG_GUILDMARK_IMG* pmsg = (MSG_GUILDMARK_IMG*)pMsg;
((CPlayer*)HERO)->SetGuildMarkName(pmsg->MarkName);
GUILDMARKMGR->OnRecvGuildMarkImg(pmsg);
//付农 盎脚
OBJECTMGR->ApplyOverInfoOptionToAll();
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(705));
}
break;
case MP_GUILDMARK_UPDATE_NACK:
{
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(44));
}
break;
case MP_GUILDMARK_REQUEST_ACK:
{
MSG_GUILDMARK_IMG* pmsg = (MSG_GUILDMARK_IMG*)pMsg;
GUILDMARKMGR->OnRecvGuildMarkImg(pmsg);
//付农 盎脚
OBJECTMGR->ApplyOverInfoOptionToAll();
}
break;
case MP_GUILDMARK_REQUEST_NACK:
{
// MSG_DWORD* pmsg = (MSG_DWORD*)pmsg;
int a = 1;
}
break;
case MP_GUILDMARK_CHANGE:
{
MSG_DWORD3 * pmsg = (MSG_DWORD3*)pMsg;
MarkChange(pmsg);
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(705));
}
break;
default:
{
char buf[32];
sprintf(buf, "Protocol : %d", Protocol);
ASSERTMSG(0, buf);
}
}
}
void CGuildManager::CreateGuildSyn(char* GuildName, char* Intro)
{
if(IsCreating() == TRUE)
{
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(34));
return;
}
if(HERO->GetGuildIdx())
{
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(28));
return;
}
if( ( FILTERTABLE->IsInvalidCharInclude((unsigned char *)GuildName) == TRUE ) ||
( FILTERTABLE->IsUsableName(GuildName) == FALSE ) )
{
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(29));
return;
}
SetCreating(TRUE);
SEND_GUILD_CREATE_SYN msg;
msg.Category = MP_GUILD;
msg.Protocol = MP_GUILD_CREATE_SYN;
SafeStrCpy(msg.GuildName, GuildName, MAX_GUILD_NAME+1);
SafeStrCpy(msg.Intro, Intro, MAX_GUILD_INTRO+1);
msg.dwObjectID = HEROID;
NETWORK->Send(&msg, sizeof(msg));
GAMEIN->GetGuildCreateDlg()->SetActive(FALSE);
}
void CGuildManager::BreakUpGuildSyn()
{
if(HERO->GetGuildIdx() == 0)
{
char buf[64];
sprintf(buf, "HOW CAN U SHOW DLG? chridx : %u", HEROID);
ASSERTMSG(0, buf);
return;
}
if(HERO->GetGuildMemberRank() != GUILD_MASTER)
{
char buf[64];
sprintf(buf, "HOW CAN U BREAKUP? chridx : %u, rank : %d", HEROID, HERO->GetGuildMemberRank());
ASSERTMSG(0, buf);
return;
}
MSGBASE msg;
msg.Category = MP_GUILD;
msg.Protocol = MP_GUILD_BREAKUP_SYN;
msg.dwObjectID = HEROID;
NETWORK->Send(&msg, sizeof(msg));
}
void CGuildManager::CreateGuildResult(DWORD GuildIdx, char* GuildName)
{
SetCreating(FALSE);
HERO->SetGuildIdxRank(GuildIdx, GUILD_MASTER);
HERO->SetGuildName(GuildName);
GAMEIN->GetCharacterDialog()->RefreshMunpaInfo();
GUILDINFO GInfo;
GInfo.GuildIdx = GuildIdx;
SafeStrCpy(GInfo.GuildName, GuildName, MAX_GUILD_NAME+1);
SafeStrCpy(GInfo.MasterName, HERO->GetObjectName(), MAX_NAME_LENGTH+1);
GInfo.MapNum = MAP->GetMapNum();
GInfo.GuildLevel = GUILD_1LEVEL;
GInfo.UnionIdx = 0;
GInfo.MasterIdx = HEROID;
m_Guild.Init(&GInfo);
GUILDMEMBERINFO Info;
Info.InitInfo(HEROID, HERO->GetObjectName(), HERO->GetLevel(), GUILD_MASTER);
m_Guild.AddMember(&Info);
m_Guild.RefreshMember();
GAMEIN->GetGuildRankDlg()->ShowGuildRankMode(GInfo.GuildLevel);
GAMEIN->GetGuildDlg()->RefreshGuildInfo(&m_Guild);
CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(58));
}
void CGuildManager::BreakUpGuildResult()
{
m_Guild.Release();
HERO->ClearGuildInfo();
GAMEIN->GetCharacterDialog()->RefreshMunpaInfo();
if(GAMEIN->GetGuildDlg()->IsActive() == TRUE)
GAMEIN->GetGuildDlg()->SetActive(FALSE);
if(GAMEIN->GetGuildWarehouseDlg()->IsActive())
GAMEIN->GetGuildWarehouseDlg()->SetActive(FALSE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -