/branches/Game1/SERVER/tools/UniEditor/UniEditor/DlgAddNode.cpp

http://mmo-resourse.googlecode.com/ · C++ · 314 lines · 233 code · 51 blank · 30 comment · 23 complexity · a55c2c51a058c189077572ecbb8bc1b6 MD5 · raw file

  1. // DlgAddNode.cpp : ????
  2. //
  3. #include "stdafx.h"
  4. #include "UniEditor.h"
  5. #include "DlgAddNode.h"
  6. #include "RegionList.h"
  7. #include "UniEditorDlg.h"
  8. // CDlgAddNode ???
  9. #pragma warning (disable : 4244)
  10. IMPLEMENT_DYNAMIC(CDlgAddNode, CDialog)
  11. CDlgAddNode::CDlgAddNode(CWnd* pParent /*=NULL*/)
  12. : CDialog(CDlgAddNode::IDD, pParent)
  13. , m_uRadio(0), m_pWnd(NULL), m_pRegionTree(NULL), m_pMonster(NULL)
  14. {
  15. }
  16. CDlgAddNode::~CDlgAddNode()
  17. {
  18. }
  19. void CDlgAddNode::DoDataExchange(CDataExchange* pDX)
  20. {
  21. CDialog::DoDataExchange(pDX);
  22. DDX_Control(pDX, IDC_LISTREGION, m_listRegion);
  23. DDX_Control(pDX, IDC_LISTREGIONADD, m_listRegionAdd);
  24. DDX_Control(pDX, IDC_LISTMONS, m_listMonster);
  25. DDX_Control(pDX, IDC_LISTMONSADD, m_listMonsterAdd);
  26. DDX_Radio(pDX, IDC_RADIOMONSTER, m_uRadio);
  27. }
  28. BEGIN_MESSAGE_MAP(CDlgAddNode, CDialog)
  29. ON_LBN_DBLCLK(IDC_LISTREGION, &CDlgAddNode::OnLbnDblclkListregion)
  30. ON_LBN_DBLCLK(IDC_LISTREGIONADD, &CDlgAddNode::OnLbnDblclkListregionadd)
  31. ON_BN_CLICKED(IDC_BUTADD, &CDlgAddNode::OnBnClickedButadd)
  32. ON_BN_CLICKED(IDC_BUTDEL, &CDlgAddNode::OnBnClickedButdel)
  33. ON_LBN_DBLCLK(IDC_LISTMONS, &CDlgAddNode::OnLbnDblclkListmonster)
  34. ON_LBN_DBLCLK(IDC_LISTMONSADD, &CDlgAddNode::OnLbnDblclkListmonsteradd)
  35. ON_BN_CLICKED(IDC_BUTADDM, &CDlgAddNode::OnBnClickedButaddM)
  36. ON_BN_CLICKED(IDC_BUTDELM, &CDlgAddNode::OnBnClickedButdelM)
  37. END_MESSAGE_MAP()
  38. // CDlgAddNode ??????
  39. //??????“*”??
  40. int ReadTo2(ifstream &stream,string name)
  41. {
  42. string str;
  43. stream >> str;
  44. while (str != name)
  45. {
  46. //???????????0
  47. if (stream.eof())
  48. {
  49. return 0;
  50. }
  51. //??????
  52. stream >> str;
  53. }
  54. return 1;
  55. }
  56. BOOL CDlgAddNode::OnInitDialog()
  57. {
  58. CDialog::OnInitDialog();
  59. // TODO: ??????????
  60. m_pWnd = (CUniEditorDlg *)GetParent();
  61. m_pRegionTree = (CRegionTree *)(((CUniEditorDlg *)m_pWnd)->GetDlgItem(IDT_REGION));
  62. m_RegionList = m_pRegionTree->GetRegionList();
  63. HTREEITEM hItem;
  64. hItem = m_pRegionTree->GetRootItem();
  65. m_hItemFirstRegion = hItem = m_pRegionTree->GetChildItem(hItem);
  66. while(hItem != NULL)
  67. {
  68. CString szRegion = m_pRegionTree->GetItemText(hItem);
  69. m_listRegion.AddString(szRegion);
  70. hItem = m_pRegionTree->GetNextSiblingItem(hItem);
  71. }
  72. int i=0;
  73. // ???MONSTER??
  74. ifstream ifStream;
  75. string strTemp;
  76. string str;
  77. ifStream.open(strFileMonster, ios_base::in);
  78. while(ReadTo2(ifStream,"*")!=0)
  79. {
  80. // ??Monster???????
  81. ifStream >> strTemp >> strTemp>>strTemp;
  82. // ifStream>>str;
  83. if(i>START)
  84. {
  85. m_listMonster.AddString(strTemp.c_str());
  86. }
  87. i++;
  88. }
  89. ifStream.close();
  90. return TRUE; // return TRUE unless you set the focus to a control
  91. // ??: OCX ?????? FALSE
  92. }
  93. void CDlgAddNode::OnOK()
  94. {
  95. // TODO: ?????????/?????
  96. UpdateData();
  97. // ????????
  98. HTREEITEM hItem = m_hItemFirstRegion;
  99. HTREEITEM hItemAdd;
  100. int iListNodeNum = m_listRegionAdd.GetCount();
  101. int iMatchNum = 0;
  102. CString szRegionAdd;
  103. CString szRegionItem;
  104. ITRTREE itrTree;
  105. unsigned uRegionNo;
  106. MAPTREE &m_mapTree = m_pRegionTree->GetMapTree();
  107. while(hItem != NULL && iMatchNum < iListNodeNum)
  108. {
  109. szRegionItem = m_pRegionTree->GetItemText(hItem);
  110. m_listRegionAdd.GetText(iMatchNum, szRegionAdd);
  111. // ??????
  112. if(szRegionAdd == szRegionItem)
  113. {
  114. ++iMatchNum;
  115. uRegionNo = m_pRegionTree->GetItemData(hItem);
  116. itrTree = m_mapTree.find(uRegionNo);
  117. // ?????????
  118. if(uRegionNo > ITEM_REGION_UNEXISTED && itrTree == m_mapTree.end())
  119. {
  120. m_pRegionTree->ReadData(hItem);
  121. uRegionNo = m_pRegionTree->GetItemData(hItem);
  122. }
  123. // ????
  124. if (uRegionNo > ITEM_REGION_UNEXISTED)
  125. {
  126. CRegion *pRegion = m_mapTree[uRegionNo];
  127. m_pRegionTree->SetItemBold(hItem, TRUE);
  128. switch(m_uRadio)
  129. {
  130. // ??MONSTER
  131. case RADIO_MONSTER:
  132. {
  133. CMonster *pMonster = new CMonster(pRegion->Width(), pRegion->Height());
  134. int iListMonsterNum = m_listMonsterAdd.GetCount();
  135. for(int i=0; i<iListMonsterNum; ++i)
  136. {
  137. CString szMonsterAdd;
  138. m_listMonsterAdd.GetText(i, szMonsterAdd);
  139. CMonsterInfo *pMonInfo = new CMonsterInfo;
  140. pMonInfo->SetName(szMonsterAdd.GetString());
  141. pMonster->AddMonsterInfo(pMonInfo);
  142. }
  143. hItemAdd = m_pRegionTree->GetChildItem(hItem);
  144. m_pRegionTree->AddItemMonster(hItemAdd, pRegion, pMonster);
  145. break;
  146. }
  147. // ??NPC
  148. case RADIO_NPC:
  149. {
  150. break;
  151. }
  152. // ??MONSTERINFO
  153. case RADIO_MONINFO:
  154. {
  155. break;
  156. }
  157. default:
  158. break;
  159. }
  160. }
  161. }
  162. hItem = m_pRegionTree->GetNextSiblingItem(hItem);
  163. }
  164. CDialog::OnOK();
  165. }
  166. void CDlgAddNode::OnCancel()
  167. {
  168. // TODO: ?????????/?????
  169. CDialog::OnCancel();
  170. }
  171. void CDlgAddNode::OnLbnDblclkListregion()
  172. {
  173. // TODO: ??????????????
  174. int ind = m_listRegion.GetCurSel();
  175. CString str;
  176. m_listRegion.GetText(ind, str);
  177. m_listRegionAdd.AddString(str);
  178. m_listRegion.DeleteString(ind);
  179. }
  180. void CDlgAddNode::OnLbnDblclkListregionadd()
  181. {
  182. // TODO: ??????????????
  183. int ind = m_listRegionAdd.GetCurSel();
  184. CString str;
  185. m_listRegionAdd.GetText(ind, str);
  186. m_listRegion.AddString(str);
  187. m_listRegionAdd.DeleteString(ind);
  188. }
  189. void CDlgAddNode::OnBnClickedButadd()
  190. {
  191. // TODO: ??????????????
  192. CString str;
  193. for(int i=0; i<m_listRegion.GetCount(); ++i)
  194. {
  195. m_listRegion.GetText(i, str);
  196. m_listRegionAdd.AddString(str);
  197. }
  198. m_listRegion.ResetContent();
  199. }
  200. void CDlgAddNode::OnBnClickedButdel()
  201. {
  202. // TODO: ??????????????
  203. CString str;
  204. for(int i=0; i<m_listRegionAdd.GetCount(); ++i)
  205. {
  206. m_listRegionAdd.GetText(i, str);
  207. m_listRegion.AddString(str);
  208. }
  209. m_listRegionAdd.ResetContent();
  210. }
  211. void CDlgAddNode::OnLbnDblclkListmonster()
  212. {
  213. // TODO: ??????????????
  214. int ind = m_listMonster.GetCurSel();
  215. CString str;
  216. m_listMonster.GetText(ind, str);
  217. m_listMonsterAdd.AddString(str);
  218. m_listMonster.DeleteString(ind);
  219. }
  220. void CDlgAddNode::OnLbnDblclkListmonsteradd()
  221. {
  222. // TODO: ??????????????
  223. int ind = m_listMonsterAdd.GetCurSel();
  224. CString str;
  225. m_listMonsterAdd.GetText(ind, str);
  226. m_listMonster.AddString(str);
  227. m_listMonsterAdd.DeleteString(ind);
  228. }
  229. void CDlgAddNode::OnBnClickedButaddM()
  230. {
  231. // TODO: ??????????????
  232. CString str;
  233. for(int i=0; i<m_listMonster.GetCount(); ++i)
  234. {
  235. m_listMonster.GetText(i, str);
  236. m_listMonsterAdd.AddString(str);
  237. }
  238. m_listMonster.ResetContent();
  239. }
  240. void CDlgAddNode::OnBnClickedButdelM()
  241. {
  242. // TODO: ??????????????
  243. CString str;
  244. for(int i=0; i<m_listMonsterAdd.GetCount(); ++i)
  245. {
  246. m_listMonsterAdd.GetText(i, str);
  247. m_listMonster.AddString(str);
  248. }
  249. m_listMonsterAdd.ResetContent();
  250. }
  251. BOOL CDlgAddNode::PreTranslateMessage(MSG* pMsg)
  252. {
  253. // TODO: ?????????/?????
  254. switch(pMsg->message)
  255. {
  256. case WM_CLOSE:
  257. MessageBox(_T("??DLGADDNODE"));
  258. return FALSE;
  259. case WM_MOUSEMOVE:
  260. break;
  261. }
  262. return CDialog::PreTranslateMessage(pMsg);
  263. }