📄 regentoolview.cpp
字号:
// RegenToolView.cpp : implementation of the CRegenToolView class
//
#include "stdafx.h"
#include "RegenTool.h"
#include "RegenToolDoc.h"
#include "RegenToolView.h"
#include "MonsterListViewDlg.h"
#include "LoadList.h"
#include "./Engine/GraphicEngine.h"
#include <fcntl.h>
#include <io.h>
#include "MHMap.h"
#include "../4DyuchiGRX_myself97_util/MToolMouseStatus.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//#pragma comment(lib, "../4DyuchiGXGFunc/SS3DGFunc.lib")
MToolMouseStatus* g_pMouse = NULL;
DWORD g_dwFrameCount = 0;
BOOL g_AllReady = FALSE;
HMODULE g_hExecutiveHandle;
/////////////////////////////////////////////////////////////////////////////
// CRegenToolView
IMPLEMENT_DYNCREATE(CRegenToolView, CFormView)
BEGIN_MESSAGE_MAP(CRegenToolView, CFormView)
//{{AFX_MSG_MAP(CRegenToolView)
ON_WM_DRAWITEM()
ON_WM_LBUTTONUP()
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONDOWN()
ON_BN_CLICKED(IDC_MAPIMAGE, OnMapimage)
ON_CBN_SELCHANGE(IDC_NPCCOMBO, OnSelchangeNpccombo)
ON_CBN_SELCHANGE(IDC_MAPCOMBO, OnSelchangeMapcombo)
ON_WM_HSCROLL()
ON_WM_VSCROLL()
ON_BN_CLICKED(IDC_SELECT_CHK, OnSelectChk)
ON_BN_CLICKED(IDC_MSELECTNOAREA_CHK, OnMselectnoareaChk)
ON_BN_CLICKED(IDC_MSELECTAREA_CHK, OnMselectareaChk)
ON_BN_CLICKED(IDC_DELETE_CHK, OnDeleteChk)
ON_BN_CLICKED(IDC_ZOOMIN_CHK, OnZoominChk)
ON_BN_CLICKED(IDC_ZOOMOUT_CHK, OnZoomoutChk)
ON_BN_CLICKED(IDC_MOVE_CHK, OnMoveChk)
ON_COMMAND(ID_FILE_SAVE, OnFileSave)
ON_WM_RBUTTONDOWN()
ON_WM_RBUTTONUP()
ON_CBN_SELCHANGE(IDC_FUNCCOMBO, OnSelchangeFunccombo)
ON_BN_CLICKED(IDC_CONDITIONALLOK, OnConditionallok)
ON_BN_CLICKED(IDC_LISTVIEW, OnListview)
ON_BN_CLICKED(IDC_ADDCONDITION, OnAddcondition)
ON_CBN_SELCHANGE(IDC_MONCOMBO, OnSelchangeMoncombo)
ON_EN_KILLFOCUS(IDC_GROUPEDIT, OnKillfocusGroupedit)
ON_BN_CLICKED(IDC_GRADE1, OnGrade1)
ON_BN_CLICKED(IDC_GRADE2, OnGrade2)
ON_BN_CLICKED(IDC_GRADE3, OnGrade3)
ON_BN_CLICKED(IDC_LOADMAPBTN, OnLoadmapbtn)
ON_WM_DESTROY()
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CRegenToolView construction/destruction
CRegenToolView::CRegenToolView()
: CFormView(CRegenToolView::IDD)
{
//{{AFX_DATA_INIT(CRegenToolView)
m_MapNameStr = _T("");
//}}AFX_DATA_INIT
// TODO: add construction code here
SetStartSelectFlag(FALSE);
m_ViewWinSize.SetRectEmpty();
m_ImageSize.SetRectEmpty();
m_ListIndex = 0;
m_bDown = FALSE;
m_SelectRect = CRect(0, 0, 0, 0);
m_OldRect = CRect(0, 0, 0, 0);
m_DataInsertFlag = FALSE;
m_DataInsertKind = 0;
// m_szFuncKind = new CString[MAX_FUNCKIND_NUM];
m_szFuncKind[0] = FDEFAULT;
m_szFuncKind[1] = FMONSTER_REGEN;
m_szFuncKind[2] = FNPC_REGEN;
m_szFuncKind[3] = FLOGIN_POINT;
m_szFuncKind[4] = FCHANGEMAP_POINT;
m_szFuncKind[5] = FMAP_ATTRIBUTE;
// m_ViewTile = new CTile[TILE_MAX_WIDTH * TILE_MAX_HEIGHT ];
// MonsterIndex 檬扁拳
m_dwMonsterIndex = START_MONSTERINDEX;
m_ListViewDlg = NULL;
m_ConditionAllCheckFlag = FALSE;
g_pMouse = NULL;
}
CRegenToolView::~CRegenToolView()
{
// CWnd * wnd = GetDlgItem(IDC_MAPIMAGE);
// ::ReleaseDC(wnd->m_hWnd, m_hdc);
}
void CRegenToolView::InitTile()
{
}
void CRegenToolView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CRegenToolView)
DDX_Control(pDX, IDC_GRADE1, m_GradeRadio);
DDX_Control(pDX, IDC_ADDCONDITION, m_AddConditionBtn);
DDX_Control(pDX, IDC_SUBCOMBOTEXT, m_SubComboStatic);
DDX_Control(pDX, IDC_TARGETGROUPIDSTATIC, m_TargetGroupIDStatic);
DDX_Control(pDX, IDC_TARGETGROUPIDSPIN, m_TargetGroupIDSpin);
DDX_Control(pDX, IDC_TARGETGROUPIDEDIT, m_TargetGroupIDEdit);
DDX_Control(pDX, IDC_REGENTIMESTATIC, m_RegenTimeStatic);
DDX_Control(pDX, IDC_REGENTIMESPIN, m_RegenTimeSpin);
DDX_Control(pDX, IDC_REGENTIMEEDIT, m_RegenTimeEdit);
DDX_Control(pDX, IDC_LISTVIEW, m_ListViewBtn);
DDX_Control(pDX, IDC_GROUPSTATIC, m_GroupStatic);
DDX_Control(pDX, IDC_GROUPSPIN, m_GroupSpin);
DDX_Control(pDX, IDC_GROUPPROPERTYSTATIC, m_GroupPropertyStatic);
DDX_Control(pDX, IDC_GROUPPROPERTYSPIN, m_GroupPropertySpin);
DDX_Control(pDX, IDC_GROUPPROPERTYEDIT, m_GroupPropertyEdit);
DDX_Control(pDX, IDC_GROUPNAMESTATIC, m_GroupNameStatic);
DDX_Control(pDX, IDC_GROUPNAMEEDIT, m_GroupNameEdit);
DDX_Control(pDX, IDC_GROUPEDIT, m_GroupEdit);
DDX_Control(pDX, IDC_CONDITIONSTATIC, m_ConditionStatic);
DDX_Control(pDX, IDC_CONDITIONSPIN, m_ConditionSpin);
DDX_Control(pDX, IDC_CONDITIONEDIT, m_ConditionEdit);
DDX_Control(pDX, IDC_CONDITIONALLOK, m_ConditionAllOKBtn);
DDX_Control(pDX, IDC_ALLCONDITIONGROUP, m_AllConditionGroupBox);
DDX_Control(pDX, IDC_CONDITION2GROUP, m_Condition2GroupBox);
DDX_Control(pDX, IDC_CONDITION1GROUP, m_Condition1GroupBox);
DDX_Control(pDX, IDC_MONCOMBO, m_MonsterKind);
DDX_Control(pDX, IDC_FUNCCOMBO, m_FuncKind);
DDX_Control(pDX, IDC_SCROLLBAR2, m_ImageHScroll);
DDX_Control(pDX, IDC_SCROLLBAR1, m_ImageVScroll);
DDX_Control(pDX, IDC_LIST2, m_MListCtrl);
DDX_Control(pDX, IDC_MAPCOMBO, m_MapKind);
DDX_Control(pDX, IDC_NPCCOMBO, m_NpcKind);
DDX_Control(pDX, IDC_ZOOMOUT_CHK, m_ZoomOutBtn);
DDX_Control(pDX, IDC_ZOOMIN_CHK, m_ZoomInBtn);
DDX_Control(pDX, IDC_SELECT_CHK, m_SelectBtn);
DDX_Control(pDX, IDC_MSELECTNOAREA_CHK, m_MSelectNoAreaBtn);
DDX_Control(pDX, IDC_MSELECTAREA_CHK, m_MSelectAreaBtn);
DDX_Control(pDX, IDC_MOVE_CHK, m_MoveBtn);
DDX_Control(pDX, IDC_DELETE_CHK, m_DeleteBtn);
DDX_Control(pDX, IDC_MAPIMAGE, m_MapImage);
DDX_Text(pDX, IDC_MAP_NAME, m_MapNameStr);
//}}AFX_DATA_MAP
}
BOOL CRegenToolView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CFormView::PreCreateWindow(cs);
}
void CRegenToolView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
CWnd * wnd = GetDlgItem(IDC_MAPIMAGE);
m_hdc = ::GetDC(wnd->m_hWnd);
GetClientRect(&m_OriginRect);
m_VScrollPos = 0;
m_HScrollPos = 0;
m_StartImagePos.x = 0;
m_StartImagePos.y = 0;
g_pLoadList = new CLoadList;
SetStartSelectFlag(FALSE);
// MonsterList Loading
// g_pLoadList->LoadMapList(g_pLoadList->m_MapList);
g_pLoadList->LoadMonsterList();
// Select 檬扁拳
m_rectTrack = CMyTracker(this,2,5);
m_rect.SetRectEmpty();
m_rectTrack.SetRect(m_rect);
m_SelectXY = CSelectXY(wnd);
// Bitmap Button Image Load ----------------------------------------
m_MonsterSelectAreaBitmap_on.LoadBitmap(IDB_MONSTERSELECTAREA_ON);
m_MonsterSelectAreaBitmap_press.LoadBitmap(IDB_MONSTERSELECTAREA_PRESS);
m_MonsterSelectNoAreaBitmap_on.LoadBitmap(IDB_MONSTERSELECTNOAREA_ON);
m_MonsterSelectNoAreaBitmap_press.LoadBitmap(IDB_MONSTERSELECTNOAREA_PRESS);
m_MoveBitmap_on.LoadBitmap(IDB_MOVE_ON);
m_MoveBitmap_press.LoadBitmap(IDB_MOVE_PRESS);
m_ZoomOutBitmap_on.LoadBitmap(IDB_ZOOMOUT_ON);
m_ZoomOutBitmap_press.LoadBitmap(IDB_ZOOMOUT_PRESS);
m_ZoomInBitmap_on.LoadBitmap(IDB_ZOOMIN_ON);
m_ZoomInBitmap_press.LoadBitmap(IDB_ZOOMIN_PRESS);
m_SelectBitmap_on.LoadBitmap(IDB_SELECT_ON);
m_SelectBitmap_press.LoadBitmap(IDB_SELECT_PRESS);
m_DeleteBitmap_on.LoadBitmap(IDB_DELETE_ON);
m_DeleteBitmap_press.LoadBitmap(IDB_DELETE_PRESS);
for(int btn = 0; btn < MAX_BUTTON; btn++)
{
m_ButtonFlag[btn] = FALSE;
}
//------------------------------------------------------------------
// MonsterKind Combo Setting ------------------------------------------
for(int m = 0; m < MAX_MONSTER_NUM; m++)
{
m_MonsterKind.AddString(g_pLoadList->m_MonsterList[m].Name);
}
m_MonsterKind.SetCurSel(0);
m_MonsterKind.ShowWindow(SW_HIDE);
strcpy(m_MonsterChxName,g_pLoadList->m_MonsterList[0].ChxName);
m_SubComboStatic.ShowWindow(SW_HIDE);
UpdateData(FALSE);
//------------------------------------------------------------------
// NPCKind Combo Setting ------------------------------------------
for(int nm = 0; nm < MAX_MONSTER_NUM; nm++)
{
m_NpcKind.AddString(g_pLoadList->m_MonsterList[nm].Name);
}
m_NpcKind.SetCurSel(0);
m_NpcKind.ShowWindow(SW_HIDE);
UpdateData(FALSE);
//------------------------------------------------------------------
// Monster Grade Setting -------------------------------------------
m_GradeRadio.SetCheck(1);
m_MonsterGrade = BASIC_MONSTER;
//------------------------------------------------------------------
// MapName Combo Setting -------------------------------------------
/* for(int ml = 0; ml < MAX_MAP_NUM; ml++)
{
m_MapKind.AddString(g_pLoadList->m_MapList[ml].LocalName);
}
m_MapKind.SetCurSel(0);
MAP_LIST maplist = g_pLoadList->m_MapList[0];
m_MapNameStr.Format(maplist.LocalName);
UpdateData(FALSE);
*/ //------------------------------------------------------------------
// Func_Kind Combo Setting ------------------------------------------
for(int f = 0; f < MAX_FUNCKIND_NUM; f++)
{
m_FuncKind.AddString(m_szFuncKind[f]);
}
m_FuncKind.SetCurSel(0);
m_SubComboStatic.SetWindowText(TDEFAULT);
//------------------------------------------------------------------
// NpcList EditBox Setting ------------------------------------------
CRect rect;
m_MListCtrl.GetClientRect(&rect);
LV_COLUMN lvcolumn;
lvcolumn.mask = LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;
lvcolumn.fmt = LVCFMT_CENTER;
for(int i = 0; i < 5; i++)
{
lvcolumn.iSubItem = i;
switch(i)
{
case 0://霉锅掳 拿烦
lvcolumn.cx = 35;
lvcolumn.pszText = "Group";
break;
case 1://滴锅掳 拿烦
lvcolumn.cx = 68;
lvcolumn.pszText = "MonIdx";
break;
case 2://技锅掳 拿烦
lvcolumn.cx = 50;
lvcolumn.pszText = "Kind";
break;
case 3://匙锅掳 拿烦
lvcolumn.cx = 50;
lvcolumn.pszText = "X";
break;
case 4://促几锅掳 拿烦
lvcolumn.cx = 40;
lvcolumn.pszText = "Z";
break;
case 5://咯几锅掳 拿烦
lvcolumn.cx = rect.Width()-243;
lvcolumn.pszText = "Flag";
break;
}
m_MListCtrl.InsertColumn(i, &lvcolumn); // 拿烦眠啊
}
//------------------------------------------------------------------
// Function Button Setting -----------------------------------------
m_SelectBtn.SetCheck(FALSE);
m_MSelectNoAreaBtn.SetCheck(FALSE);
m_MSelectAreaBtn.SetCheck(FALSE);
m_DeleteBtn.SetCheck(FALSE);
m_ZoomInBtn.SetCheck(FALSE);
m_ZoomOutBtn.SetCheck(FALSE);
m_MoveBtn.SetCheck(FALSE);
//------------------------------------------------------------------
// m_LoadMap.LoadBitmap(IDB_NANJU);
//BMPINFO 沥焊甫 汲沥茄促.
/* szBitmapInfo.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
szBitmapInfo.bmiHeader.biWidth=256;
szBitmapInfo.bmiHeader.biHeight=256;
szBitmapInfo.bmiHeader.biPlanes=1;
szBitmapInfo.bmiHeader.biBitCount=24;
szBitmapInfo.bmiHeader.biCompression=BI_RGB;
szBitmapInfo.bmiHeader.biSizeImage=256*256;
szBitmapInfo.bmiHeader.biXPelsPerMeter=0;
szBitmapInfo.bmiHeader.biYPelsPerMeter=0;
szBitmapInfo.bmiHeader.biClrUsed =0;
szBitmapInfo.bmiHeader.biClrImportant =0;
*/
// SpinControl Setting -----------------------------------------------
m_GroupSpin.SetRange(1, 200);
m_GroupPropertySpin.SetRange(0, 200);
m_TargetGroupIDSpin.SetRange(0, 200);
m_ConditionSpin.SetRange(-100, 100);
m_RegenTimeSpin.SetRange(0, 200);
m_GroupEdit.SetWindowText("1");
m_GroupNameEdit.SetWindowText("老馆弊缝_1");
m_GroupPropertyEdit.SetWindowText("0");
CString temp;
m_GroupEdit.GetWindowText(temp);
m_TargetGroupIDEdit.SetWindowText(temp);
m_ConditionEdit.SetWindowText("0.5");
m_RegenTimeEdit.SetWindowText("15000");
//-------------------------------------------------------------
// Control Hide -----------------------------------------------
m_Condition1GroupBox.ShowWindow(SW_SHOW);
m_GroupStatic.ShowWindow(SW_SHOW);
m_GroupEdit.ShowWindow(SW_SHOW);
m_GroupSpin.ShowWindow(SW_SHOW);
m_GroupNameStatic.ShowWindow(SW_SHOW);
m_GroupNameEdit.ShowWindow(SW_SHOW);
m_GroupPropertyStatic.ShowWindow(SW_SHOW);
m_GroupPropertyEdit.ShowWindow(SW_SHOW);
m_GroupPropertySpin.ShowWindow(SW_SHOW);
m_Condition2GroupBox.ShowWindow(SW_SHOW);
m_TargetGroupIDStatic.ShowWindow(SW_SHOW);
m_TargetGroupIDEdit.ShowWindow(SW_SHOW);
m_TargetGroupIDSpin.ShowWindow(SW_SHOW);
m_ConditionStatic.ShowWindow(SW_SHOW);
m_ConditionEdit.ShowWindow(SW_SHOW);
m_ConditionSpin.ShowWindow(SW_SHOW);
m_RegenTimeStatic.ShowWindow(SW_SHOW);
m_RegenTimeEdit.ShowWindow(SW_SHOW);
m_RegenTimeSpin.ShowWindow(SW_SHOW);
m_AllConditionGroupBox.ShowWindow(SW_SHOW);
m_ConditionAllOKBtn.ShowWindow(SW_SHOW);
m_ListViewBtn.ShowWindow(SW_SHOW);
//-------------------------------------------------------------
g_AllReady = TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CRegenToolView printing
BOOL CRegenToolView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CRegenToolView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CRegenToolView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
void CRegenToolView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
{
// TODO: add customized printing code here
}
/////////////////////////////////////////////////////////////////////////////
// CRegenToolView diagnostics
#ifdef _DEBUG
void CRegenToolView::AssertValid() const
{
CFormView::AssertValid();
}
void CRegenToolView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
CRegenToolDoc* CRegenToolView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CRegenToolDoc)));
return (CRegenToolDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CRegenToolView message handlers
void CRegenToolView::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
if(nIDCtl==IDC_MAPIMAGE)
{
/* CRegenToolDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CDC cdc;
::SetStretchBltMode(lpDrawItemStruct->hDC, COLORONCOLOR);
::SetDIBitsToDevice(lpDrawItemStruct->hDC,
0, // DestX
0, // DestY
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -