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

📄 munpadoc.cpp

📁 墨香最新私服
💻 CPP
字号:
// MunpaDoc.cpp : implementation file
//

#include "stdafx.h"
#include "DS_RMTool.h"
#include "MunpaDoc.h"
#include "MunpaView.h"
#include "MunpaInfo.h"
#include "RMNetwork.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMunpaDoc

IMPLEMENT_DYNCREATE(CMunpaDoc, CBaseDoc)

CMunpaDoc::CMunpaDoc()
{
	m_dwLoadingFlag = eML_None;
	m_bReadOnly = FALSE;

	m_pBaseInfo = NULL;
	m_pWareHouse = NULL;

	m_ItemOptionInfo.Initialize(100);
	m_OptionInfo_org.Initialize(100);

	m_OptionKeyGenerator.Init(2000, 101);
}

BOOL CMunpaDoc::OnNewDocument()
{
	if (!CBaseDoc::OnNewDocument())
		return FALSE;
	return TRUE;
}

CMunpaDoc::~CMunpaDoc()
{
	SAFE_DELETE(m_pBaseInfo);
	SAFE_DELETE(m_pWareHouse);

	ITEM_OPTION_INFO* pOptionInfo = NULL;
	m_ItemOptionInfo.SetPositionHead();
	while(pOptionInfo = m_ItemOptionInfo.GetData())
		delete pOptionInfo;
	m_ItemOptionInfo.RemoveAll();

	m_OptionInfo_org.SetPositionHead();
	while(pOptionInfo = m_OptionInfo_org.GetData())
		delete pOptionInfo;
	m_OptionInfo_org.RemoveAll();

	m_OptionKeyGenerator.Release();
}


BEGIN_MESSAGE_MAP(CMunpaDoc, CBaseDoc)
	//{{AFX_MSG_MAP(CMunpaDoc)
		// NOTE - the ClassWizard will add and remove mapping macros here.
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMunpaDoc diagnostics

#ifdef _DEBUG
void CMunpaDoc::AssertValid() const
{
	CDocument::AssertValid();
}

void CMunpaDoc::Dump(CDumpContext& dc) const
{
	CDocument::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMunpaDoc serialization

void CMunpaDoc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		// TODO: add storing code here
	}
	else
	{
		// TODO: add loading code here
	}
}

/////////////////////////////////////////////////////////////////////////////
// CMunpaDoc commands

void CMunpaDoc::NetworkMsgParse(BYTE Protocol, void* pMsg)
{
	CMunpaView* pView = (CMunpaView*)GetView(0);

	switch(Protocol)
	{
	case MP_RMTOOL_MUNPASEARCH_NACK:
		{
			// 老摹 沥焊 绝澜阑 舅覆..
			pView->GetMunpaInfoPage()->InitMunpaInfo( FALSE );
			pView->GetMunpaInfoPage()->MessageBox("No Guild Info!", "Error");
		}
		break;
	case MP_RMTOOL_MUNPABASEINFO:
		{
			TMSG_MUNPABASEINFO* msg = (TMSG_MUNPABASEINFO*)pMsg;

			memcpy(&m_sBaseInfo_org, &msg->sBaseInfo, sizeof(m_sBaseInfo_org));
			SetLoadingFlag(eML_BaseInfo);
		}
		break;
	case MP_RMTOOL_MUNPAITEMINFO:
		{
			TMSG_ITEMINFO_LARGECOUNT* msg = (TMSG_ITEMINFO_LARGECOUNT*)pMsg;

			for(WORD i=0;i<msg->m_wCount;++i)
			{
				POSTYPE itempos = msg->m_Item[i].Position - TP_MUNPAWAREHOUSE_START;

				m_sWareHouse_org.WareHouse[itempos].wIconIdx		= msg->m_Item[i].wIconIdx;
				m_sWareHouse_org.WareHouse[itempos].dwDBIdx		= msg->m_Item[i].dwDBIdx;
				m_sWareHouse_org.WareHouse[itempos].Position		= msg->m_Item[i].Position;
				m_sWareHouse_org.WareHouse[itempos].Durability	= msg->m_Item[i].Durability;
				m_sWareHouse_org.WareHouse[itempos].QuickPosition	= msg->m_Item[i].QuickPosition;
			}

			if( msg->m_bEnd )
				SetLoadingFlag(eML_ItemInfo);
		}
		break;
	case MP_RMTOOL_MUNPAMEMBERINFO:
		{
			TMSG_MUNPA_MEMBERINFO* msg = (TMSG_MUNPA_MEMBERINFO*)pMsg;
			for(WORD i=0;i<msg->wCount;++i)
			{
				pView->GetMunpaInfoPage()->InsertMemberList( msg->sMember[i].strName, msg->sMember[i].level, 
										 msg->sMember[i].bJikChek, msg->sMember[i].strRegDate );
			}

			if( msg->bEnd )
				SetLoadingFlag(eML_MemberInfo);
		}
		break;
	default:
		break;
	}	
}

void CMunpaDoc::OnCloseDocument() 
{
	// TODO: Add your specialized code here and/or call the base class

	CBaseDoc::OnCloseDocument();
}

void CMunpaDoc::InitData()
{
	SAFE_DELETE(m_pBaseInfo);
	SAFE_DELETE(m_pWareHouse);

	memset(&m_sBaseInfo_org, 0, sizeof(m_sBaseInfo_org));
	memset(&m_sWareHouse_org, 0, sizeof(m_sWareHouse_org));
}

void CMunpaDoc::OpenData()
{
	SAFE_DELETE(m_pBaseInfo);
	SAFE_DELETE(m_pWareHouse);

	m_pBaseInfo = new MUNPABASEINFO;
	memcpy(m_pBaseInfo, &m_sBaseInfo_org, sizeof(m_sBaseInfo_org));

	m_pWareHouse = new MUNPAWAREHOUSEINFO;
	memcpy(m_pWareHouse, &m_sWareHouse_org, sizeof(m_sWareHouse_org));

	CMunpaView* pView = (CMunpaView*)GetView(0);
	CMunpaInfo* pMunpa = pView->GetMunpaInfoPage();

	// 檬扁拳 龋免..
	pMunpa->InitMunpaInfo(TRUE);
	pMunpa->SetMunpaBaseInfo();
	pMunpa->SetMunpaItemInfo();
}

void CMunpaDoc::UpdateData(DWORD dwParam1, DWORD dwParam2)
{
	CMunpaView* pView = (CMunpaView*) GetView(0);

	WORD pos = HIWORD(dwParam1);
	WORD kind = LOWORD(dwParam1);

	switch(kind)
	{
	case eTK_MunpaInfo:
		{
			pView->GetMunpaInfoPage()->m_StatusEdit[pos].ResetData();
			SetSaveFlag(eMF_MunpaInfo);
		}
		break;
	case eTK_MunpaItem:
		{
			SetSaveFlag(eMF_MunpaItem);
		}
		break;
	}
}

void CMunpaDoc::SaveData()
{
	if( IsSetSaveFlag(eMF_MunpaInfo) )
	{
	}

	if( IsSetSaveFlag(eMF_MunpaItem) )
	{
	}

	m_dwSaveFlag = eCF_None;

	CMunpaView* pView = (CMunpaView*) GetView(0);

	if( !m_pBaseInfo )
		return;
	
	DWORD MunpaIdx = m_pBaseInfo->dwMunpaIdx;
	InitData();
	pView->GetMunpaInfoPage()->InitMunpaInfo();

	TMSG_DWORD MunpaSearch;
	MunpaSearch.Category = MP_RMTOOL_MUNPA;
	MunpaSearch.Protocol = MP_RMTOOL_MUNPAINFO_RESYN;
	MunpaSearch.dwTemplateIdx = GetDocumentIdx();
	MunpaSearch.dwData = MunpaIdx;

	NETWORK->Send(&MunpaSearch, sizeof(MunpaSearch));	
}

ITEM_OPTION_INFO* CMunpaDoc::GetItemOptionInfo(DWORD wOptionIdx)
{
	return m_ItemOptionInfo.GetData(wOptionIdx);
}

ITEM_OPTION_INFO* CMunpaDoc::GetItemOptionInfoOrigin(DWORD wOptionIdx)
{
	return m_OptionInfo_org.GetData(wOptionIdx);
}


WORD CMunpaDoc::CreateLocalOptionIndex()
{
	WORD wIndex = (WORD)m_OptionKeyGenerator.GenerateIndex();

	while( m_ItemOptionInfo.GetData(wIndex) )
	{
		wIndex = (WORD)m_OptionKeyGenerator.GenerateIndex();
		if( wIndex == 0 )
		{
			ASSERT(0);
			return 0;
		}
	}
	
	return wIndex;
}

WORD CMunpaDoc::AddLocalOptionInfo( ITEM_OPTION_INFO* pLocalOption, BOOL bNew )
{
	ITEM_OPTION_INFO* pOption = NULL;
	WORD Index = 0;

	pOption = new ITEM_OPTION_INFO;
	memcpy(pOption, pLocalOption, sizeof(ITEM_OPTION_INFO));

	if( bNew )
		Index = CreateLocalOptionIndex();
	else
		Index = (WORD)pLocalOption->dwOptionIdx;

	if( Index == 0 )
	{
		delete pOption;
		return 0;
	}

	pOption->dwOptionIdx = Index;

	m_ItemOptionInfo.Add(pOption, Index);

	return Index;
}

void CMunpaDoc::DelLocalOptionInfo(WORD wIndex)
{
	ITEM_OPTION_INFO* pOption = m_ItemOptionInfo.GetData(wIndex);

	if( pOption )
	{
		delete pOption;

		m_ItemOptionInfo.Remove(wIndex);
		m_OptionKeyGenerator.ReleaseIndex(wIndex);
	}
}



⌨️ 快捷键说明

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