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

游戏引擎

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #include "XMudClient.h"
  3. #include "MainWnd.h"
  4. extern D3DAppInfo* d3dapp;          
  5. extern rmfullglobals myglobs;
  6. static struct {
  7.   HFONT hFont;
  8.   SIZE szFrameRate;
  9.   SIZE szInfo;
  10. } statglobs;
  11. HFONT g_MessagehFont;
  12. HFONT g_MessagehFont1;
  13. HFONT g_MessagehFont2;
  14. HFONT g_MessagehFont3;
  15. HFONT g_MessagehFont4;
  16. BOOL WriteFrameRateBuffer(float fps, long tps)
  17. {
  18.   HRESULT LastError;
  19.   HDC hdc;
  20.   RECT rc;
  21.   char buf1[30], buf2[30], buf[60];
  22.   int len;
  23.   
  24.   if (!myglobs.lpFrameRateBuffer)
  25.     return TRUE;
  26.   if (fps > 0.0f)
  27.     wsprintf(buf1, "%d.%02d fps   ",
  28.     (int)( fps * 100 ) / 100,
  29.     (int)( fps * 100 ) % 100);
  30.   else
  31.     buf1[0] = 0;
  32.   if (tps > 0)
  33.     wsprintf(buf2, "%ld tps   ", tps);
  34.   else
  35.     buf2[0] = 0;
  36.   len = wsprintf(buf, "%s%s", buf1, buf2);
  37.   if (!myglobs.lpFrameRateBuffer)
  38.     return FALSE;
  39.   LastError = myglobs.lpFrameRateBuffer->GetDC(&hdc);
  40.   if (LastError != DD_OK) 
  41.   {
  42.     return TRUE;
  43.   }
  44.   SelectObject(hdc, statglobs.hFont);
  45.   SetTextColor(hdc, RGB(255,255,0));
  46.   SetBkColor(hdc, RGB(0,0,0));
  47.   SetBkMode(hdc, OPAQUE);
  48.   GetTextExtentPoint32(hdc, buf, len, &statglobs.szFrameRate);
  49.   SetRect(&rc, 0, 0, statglobs.szFrameRate.cx, statglobs.szFrameRate.cy);
  50.   ExtTextOut(hdc, 0, 0, ETO_OPAQUE, &rc, buf, len, NULL);
  51.   myglobs.lpFrameRateBuffer->ReleaseDC(hdc);
  52.   return TRUE;
  53. }
  54. BOOL WriteInfoBuffer(void)
  55. {
  56.   HRESULT LastError;
  57.   HDC hdc;
  58.   RECT rc;
  59.   char buf[40];
  60.   int len;
  61.   
  62.   if (!myglobs.lpInfoBuffer)
  63.     return TRUE;
  64.   if (d3dapp->bFullscreen)
  65.     len = wsprintf(buf, "%dx%dx%d (%s)", d3dapp->ThisMode.w, d3dapp->ThisMode.h, d3dapp->ThisMode.bpp,
  66.     (d3dapp->ThisDriver.Desc.dcmColorModel == D3DCOLOR_MONO) ? "MONO" : "RGB");
  67.   else
  68.     len = wsprintf(buf, "%dx%d (%s)", d3dapp->szClient.cx, d3dapp->szClient.cy,
  69.     (d3dapp->ThisDriver.Desc.dcmColorModel == D3DCOLOR_MONO) ? "MONO" : "RGB");
  70.   if (!myglobs.lpInfoBuffer)
  71.     return FALSE;
  72.   LastError = myglobs.lpInfoBuffer->GetDC(&hdc);
  73.   if (LastError != DD_OK) {
  74.     //
  75.     //  This is not vital, don't report an error.
  76.     //
  77.     return TRUE;
  78.   }
  79.   
  80.   SelectObject(hdc, statglobs.hFont);
  81.   SetTextColor(hdc, RGB(255,255,0));
  82.   SetBkColor(hdc, RGB(0,0,0));
  83.   SetBkMode(hdc, OPAQUE);
  84.   GetTextExtentPoint32(hdc, buf, len, &statglobs.szInfo);
  85.   SetRect(&rc, 0, 0, statglobs.szInfo.cx, statglobs.szInfo.cy);
  86.   ExtTextOut(hdc, 0, 0, ETO_OPAQUE, &rc, buf, len, NULL);
  87.   myglobs.lpInfoBuffer->ReleaseDC(hdc);
  88.   return TRUE;
  89. }
  90. BOOL InitFontAndTextBuffers(void)
  91. {
  92.   DDCOLORKEY          ddck;
  93.   DDSURFACEDESC       ddsd;
  94.   HDC hdc;
  95.   HRESULT ddrval;
  96.   char dummyinfo[] = "000x000x00 (MONO) 0000";
  97.   char dummyfps[] = "000.00 fps 00000000.00 tps 0000.00 mppps";
  98.   RELEASE(myglobs.lpInfoBuffer);
  99.   RELEASE(myglobs.lpFrameRateBuffer);
  100.   if (statglobs.hFont != NULL) {
  101.     DeleteObject(statglobs.hFont);
  102.   }
  103.   statglobs.hFont = CreateFont(
  104.     -12,
  105.     0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE,
  106.     CHINESEBIG5_CHARSET,
  107.     OUT_DEFAULT_PRECIS,
  108.     CLIP_DEFAULT_PRECIS,
  109.     DEFAULT_QUALITY,
  110.     VARIABLE_PITCH,
  111.     "穝灿