📄 regentoolview.cpp
字号:
256, // nDestWidth
256, // nDestHeight
0, // SrcX
0, // SrcY
0, // nStartScan
(WORD)256, // nNumScans
m_MapImageCtl, // lpBit
&szBitmapInfo, // lpBitsInfo
DIB_RGB_COLORS); // wUsage
*/ //泅犁 DC客 龋券己捞 乐绰 DC肺 汲沥
/* cdc.CreateCompatibleDC(&WinDC);
//捞 DC俊 厚飘甘阑 汲沥茄促.
cdc.SelectObject(&m_LoadMap);
//cdc甫 拳搁 DC pDC肺 免仿
WinDC.BitBlt(0,0,275,407,&cdc,0,0,SRCCOPY);
*/
//滚瓢 喘妨咙
if(lpDrawItemStruct->itemState & ODS_SELECTED)
{
}
else
{
}
}
CFormView::OnDrawItem(nIDCtl, lpDrawItemStruct);
}
void CRegenToolView::BMPButtonImageSetting(char *filename, LPSTR button)
{
}
void CRegenToolView::OnDraw(CDC* pDC)
{
// TODO: Add your specialized code here and/or call the base class
CRegenToolDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CDC cdc;
/*
// Map Image 免仿 --------------------------------------------
BitBlt(m_hdc,0,0,m_ImageBoxRect.right,m_ImageBoxRect.bottom,m_hMemDC,m_StartImagePos.x, m_StartImagePos.y, SRCCOPY);
//------------------------------------------------------------
*/
// Bitmap Button 免仿 ----------------------------------------
m_ZoomOutBtn.SetBitmap(m_ZoomOutBitmap_on);
m_ZoomInBtn.SetBitmap(m_ZoomInBitmap_on);
m_SelectBtn.SetBitmap(m_SelectBitmap_on);
m_MoveBtn.SetBitmap(m_MoveBitmap_on);
m_MSelectNoAreaBtn.SetBitmap(m_MonsterSelectNoAreaBitmap_on);
m_MSelectAreaBtn.SetBitmap(m_MonsterSelectAreaBitmap_on);
m_DeleteBtn.SetBitmap(m_DeleteBitmap_on);
//------------------------------------------------------------
// if(GetStartSelectFlag())
{
/* LISTMONSTER::iterator it;
for(it = pDoc->GetMonsterList().begin(); it != pDoc->GetMonsterList().end(); ++it)
{
MONSTER_POINT* mp = (MONSTER_POINT*)*it;
CPoint tmppos = mp->point;
tmppos.x -= m_HScrollPos; // 胶农费 蔼阑 猾促.
tmppos.y -= m_VScrollPos;
m_SelectXY.Draw(pDC, tmppos);
}
*/
}
// m_rectTrack.Draw(pDC);
}
void CRegenToolView::OnLButtonUp(UINT nFlags, CPoint point)
{
CRegenToolDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: Add your message handler code here and/or call default
//眠利冠胶狼 OnLButtonUP龋免
/* m_rectTrack.OnLButtonUp(nFlags,point);
//橇肺技辑 0栏肺 汲沥
m_nProcess=0;
//眠利冠胶 康开阑 m_rect俊 历厘
m_rect=m_rectTrack.m_rectTrack;
m_rectTrack.SetRect(m_rect);
//橇肺技辑 汲沥
m_rectTrack.SetProcess(m_nProcess);
*/ //拳搁 犁免仿
m_bDown = FALSE;
CString sztemp;
if(GetStartSelectFlag())
{
if(m_SelectBtn.GetCheck()) // 急琶滚瓢 眉农
{
if(m_ConditionAllCheckFlag)
{
//m_SelectXY.OnLButtonUp(nFlags, point);
POINT* ViewMousePos = CalcSelectPoint(point);
if(!ViewMousePos)
return;
VECTOR3* TargetPos = GetPickedPosition(ViewMousePos->x,ViewMousePos->y);
if(!TargetPos)
return;
if(MAP->CollisonCheck(TargetPos, TargetPos, TargetPos))
return;
m_GroupEdit.GetWindowText(sztemp);
if(pDoc->AddMonsterCheck(sztemp))
InsertMonster(TargetPos);
else
{
AfxMessageBox("弊缝捞 粮犁窍瘤 臼嚼聪促. 殿废刚历 秦林技堪!!!");
}
}
else
{
AfxMessageBox("炼扒阑 刚历 汲沥秦 林技堪!!!");
}
}
else if(m_DeleteBtn.GetCheck())
{
if(point.x == m_OldRect.left && point.y == m_OldRect.top)
{
POINT* ViewMousePos = CalcSelectPoint(point);
if(!ViewMousePos)
return;
VECTOR3* TargetPos = GetPickedPosition(ViewMousePos->x,ViewMousePos->y);
if(!TargetPos)
return;
static VECTOR3 pos;
static float dist;
static POINT pt;
pt.x = ViewMousePos->x;
pt.y = ViewMousePos->y;
DWORD modelindex,objectindex;
GXOBJECT_HANDLE handle =
g_pExecutive->GXOGetObjectWithScreenCoord(&pos,&modelindex,&objectindex,&dist,&pt,0,0);
if(handle == NULL)
return;
MONSTER_POINT* mp = pDoc->FindSelectMonsterHandle(handle);
if(!mp)
return;
int MaxCount = m_MListCtrl.GetItemCount();
int MinCount = 0;
for(int i = MinCount; i < MaxCount; i++)
{
char OriIndex[16];
memset((void*)OriIndex, 0, sizeof(16));
itoa((int)mp->SelectCount, OriIndex, 10);
// strcpy(FindIndex, OriIndex);
CString FindIndex = m_MListCtrl.GetItemText(i, 4);
// m_MListCtrl.GetItem(&pItem);
if(!strcmp(FindIndex, OriIndex))// 府胶飘牧飘费俊辑 昏力
{
m_MListCtrl.DeleteItem(i);
}
}
if(GetMonsterIndex()==START_MONSTERINDEX)
return;
// ReleaseMonsterIndex();
// DWORD idx = GetMonsterIndex();
CString szTemp;
szTemp.Format("%d", mp->MonsterGroup);
pDoc->ReleaseGroupMonsterCount(szTemp);
pDoc->SubCount();
// 甘俊辑 捞固瘤 昏力
g_pExecutive->DeleteGXObject(mp->MHandle);
// 府胶飘俊辑 昏力
pDoc->DeleteSelectMonsterPoint((void*)mp);
}
else
{
CRect SearchRect;
if(m_SelectRect.left < point.x)
{
SearchRect.left = m_SelectRect.left;
SearchRect.right = point.x;
}
else
{
SearchRect.left = point.x;
SearchRect.right = m_SelectRect.left;
}
if(m_SelectRect.top < point.y)
{
SearchRect.top = m_SelectRect.top;
SearchRect.bottom = point.y;
}
else
{
SearchRect.top = point.y;
SearchRect.bottom = m_SelectRect.top;
}
for(int i = SearchRect.left; i < SearchRect.right; i=i+10)
{
for(int j = SearchRect.top; j < SearchRect.bottom; j=j+10)
{
CPoint tmppos;
tmppos.x = i;
tmppos.y = j;
POINT* ViewMousePos = CalcSelectPoint(tmppos);
if(!ViewMousePos)
continue;
VECTOR3* TargetPos = GetPickedPosition(ViewMousePos->x,ViewMousePos->y);
if(!TargetPos)
continue;
static VECTOR3 pos;
static float dist;
static POINT pt;
pt.x = ViewMousePos->x;
pt.y = ViewMousePos->y;
GXOBJECT_HANDLE handle = g_pExecutive->GXOGetObjectWithScreenCoord(&pos,0,0,&dist,&pt,0,0);
if(handle == NULL)
continue;
MONSTER_POINT* mp = pDoc->FindSelectMonsterHandle(handle);
if(!mp)
continue;
int MaxCount = m_MListCtrl.GetItemCount();
int MinCount = 0;
for(int i = MinCount; i < MaxCount; i++)
{
char OriIndex[16];
memset((void*)OriIndex, 0, sizeof(16));
itoa((int)mp->SelectCount, OriIndex, 10);
// strcpy(FindIndex, OriIndex);
CString FindIndex = m_MListCtrl.GetItemText(i, 4);
// m_MListCtrl.GetItem(&pItem);
if(!strcmp(FindIndex, OriIndex))
// 府胶飘牧飘费俊辑 昏力
m_MListCtrl.DeleteItem(i);
}
if(GetMonsterIndex()==START_MONSTERINDEX)
return;
// ReleaseMonsterIndex();
// DWORD idx = GetMonsterIndex();
CString szTemp;
szTemp.Format("%d", mp->MonsterGroup);
pDoc->ReleaseGroupMonsterCount(szTemp);
pDoc->SubCount();
// 甘俊辑 捞固瘤 昏力
g_pExecutive->DeleteGXObject(mp->MHandle);
// 府胶飘俊辑 昏力
pDoc->DeleteSelectMonsterPoint((void*)mp);
}
}
}
}
else
{
MessageBox("坷弗率 酒贰俊 困摹茄\r\n扁瓷虐甫 急琶秦 林技堪!! ^o^",
"累诀 窍妨搁", MB_ICONINFORMATION|MB_OK);
}
}
else
{
MessageBox("甘颇老捞 乐绢具 累诀阑 窍瘤!!(滚钒~) \r\nOpen阑 穿福绊 甘阑 凯绢林技堪^o^",
"甘颇老 咯绰扒 扁夯, 扁夯俊 面角~~", MB_ICONINFORMATION|MB_OK);
}
CFormView::OnLButtonUp(nFlags, point);
}
void CRegenToolView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
// m_rectTrack.OnLButtonDown(nFlags,point);
// if(GetStartSelectFlag())
{
m_bDown = TRUE;
m_SelectRect = CRect(point.x, point.y, point.x, point.y);
m_OldRect = m_SelectRect;
}
CFormView::OnLButtonDown(nFlags, point);
}
void CRegenToolView::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CFormView::OnRButtonDown(nFlags, point);
}
void CRegenToolView::OnRButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CFormView::OnRButtonUp(nFlags, point);
}
void CRegenToolView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
// m_rectTrack.OnMouseMove(nFlags,point);
// if(GetStartSelectFlag())
{
if(m_bDown)
{
CWnd * wnd = GetDlgItem(IDC_MAPIMAGE);
m_hdc = ::GetDC(wnd->m_hWnd);
POINT* ViewMousePos = CalcSelectPoint(point);
if(!ViewMousePos)
return;
CDC *pDC=wnd->GetDC();
pDC->SetROP2(R2_XORPEN);
CPen pen,*oldpen;
pen.CreatePen(PS_DOT,2,RGB(127,127,127));
oldpen=pDC->SelectObject(&pen);
pDC->MoveTo(m_OldRect.TopLeft());
pDC->LineTo(m_OldRect.right,m_OldRect.top);
pDC->LineTo(m_OldRect.BottomRight());
pDC->LineTo(m_OldRect.left,m_OldRect.bottom);
pDC->LineTo(m_OldRect.TopLeft());
m_rect=CRect(m_SelectRect.left,m_SelectRect.top,ViewMousePos->x,ViewMousePos->y);
pDC->MoveTo(m_SelectRect.TopLeft());
pDC->LineTo(m_SelectRect.right,m_SelectRect.top);
pDC->LineTo(m_SelectRect.BottomRight());
pDC->LineTo(m_SelectRect.left,m_SelectRect.bottom);
pDC->LineTo(m_SelectRect.TopLeft());
pDC->SelectObject(oldpen);
pen.DeleteObject();
ReleaseDC(pDC);
m_OldRect=m_SelectRect;
}
else
{
if(g_pMouse)
g_pMouse->MoveMouse((DWORD)nFlags, point.x, point.y);
}
}
CFormView::OnMouseMove(nFlags, point);
}
void CRegenToolView::OnDrawBox()
{
m_nProcess=1;
m_rectTrack.SetProcess(m_nProcess);
}
void CRegenToolView::OnMapimage()
{
// TODO: Add your control notification handler code here
AfxMessageBox("甘 捞固瘤 努腐");
}
void CRegenToolView::AddMonsterList(MData *mdata)
{
LV_ITEM lvitem;
lvitem.iItem = m_MListCtrl.GetItemCount();
lvitem.mask = LVIF_TEXT|LVIF_IMAGE|LVIF_STATE;
lvitem.iSubItem = 0;
lvitem.stateMask = LVIS_STATEIMAGEMASK;
lvitem.state = INDEXTOSTATEIMAGEMASK(1);
lvitem.pszText = (LPSTR)(LPCTSTR)mdata->Group;
m_MListCtrl.InsertItem(&lvitem);
m_MListCtrl.SetItemText(lvitem.iItem, 1, (LPCTSTR)mdata->MonsterIdx);
m_MListCtrl.SetItemText(lvitem.iItem, 2, (LPCTSTR)mdata->MonsterKind);
m_MListCtrl.SetItemText(lvitem.iItem, 3, (LPCTSTR)mdata->x);
m_MListCtrl.SetItemText(lvitem.iItem, 4, (LPCTSTR)mdata->z);
m_MListCtrl.SetItemText(lvitem.iItem, 5, (LPCTSTR)mdata->Flag);
}
void CRegenToolView::OnSelchangeNpccombo()
{
// TODO: Add your control notification handler code here
WORD count = (WORD)m_NpcKind.GetCurSel();
BASE_MONSTER_LIST& mlist = g_pLoadList->m_MonsterList[count];
// m_NumTIT.Format("Num");
// m_RangeTIT.Format("Range");
// m_TimeTIT.Format("Re_Time");
CEngineObject* pMonster = new CEngineObject;
int kind = mlist.MonsterKind;
strcpy(m_MonsterChxName,mlist.ChxName);
UpdateData(FALSE);
}
void CRegenToolView::OnSelchangeMapcombo()
{
// TODO: Add your control notification handler code here
WORD count = (WORD)m_MapKind.GetCurSel();
// MAP_LIST maplist = g_pLoadList->m_MapList[count];
// m_MapNameStr.Format(maplist.LocalName);
UpdateData(FALSE);
}
void CRegenToolView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
int MinPos, MaxPos;
pScrollBar->GetScrollRange(&MinPos, &MaxPos);
switch(nSBCode)
{
case SB_LINELEFT:
{
pScrollBar->SetScrollPos(pScrollBar->GetScrollPos() -LINE_SIZE);
if(m_StartImagePos.x - LINE_SIZE > MinPos)
m_StartImagePos.x = pScrollBar->GetScrollPos() -LINE_SIZE;
else
m_StartImagePos.x = MinPos;
}
break;
case SB_LINERIGHT:
{
pScrollBar->SetScrollPos(pScrollBar->GetScrollPos() +LINE_SIZE);
if(m_StartImagePos.x + LINE_SIZE < MaxPos)
m_StartImagePos.x = pScrollBar->GetScrollPos() +LINE_SIZE;
else
m_StartImagePos.x = MaxPos;
}
break;
case SB_PAGELEFT:
{
pScrollBar->SetScrollPos(pScrollBar->GetScrollPos() -PAGE_SIZE);
if(m_StartImagePos.x -PAGE_SIZE > MinPos)
m_StartImagePos.x = pScrollBar->GetScrollPos() -PAGE_SIZE;
else
m_StartImagePos.x = MinPos;
}
break;
case SB_PAGERIGHT:
{
pScrollBar->SetScrollPos(pScrollBar->GetScrollPos() +PAGE_SIZE);
if(m_StartImagePos.x + PAGE_SIZE < MaxPos)
m_StartImagePos.x = pScrollBar->GetScrollPos() +PAGE_SIZE;
else
m_StartImagePos.x = MaxPos;
}
break;
case SB_THUMBTRACK:
pScrollBar->SetScrollPos(nPos);
m_StartImagePos.x = nPos;
break;
}
m_HScrollPos = pScrollBar->GetScrollPos();
CFormView::OnHScroll(nSBCode, nPos, pScrollBar);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -