ScoreListWnd.c
Upload User: shyhai1508
Upload Date: 2007-06-11
Package Size: 48k
Code Size: 4k
Category:

BREW

Development Platform:

Visual C++

  1. #include "ScoreListWnd.h"
  2. #include "AEEStdlib.h"
  3. #include "pfly.h"
  4. #include "pfly_res.h"
  5. static boolean ScoreListWnd_HandleKeyEvent(pthis, eCode, wParam);
  6. static void ScoreListWnd_Update(ScoreListWnd* pthis);
  7. static void ScoreListWnd_LoadList(ScoreListWnd* pthis);
  8. static void ScoreListWnd_SaveList(ScoreListWnd* pthis);
  9. boolean ScoreListWnd_New(ScoreListWnd *pthis, PflyApp* pMe)
  10. {
  11. pthis->pMe = pMe;
  12. MEMSET(pthis->scorelist, 0, sizeof(pthis->scorelist));
  13. ScoreListWnd_LoadList(pthis);
  14. return TRUE;
  15. }
  16. boolean ScoreListWnd_HandleEvent(ScoreListWnd* pthis, AEEEvent eCode, uint16 wParam, uint32 dwParam)
  17. {
  18. switch (eCode) {
  19. case EVT_APP_SUSPEND:
  20. return TRUE;
  21. case EVT_APP_RESUME:
  22. ScoreListWnd_Update(pthis);
  23. return TRUE;
  24. default:
  25. return ScoreListWnd_HandleKeyEvent(pthis, eCode, wParam);  
  26. }
  27. }
  28. static boolean ScoreListWnd_HandleKeyEvent(ScoreListWnd* pthis, AEEEvent eCode, uint16 wParam)
  29. {
  30. if( eCode == EVT_KEY) {
  31.   switch(wParam) {
  32. case AVK_CLR:
  33. return Pfly_SetActiveWnd(pthis->pMe, IDW_MAINMENU);
  34. default:
  35. return FALSE;
  36. }
  37. }
  38. return FALSE;
  39. }
  40. boolean ScoreListWnd_Open(ScoreListWnd* pthis)
  41. {
  42. ScoreListWnd_Update(pthis);
  43. return TRUE;
  44. }
  45. static void ScoreListWnd_Update(ScoreListWnd* pthis)
  46. {
  47. int loop;
  48. int screenX, screenY ,centerX, centerY;
  49. int stepH, stepW;
  50. AEEDeviceInfo deviceInfo;
  51. AECHAR   str[MAX_STRING_SIZE];
  52. char     temp[MAX_STRING_SIZE];
  53. IDisplay *m_pIDisplay = pthis->pMe->a.m_pIDisplay;
  54. IShell   *m_pIShell = pthis->pMe->a.m_pIShell;
  55. ISHELL_GetDeviceInfo(m_pIShell, &deviceInfo);
  56. screenX = deviceInfo.cxScreen;
  57. screenY = deviceInfo.cyScreen;
  58. centerX = screenX/2;
  59. centerY = screenY/2;
  60. stepH = IDISPLAY_GetFontMetrics(m_pIDisplay, AEE_FONT_NORMAL, NULL, NULL);
  61. stepW = stepH;
  62. IDISPLAY_ClearScreen(m_pIDisplay);
  63. IDISPLAY_FillRect(m_pIDisplay, NULL, MAKE_RGB(128,138,238));
  64. ISHELL_LoadResString(m_pIShell, PFLY_RES_FILE, IDS_MENU_SCOREVIEW, str, MAX_STRING_SIZE);
  65. IDISPLAY_DrawText(m_pIDisplay, AEE_FONT_BOLD, str, -1, 0,
  66. 5, NULL, IDF_ALIGN_CENTER | IDF_TEXT_TRANSPARENT);
  67. for(loop = 0; loop < MAX_LIST_LENGTH; loop ++) {
  68. SPRINTF(temp, "%d", loop+1);
  69. STRTOWSTR(temp, str, MAX_STRING_SIZE);
  70. IDISPLAY_DrawText(m_pIDisplay, AEE_FONT_NORMAL, str, -1,  0, (2+loop)*stepH, NULL, IDF_TEXT_TRANSPARENT);
  71. SPRINTF(temp, "%d", pthis->scorelist[loop]);
  72. STRTOWSTR(temp, str, MAX_STRING_SIZE);
  73. IDISPLAY_DrawText(m_pIDisplay, AEE_FONT_NORMAL, str, -1,  screenX-stepW*2, (2+loop)*stepH, NULL, IDF_TEXT_TRANSPARENT);
  74. }
  75. IDISPLAY_Update(m_pIDisplay);
  76. }
  77. void ScoreListWnd_Close(ScoreListWnd* pthis)
  78. {
  79. }
  80. void ScoreListWnd_Free(ScoreListWnd* pthis)
  81. {
  82. }
  83. static void ScoreListWnd_LoadList(ScoreListWnd* pthis)
  84. {
  85. IFileMgr *pFileMgr = NULL;
  86. IFile *pFile = NULL;
  87. IShell *pIShell = pthis->pMe->a.m_pIShell;
  88. int i;
  89. if(ISHELL_CreateInstance(pIShell, AEECLSID_FILEMGR, (void **)&pFileMgr) != SUCCESS)
  90. {
  91. return;
  92. }
  93. if((pFile = IFILEMGR_OpenFile(pFileMgr, LIST_FILE, _OFM_READWRITE)) == NULL){
  94. IFILEMGR_Release(pFileMgr);
  95. return;
  96. }
  97. for(i = 0; i < MAX_LIST_LENGTH; i ++)
  98. {
  99. IFILE_Read(pFile, &pthis->scorelist[i], sizeof(int));
  100. }
  101. IFILE_Release(pFile);
  102. IFILEMGR_Release(pFileMgr);
  103. }
  104. static void ScoreListWnd_SaveList(ScoreListWnd* pthis)
  105. {
  106. IFileMgr *pFileMgr = NULL;
  107. IFile *pFile = NULL;
  108. IShell *pIShell = pthis->pMe->a.m_pIShell;
  109. int i;
  110. if(ISHELL_CreateInstance(pIShell, AEECLSID_FILEMGR, (void **)&pFileMgr) != SUCCESS)
  111. {
  112. return;
  113. }
  114. if((pFile = IFILEMGR_OpenFile(pFileMgr, LIST_FILE, _OFM_READWRITE)) == NULL){
  115. IFILEMGR_Release(pFileMgr);
  116. return;
  117. }
  118. for(i = 0; i < MAX_LIST_LENGTH; i ++)
  119. {
  120. IFILE_Write(pFile, &pthis->scorelist[i], sizeof(int));
  121. }
  122. IFILE_Release(pFile);
  123. IFILEMGR_Release(pFileMgr);
  124. }
  125. boolean ScoreListWnd_AddToList(ScoreListWnd* pthis, int score)
  126. {
  127. int i, j;
  128. for(i = 0; i < MAX_LIST_LENGTH; i++)
  129. {
  130. if(score > pthis->scorelist[i]){
  131. break;
  132. }
  133. }
  134. if(i < MAX_LIST_LENGTH){
  135. for(j = MAX_LIST_LENGTH-1; j > i; j --)
  136. {
  137. pthis->scorelist[j] = pthis->scorelist[j-1];
  138. }
  139. pthis->scorelist[i] = score;
  140. ScoreListWnd_SaveList(pthis);
  141. return TRUE;
  142. }
  143. return FALSE;
  144. }