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

📄 regentoolview.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 4 页
字号:
// 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 + -