MirGui.cpp
上传用户:marco7834
上传日期:2010-02-24
资源大小:82k
文件大小:6k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. // MirGui.cpp : Defines the entry point for the application.
  2. //
  3. #include "stdafx.h"
  4. #include "resource.h"
  5. #include "mirgroup.h"
  6. #include <windowsx.h>
  7. #include <stdio.h>
  8. #include "mirgame.h"
  9. #include "mirminimap.h"
  10. #include "mirgamemap.h"
  11. #define MAX_LOADSTRING 100
  12. #define MAX_LOGLINES 100
  13. #define MINIMAP_WIDTH 120
  14. #define MINIMAP_HEIGHT 120
  15. #define MINIMAP_DISPLAYX 636
  16. #define MINIMAP_DISPLAYY 17
  17. // Global Variables:
  18. HINSTANCE hInst; // current instance
  19. HWND g_hSysLog = NULL;
  20. HWND g_hChatLog = NULL;
  21. HWND g_hMainDlg = NULL;
  22. CMirGame mirgame;
  23. CMirMiniMap * pMiniMap;
  24. CMirGameMap * pGameMap;
  25. int minimap_x = 325;
  26. int minimap_y = 267;
  27. LRESULT CALLBACK MirGuiDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
  28. VOID CALLBACK TimerProc2(
  29.     HWND hwnd, // handle of window for timer messages 
  30.     UINT uMsg, // WM_TIMER message
  31.     UINT idEvent, // timer identifier
  32.     DWORD dwTime  // current system time
  33.    )
  34. {
  35. int dirbits=0;
  36. char tmpStr[200];
  37. int bs = 0;
  38. if( GetKeyState( VK_UP ) & 0x80 )
  39. {
  40. minimap_y --;
  41. dirbits |= 1;
  42. //mirgame.LogChat( "(%d,%d)", minimap_x, minimap_y );
  43. }
  44. if( GetKeyState( VK_RETURN ) & 0x80 && GetKeyState( VK_CONTROL ) & 0x80 )
  45. {
  46. if( GetFocus() == GetDlgItem( g_hMainDlg, ED_CHAT ))
  47. {
  48. GetDlgItemText( g_hMainDlg, ED_CHAT, tmpStr, 200 );
  49. SetDlgItemText( g_hMainDlg, ED_CHAT, "" );
  50. bs = strlen( tmpStr );
  51. if( bs > 0 )
  52. {
  53. if( tmpStr[bs-2]== 0x0d && tmpStr[bs-1] == 0x0a )
  54. tmpStr[bs-2] = '';
  55. mirgame.Say( tmpStr );
  56. }
  57. }
  58. }
  59. if( GetKeyState( VK_DOWN ) & 0x80 )
  60. {
  61. dirbits |= 4;
  62. minimap_y ++;
  63. //mirgame.LogChat( "(%d,%d)", minimap_x, minimap_y );
  64. }
  65. if( GetKeyState( VK_LEFT ) & 0x80 )
  66. {
  67. dirbits |= 8;
  68. minimap_x --;
  69. //mirgame.LogChat( "(%d,%d)", minimap_x, minimap_y );
  70. }
  71. if( GetKeyState( VK_RIGHT ) & 0x80 )
  72. {
  73. dirbits |= 2;
  74. minimap_x ++;
  75. //mirgame.LogChat( "(%d,%d)", minimap_x, minimap_y );
  76. }
  77. switch( dirbits )
  78. {
  79. case 1:
  80. dirbits = 0;
  81. break;
  82. case 2:
  83. dirbits = 2;
  84. break;
  85. case 4:
  86. dirbits = 4;
  87. break;
  88. case 8:
  89. dirbits = 6;
  90. break;
  91. case 3:
  92. dirbits = 1;
  93. break;
  94. case 6:
  95. dirbits = 3;
  96. break;
  97. case 12:
  98. dirbits = 5;
  99. break;
  100. case 9:
  101. dirbits = 7;
  102. break;
  103. default:
  104. dirbits = 9;
  105. }
  106. //mirgame.Run( dirbits );
  107. }
  108. VOID CALLBACK TimerProc(
  109.     HWND hwnd, // handle of window for timer messages 
  110.     UINT uMsg, // WM_TIMER message
  111.     UINT idEvent, // timer identifier
  112.     DWORD dwTime  // current system time
  113.    )
  114. {
  115. HDC hdc;
  116. hdc = GetDC( g_hMainDlg );
  117. pMiniMap->Draw( hdc, 635, 15, 120, 120 );
  118. pGameMap->Draw( hdc, 420, 20 );
  119. ReleaseDC( g_hMainDlg, hdc );
  120. return ;
  121. }
  122. int APIENTRY WinMain(HINSTANCE hInstance,
  123.                      HINSTANCE hPrevInstance,
  124.                      LPSTR     lpCmdLine,
  125.                      int       nCmdShow)
  126. {
  127. // minimap.InitMiniMap( "d:/mmap.wix", "d:/mmap.wil" );
  128. // minimap.SetMMap( 160 );
  129. SetTimer( 0, 0, 10, TimerProc );
  130. SetTimer( 0, 0, 10, TimerProc2 );
  131. pGameMap = mirgame.GetGameMap();
  132. pMiniMap = mirgame.GetMiniMap();
  133. DialogBox(hInst, (LPCTSTR)IDD_MIRGUIDLG,GetDesktopWindow(), (DLGPROC)MirGuiDlgProc);
  134. return 0;
  135. }
  136. DWORD ThreadProc( PVOID * p )
  137. {
  138. return mirgame.EnterGame( 1 );
  139. }
  140. LRESULT CALLBACK MirGuiDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
  141. {
  142. DWORD idcmd;
  143. static int AreaId = 0;
  144. static int ServerId = 0;
  145. static int xofs = 0,yofs = 0;
  146. static BOOL bMouseDown = FALSE;
  147. static POINT pt;
  148. static RECT rcWindow;
  149. char tmpStr[200];
  150. char servername[64];
  151. char serverip[64];
  152. char Account[64];
  153. char Password[64];
  154. DWORD pid;
  155. switch (message)
  156. {
  157. case WM_INITDIALOG:
  158. //SetWindowRgn( hDlg, h, FALSE );
  159. g_hMainDlg = hDlg;
  160. g_hSysLog = GetDlgItem( hDlg, LB_SYSLOG );
  161. g_hChatLog = GetDlgItem( hDlg, LB_CHATLOG );
  162. mirgame.InitLogSystem( g_hSysLog, g_hChatLog, MAX_LOGLINES );
  163. SetGroupFile( "group.dat" );
  164. SetAreaList( GetDlgItem( hDlg, CB_AREA ));
  165. SetServerCaptionList( GetDlgItem( hDlg, CB_SERVER ), 0 );
  166. //SetWindowLong( hDlg, GWL_ID, 0 );
  167. GetWindowRect( hDlg, &rcWindow );
  168. mirgame.LogChat( "%d, %d - %d, %d", rcWindow.left, rcWindow.top, rcWindow.right ,rcWindow.bottom );
  169. return TRUE;
  170. case WM_PAINT:
  171. break;
  172. case WM_LBUTTONDOWN:
  173. break;
  174. case WM_LBUTTONUP:
  175. break;
  176. case WM_MOUSEMOVE:
  177. break;
  178. case WM_CLOSE:
  179. EndDialog(hDlg, LOWORD(wParam));
  180. return TRUE;
  181. break;
  182. case WM_COMMAND:
  183. idcmd = LOWORD( wParam );
  184. switch( idcmd )
  185. {
  186. case CB_SERVER:
  187. ServerId = ComboBox_GetCurSel(GetDlgItem( hDlg, CB_SERVER));
  188. break;
  189. case CB_AREA:
  190. AreaId = ComboBox_GetCurSel(GetDlgItem( hDlg, CB_AREA));
  191. SetServerCaptionList( GetDlgItem( hDlg, CB_SERVER ), AreaId );
  192. ServerId = ComboBox_GetCurSel(GetDlgItem( hDlg, CB_SERVER));
  193. break;
  194. case BT_CONNECT:
  195. GetServerName( AreaId, ServerId, servername );
  196. GetIpAddress( AreaId, serverip );
  197. sprintf( tmpStr, "%s:%s", servername, serverip );
  198. if( !mirgame.OpenGateServer( serverip ) )
  199. break;
  200. GetDlgItemText( hDlg, ED_ACCOUNT, Account, 64 );
  201. GetDlgItemText( hDlg, ED_PASSWORD, Password, 64 );
  202. //if( strlen( Account ) > 0 && strlen( Password ) > 4 )
  203. {
  204. if( mirgame.Login( Account, Password ) )
  205. {
  206. //mirgame.LogSystem( servername );
  207.     if( mirgame.EnterServer( servername ))
  208. {
  209. if( mirgame.EnterSelCharServer() )
  210. {
  211. CreateThread( NULL, 1024 * 1024 * 1, (LPTHREAD_START_ROUTINE)ThreadProc, 0, 0, &pid );
  212. //mirgame.EnterGame( 0 );
  213. }
  214. }
  215. }
  216. }
  217. //MessageBox( 0, tmpStr, 0, 0 );
  218. //LogToList( GetDlgItem( hDlg, LB_SYSLOG ), tmpStr );
  219. // LogSystem( tmpStr );
  220. //ComboBox_GetCurSel( GetDlgItem(hDlg, CB_SERVER ))
  221. break;
  222. case BT_DISCONNECT:
  223. mirgame.Logout();
  224. break;
  225. case BT_SEND:
  226. GetDlgItemText( hDlg, ED_CHAT, tmpStr, 200 );
  227. if( strlen( tmpStr ) > 0 )
  228. mirgame.Say( tmpStr );
  229. break;
  230. }
  231. break;
  232. }
  233.     return FALSE;
  234. }
  235. LRESULT CALLBACK MirGuiDlgProc2(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
  236. {
  237. // DWORD idcmd;
  238. switch (message)
  239. {
  240. case WM_INITDIALOG:
  241. return TRUE;
  242. case WM_CLOSE:
  243. EndDialog(hDlg, LOWORD(wParam));
  244. return TRUE;
  245. break;
  246. case WM_COMMAND:
  247. break;
  248. }
  249.     return FALSE;
  250. }