MapInfo.cpp
上传用户:garry_shen
上传日期:2015-04-15
资源大小:45647k
文件大小:10k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #include "XMudClient.h"
  3. #include "D3DRMScreen.h"
  4. #include "MapInfo.h"
  5. #include "MenuCreateNew.h"
  6. #include "FacePlate.h"
  7. #include "MyMusic.h"
  8. #include <Imm.h>
  9. #include "MyDInput.h"
  10. extern char g_szReceive[];
  11. extern char g_tszPathName[256];
  12. //extern char g_szSrvActiveBuf[2048];
  13. extern rmfullglobals myglobs;
  14. extern D3DAppInfo* d3dapp;
  15. extern LPDIRECT3DRM3 g_lpD3DRM;
  16. extern CRITICAL_SECTION csAnimation;
  17. extern CList <animationCallbackArgs *, animationCallbackArgs *> animationlist;
  18. extern animationCallbackArgs *cb;
  19. extern CList <CMapInfo *, CMapInfo *> maplist;
  20. extern CList<CPlayerInfo*,CPlayerInfo*>playerlist;
  21. extern CPlayerInfo * lpPlayerInfo;
  22. extern CList<CSkillInfo*,CSkillInfo*>skilllist;
  23. extern CSkillInfo * lpSkillInfo;
  24. extern CList<CEquipInfo*,CEquipInfo*>equiplist;
  25. extern CList<CEquipInfo*,CEquipInfo*>equiprentlist;
  26. extern CStringList g_equiprentlist;
  27. extern CEquipInfo *lpEquipInfo;
  28. extern CList<CExitInfo * ,CExitInfo*> exitlist;
  29. extern CExitInfo *lpExitInfo;
  30. extern int g_nGameState;
  31. extern BOOL g_bClientNet;
  32. extern LPDIRECT3DRMFRAME3 g_lpplayer;
  33. extern void QuitResolution(void);
  34. BOOL GetNewMap(CString strtmp)
  35. {
  36. CMapInfo * lpMapInfo;
  37. int i,j;
  38. CStringList strls,strlsmap;
  39. CString parm;
  40. double ftmp;
  41. LPTSTR lpsz;
  42. char *ps;
  43. BOOL bFindHead=FALSE;
  44. // strtmp = g_szReceive;
  45. lpsz = strtmp.GetBuffer(strtmp.GetLength()+1);
  46. parm=CString("t");
  47. ps=strtok(lpsz,(const char*)parm);
  48. strls.AddTail(ps);
  49. for(;;)
  50. {
  51. ps=strtok(NULL,(const char*)parm);
  52. if(ps==NULL)break;
  53. strls.AddTail(ps);
  54. }
  55. j = strls.GetCount();
  56. for(i=0;i<j;i++)
  57. {
  58. if(!bFindHead)
  59. {
  60. strtmp = strls.GetAt( strls.FindIndex(i));
  61. if(!lstrcmp("'MAPDATA'",strtmp) )
  62. bFindHead = TRUE;
  63. }
  64. else
  65. {
  66. strtmp = strls.GetAt( strls.FindIndex(i));
  67. if(!stricmp(strtmp,"'MAPDATAEND'"))
  68. break;
  69. else
  70. strlsmap.AddTail(strtmp);
  71. }
  72. }//end for(;;)
  73. strls.RemoveAll();
  74. if(!bFindHead)return FALSE;
  75. POSITION pos;
  76. pos = strlsmap.FindIndex(0);
  77. lpMapInfo = new CMapInfo;
  78. strtmp = strlsmap.GetNext(pos);
  79. lpMapInfo->m_sCNAME = strtmp.Mid(1,strtmp.GetLength()-2);
  80. strtmp = strlsmap.GetNext(pos);
  81. lpMapInfo->m_sENAME = strtmp.Mid(1,strtmp.GetLength()-2);
  82. strtmp = strlsmap.GetNext(pos);
  83. lpMapInfo->m_sXFILENAME = strtmp.Mid(1,strtmp.GetLength()-2);
  84. maplist.AddTail(lpMapInfo);
  85. for(i=0;i<strlsmap.GetCount();i++)
  86. {
  87. strtmp = strlsmap.GetAt(strlsmap.FindIndex(i));
  88. if(!stricmp(strtmp,"'EXITDATA'"))
  89. {
  90. lpMapInfo = new CMapInfo;
  91. strtmp = strlsmap.GetAt(strlsmap.FindIndex(i+1));
  92. lpMapInfo->m_sEXIT_DBF = strtmp.Mid(1,strtmp.GetLength()-2);
  93. strtmp = strlsmap.GetAt(strlsmap.FindIndex(i+2));
  94. lpMapInfo->m_sCNAME = strtmp.Mid(1,strtmp.GetLength()-2);;
  95. strtmp = strlsmap.GetAt(strlsmap.FindIndex(i+3));
  96. lpMapInfo->m_sENAME = strtmp.Mid(1,strtmp.GetLength()-2);;
  97. strtmp = strlsmap.GetAt( strlsmap.FindIndex(i+4));
  98. strtmp = strtmp.Mid(1,strtmp.GetLength()-2);
  99. lpsz = strtmp.GetBuffer(20);
  100. ftmp=strtod(lpsz,'');
  101. strtmp.ReleaseBuffer();
  102. lpMapInfo->m_fPOSITION_X = ftmp;
  103. strtmp = strlsmap.GetAt( strlsmap.FindIndex(i+5));
  104. strtmp = strtmp.Mid(1,strtmp.GetLength()-2);
  105. lpsz = strtmp.GetBuffer(20);
  106. ftmp=strtod(lpsz,'');
  107. strtmp.ReleaseBuffer();
  108. lpMapInfo->m_fPOSITION_Z = ftmp;
  109. maplist.AddTail(lpMapInfo);
  110. i += 5;
  111. }
  112. else if(!stricmp(strtmp,"'NPCDATA'"))
  113. {
  114. lpMapInfo = new CMapInfo;
  115. strtmp = strlsmap.GetAt(strlsmap.FindIndex(i+1));
  116. lpMapInfo->m_sCNAME = strtmp.Mid(1,strtmp.GetLength()-2);
  117. strtmp = strlsmap.GetAt(strlsmap.FindIndex(i+2));
  118. lpMapInfo->m_sENAME = strtmp.Mid(1,strtmp.GetLength()-2);
  119. strtmp = strlsmap.GetAt(strlsmap.FindIndex(i+3));
  120. lpMapInfo->m_sXFILENAME = strtmp.Mid(1,strtmp.GetLength()-2);
  121. strtmp = strlsmap.GetAt(strlsmap.FindIndex(i+4));
  122. lpMapInfo->m_sNPC_DBF = strtmp.Mid(1,strtmp.GetLength()-2);
  123. if(lpMapInfo->m_sNPC_DBF.IsEmpty())
  124. lpMapInfo->m_sNPC_DBF = "κ﹎";
  125. strtmp = strlsmap.GetAt(strlsmap.FindIndex(i+5));
  126. lpMapInfo->m_sMAPINFO = strtmp.Mid(1,strtmp.GetLength()-2);
  127. strtmp = strlsmap.GetAt(strlsmap.FindIndex(i+6));
  128. lpMapInfo->szPerson = strtmp.Mid(1,strtmp.GetLength()-2);
  129. maplist.AddTail(lpMapInfo);
  130. i += 6;
  131. }
  132. else if(!stricmp(strtmp,"'PLAYDATA'"))
  133. {
  134. lpMapInfo = new CMapInfo;
  135. strtmp = strlsmap.GetAt(strlsmap.FindIndex(i+1));
  136. lpMapInfo->m_sCNAME = strtmp.Mid(1,strtmp.GetLength()-2);
  137. strtmp = strlsmap.GetAt(strlsmap.FindIndex(i+2));
  138. lpMapInfo->m_sENAME = strtmp.Mid(1,strtmp.GetLength()-2);
  139. strtmp = strlsmap.GetAt(strlsmap.FindIndex(i+3));
  140. lpMapInfo->m_sXFILENAME = strtmp.Mid(1,strtmp.GetLength()-2);
  141. strtmp = strlsmap.GetAt(strlsmap.FindIndex(i+4));
  142. lpMapInfo->m_sPLAYER_DBF = strtmp.Mid(1,strtmp.GetLength()-2);
  143. if(lpMapInfo->m_sPLAYER_DBF.IsEmpty())
  144. lpMapInfo->m_sPLAYER_DBF = "κ﹎";
  145. strtmp = strlsmap.GetAt(strlsmap.FindIndex(i+5));
  146. lpMapInfo->m_sMAPINFO = strtmp.Mid(1,strtmp.GetLength()-2);
  147. strtmp = strlsmap.GetAt(strlsmap.FindIndex(i+6));
  148. lpMapInfo->szPerson = strtmp.Mid(1,strtmp.GetLength()-2);
  149. strtmp = strlsmap.GetAt(strlsmap.FindIndex(i+7));
  150. lpMapInfo->szPlayerIP = strtmp.Mid(1,strtmp.GetLength()-2);
  151. strtmp = strlsmap.GetAt(strlsmap.FindIndex(i+8));
  152. lpMapInfo->m_sTITLE = strtmp.Mid(1,strtmp.GetLength()-2);
  153. maplist.AddTail(lpMapInfo);
  154. i += 8;
  155. }
  156. }
  157. return TRUE;
  158. }
  159. CString GetMapMessage(CString sFileName)
  160. {
  161. CString buf;
  162. CFile file;
  163. char szFileName[256];
  164. strcpy(szFileName,g_tszPathName);
  165. strcat(szFileName,"\muddata\mapmsg.dat");
  166. if( !file.Open( szFileName, CFile::modeRead , NULL ) )
  167. {
  168. return sFileName;
  169. }
  170. CArchive ar(&file,CArchive::load);
  171. while(ar.ReadString(buf))
  172. {
  173. if( sFileName == buf )
  174. {
  175. ar.ReadString(buf);
  176. sFileName = CString("