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

📄 suryunmanager_client.cpp

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

#include "stdafx.h"

#ifdef _MHCLIENT_
#include "SuryunManager_client.h"
#include "MainGame.h"
#include "MapChange.h"
#include "UserInfoManager.h"
#include "GameIn.h"
#include "MPGuageDialog.h"
#include "ObjectManager.h"
#include "ObjectStateManager.h"
#include "MPRegistDialog.h"
#include "MPMissionDialog.h"
#include "MPNoticeDialog.h"
#include "InventoryExDialog.h"
#include "MugongSuryunDialog.h"
#include "cMsgBox.h"
#include "ChatManager.h"
#include "MugongBase.h"
#include "SkillInfo.h"
#include "WindowIDEnum.h"
#include "./Interface/cWindowManager.h"
#include "mugongManager.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CSuryunManager::CSuryunManager()
{
	m_MissionInfo.Initialize(64);
	m_MonsterInfo.Initialize(64);
	m_ChangeLevelTable.Initialize(64);
	LoadSuryunInfo();
	LoadMonsterInfo();
}

CSuryunManager::~CSuryunManager()
{
	SURYUNMISSIONINFO* pInfo;
	m_MissionInfo.SetPositionHead();
	while(pInfo = m_MissionInfo.GetData())
		delete pInfo;
	m_MissionInfo.RemoveAll();
	
	SURYUNMONSTERINFO* pMInfo;
	m_MonsterInfo.SetPositionHead();
	while(pMInfo = m_MonsterInfo.GetData())
		delete pMInfo;
	m_MonsterInfo.RemoveAll();	
	
	SURYUNLEVELCHANGE* pChange;
	m_ChangeLevelTable.SetPositionHead();
	while(pChange = m_ChangeLevelTable.GetData())
		delete pChange;
	m_ChangeLevelTable.RemoveAll();
}

void CSuryunManager::NetworkMsgParse(BYTE Protocol,void* pMsg)
{
	ySWITCH(Protocol)
		yCASE(MP_SURYUN_GOSURYUNMAP_ACK)
			GAMEIN->GetMPRegistDialog()->SetDisable(FALSE);
			GAMEIN->GetInventoryDialog()->SetDisable(FALSE);
			GAMEIN->GetMugongSuryunDialog()->SetDisable(FALSE);
			MSG_DWORD* pmsg = (MSG_DWORD*)pMsg;
			MAPCHANGE->SetGameInInitKind(eGameInInitKind_SuryunEnter);
			DWORD MapNum = pmsg->dwData;
			MAINGAME->SetGameState(eGAMESTATE_MAPCHANGE,&MapNum,4);
			OBJECTSTATEMGR->EndObjectState(HERO, eObjectState_Deal);
			USERINFOMGR->SetMapChage(FALSE);
			
			WINDOWMGR->MsgBox( MBI_NOBTNMSGBOX, MBT_NOBTN, CHATMGR->GetChatMsg(669));

		yCASE(MP_SURYUN_ENTER_ACK)
			
		yCASE(MP_SURYUN_START)

		yCASE(MP_SURYUN_LEAVE_ACK)
			// do nothing

		yCASE(MP_SURYUN_RETURNTOREALWORLD)
			MSG_DWORD* pmsg = (MSG_DWORD*)pMsg;
			MAPCHANGE->SetGameInInitKind(eGameInInitKind_SuryunLeave);
			DWORD MapNum = pmsg->dwData;
			MAINGAME->SetGameState(eGAMESTATE_MAPCHANGE,&MapNum,4);
			USERINFOMGR->SetMapChage(TRUE); //荐访厘 甸绢哎 锭 false 唱棵 锭 true
				
		yCASE(MP_SURYUN_SUCCESSPERCENT)
			MSG_DWORD* pmsg = (MSG_DWORD*)pMsg;
			GAMEIN->GetMPGuageDialog()->SetExpGuage(pmsg->dwData/100.f);

		yCASE(MP_SURYUN_GOSURYUNMAP_NACK)
			MSG_DWORD* pmsg = (MSG_DWORD*)pMsg;
			ASSERT(0);
			GAMEIN->GetMPRegistDialog()->SetDisable(FALSE);
			GAMEIN->GetInventoryDialog()->SetDisable(FALSE);
			GAMEIN->GetMugongSuryunDialog()->SetDisable(FALSE);
			OBJECTSTATEMGR->EndObjectState(HERO, eObjectState_Deal);


	yENDSWITCH
}

void CSuryunManager::GoSuryunMapSyn()
{
	WORD MugongIdx = GoSuryunChk();
	if( MugongIdx == 0 )
	{
		GAMEIN->GetMPRegistDialog()->SetDisable(FALSE);
		GAMEIN->GetInventoryDialog()->SetDisable(FALSE);
		GAMEIN->GetMugongSuryunDialog()->SetDisable(FALSE);
		return;
	}
	MSG_WORD msg;
	msg.Category = MP_SURYUN;
	msg.Protocol = MP_SURYUN_GOSURYUNMAP_SYN;
	msg.dwObjectID = HEROID;
	msg.wData = MugongIdx;
	
	NETWORK->Send(&msg, sizeof(msg));
}

WORD CSuryunManager::GoSuryunChk()
{
	CMugongBase* pMugong = GAMEIN->GetMPRegistDialog()->GetMugong();
	if(!pMugong)
	{		
		return 0;
	}
	
	SURYUNINFO* pSInfo = GetMissionInfo(pMugong->GetItemIdx())->GetSuryunInfo(pMugong->GetSung());
	if(pSInfo->LimitTime == 0 || pSInfo->RegenNum == 0 || pSInfo->MonNum == 0)
		return 0;
	//捣篮 乐绰瘤
	if(HERO->GetMoney() < GetSuryunFee(pSInfo))
	{
		CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(117));
		return 0;
	}
	//厘馒酒捞袍苞 嘎绰瘤
	if((HERO->GetWeaponEquipType() != pMugong->m_pSkillInfo->GetWeaponType()) &&
			(pMugong->m_pSkillInfo->GetSkillKind() == SKILLKIND_OUTERMUGONG))
	{
		WINDOWMGR->MsgBox( MBI_MPNOTICE_NOTFIT, MBT_OK, CHATMGR->GetChatMsg( 151 ) );
		return 0;
	}

	int adlv = GetChangedLevel(HERO->GetLevel(),pMugong->GetSung()) + pSInfo->AdjustLevel;
	if(adlv <= 0)
	{
		CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(673));
		return 0;
	}
	if(GetMonsterInfo((LEVELTYPE)adlv) == NULL)
		return 0;

	return pMugong->GetItemIdx();
}

void CSuryunManager::SetActiveDlg(BOOL val)
{
	GAMEIN->GetMPMissionDialog()->SetActive(val);
	GAMEIN->GetMPNoticeDialog()->SetActive(val);
}

MONEYTYPE CSuryunManager::GetSuryunFee(SURYUNINFO* pInfo)
{
	if(MUGONGMGR->GetMugongNum() == 0)
		return 0;
	else
		return pInfo->Fee;
}
#endif

⌨️ 快捷键说明

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