?? interface.cpp
字號:
//--------------------------------------------------
// Desc: 引擎主接口
// Author: artsylee/2007.3.12
//--------------------------------------------------
#include "../stdafx.h"
#include "Interface.h"
#include "Graphics.h"
#include "TextureManager.h"
#include "FrameManager.h"
#include "../gui/GUIManager.h"
#include "Application.h"
#include "Input.h"
#include "Font.h"
#include "Common.h"
#include "IniFile.h"
extern bool g_bMultiSample;
//---------------------------------------------------
// 系統主要接口
//---------------------------------------------------
ASINLINE IDirect3DDevice9* __stdcall GetD3DDevice(void) { return g_pD3DDevice; }
ASINLINE CTextureManager* __stdcall GetTextureManager(void) { return g_pTextureManager;}
ASINLINE CMessageManager* __stdcall GetMessageManager(void) { return g_pMessageManager;}
ASINLINE CFrameManager* __stdcall GetFrameManager(void) { return g_pFrameManager; }
ASINLINE GUIManager* __stdcall GetGUIManager(void) { return g_pGUIManager; }
ASINLINE CGraphics* __stdcall GetGraphics(void) { return g_pGraphics; }
ASINLINE CGameApp* __stdcall GetMainApp(void) { return g_pGameApp; }
ASINLINE CLog* __stdcall GetLog(void) { return g_pLog; }
//---------------------------------------------------
// 狀態檢測
//---------------------------------------------------
ASE_DLL bool __stdcall IsSupportFSAA(void) { return g_bMultiSample; }
//---------------------------------------------------
// 渲染接口
//---------------------------------------------------
ASINLINE void __stdcall Render(DWORD hTex, int x, int y, const RECT *rc, DWORD color)
{
#ifdef ASDEBUG
if(g_pGraphics == NULL) return;
#endif
g_pGraphics->Render(hTex, x, y, rc, color);
}
ASINLINE void __stdcall Render(DWORD hTex, const RECT *rcdst, const RECT *rc, DWORD color)
{
#ifdef ASDEBUG
if(g_pGraphics == NULL) return;
#endif
g_pGraphics->RenderSprite(hTex, rcdst, rc, color);
}
ASINLINE void __stdcall Render(DWORD hTex, int x, int y, float xScale, float yScale,
const RECT *rc, DWORD color)
{
#ifdef ASDEBUG
if(g_pGraphics == NULL) return;
#endif
// 暫時無Sprite版本(可能無法顯示)
g_pGraphics->Render(hTex, x, y, xScale, yScale, rc, color);
}
ASINLINE void __stdcall RenderCenter(DWORD hTex, int centerx, int centery,
float xScale, float yScale, const RECT *rc /* = NULL */,
DWORD color /* = 0xffffffff */)
{
}
//---------------------------------------------------
// 輸出一行文字
//---------------------------------------------------
void __stdcall DrawSingleLine(int x, int y, DWORD color, bool bCenter, const char *pString, ...)
{
char szText[256];
va_list va;
va_start(va, pString);
vsprintf(szText, pString, va);
va_end(va);
g_Font.DrawSingleLine(x, y, color, bCenter, szText);
}
//---------------------------------------------------
// 獲取標準字符串的大小
//---------------------------------------------------
RECT __stdcall GetFontRect(const char *pString)
{
return g_Font.GetStringRect(pString);
}
//---------------------------------------------------
// 鍵盤鼠標輸入緩沖數據
//---------------------------------------------------
ASINLINE stInputInfo __stdcall GetInputInfo(void)
{
return g_stInputInfo;
}
//---------------------------------------------------
// 鍵盤立即數據
//---------------------------------------------------
ASINLINE bool __stdcall IsKeyDown(int key)
{
return g_Input.GetKeyPtr()->IsKeyDown(key);
}
//---------------------------------------------------
// 鼠標立即數據
//---------------------------------------------------
ASINLINE bool __stdcall IsMouseDown(unsigned char mouse)
{
return g_Input.GetMousePtr()->IsKeyDown(mouse);
}
//---------------------------------------------------
// 鼠標指針偏移的立即數據
//---------------------------------------------------
ASINLINE bool __stdcall GetPointerOffset(long *x, long *y, long *z)
{
g_Input.GetMousePtr()->GetPointerOffset(x, y, z);
return true;
}
//---------------------------------------------------
// 紋理相關
//---------------------------------------------------
ASINLINE DWORD __stdcall LoadTexture(const char *szFilename)
{
#ifdef ASDEBUG
if(g_pTextureManager == NULL) return INVALID_HANDLE;
#endif
return g_pTextureManager->LoadTexture(szFilename);
}
ASINLINE DWORD __stdcall LoadAMFTexture(const char *szFilename, DWORD index /* = 0 */)
{
#ifdef ASDEBUG
if(g_pTextureManager == NULL) return INVALID_HANDLE;
#endif
return g_pTextureManager->LoadAMFTexture(szFilename, index);
}
ASINLINE void __stdcall ReleaseTexture(DWORD hHandle)
{
//#ifdef ASDEBUG
if(g_pTextureManager == NULL) return;
//#endif
g_pTextureManager->ReleaseTexture(hHandle);
}
ASINLINE void __stdcall DestroyTexture(DWORD hHandle)
{
//#ifdef ASDEBUG
if(g_pTextureManager == NULL) return;
//#endif
g_pTextureManager->DestroyTexture(hHandle);
}
//---------------------------------------------------
// IniFile自定義結構與D3DXVECTOR的轉換
//---------------------------------------------------
ASINLINE D3DXVECTOR2 __stdcall Vec2DToD3D(const Vec2D &vec)
{
return D3DXVECTOR2(vec.x, vec.y);
}
ASINLINE D3DXVECTOR3 __stdcall Vec3DToD3D(const Vec3D &vec)
{
return D3DXVECTOR3(vec.x, vec.y, vec.z);
}
ASINLINE Vec2D __stdcall D3DToVec2D(const D3DXVECTOR2 &vec)
{
return Vec2D(vec.x, vec.y);
}
ASINLINE Vec3D __stdcall D3DToVec3D(const D3DXVECTOR3 &vec)
{
return Vec3D(vec.x, vec.y, vec.z);
}
//---------------------------------------------------
// 其它函數
//---------------------------------------------------
void __stdcall ShowMessage(const char *msg,...)
{
va_list va;
char szMsg[MSGLEN];
va_start(va, msg);
vsprintf(szMsg, msg, va);
va_end(va);
MessageBox(NULL, szMsg, "Message", MB_OK);
}
ASINLINE int __stdcall FloatToIntAver(float fParam)
{
int temp = (int)fParam;
float fRes = fParam - (float)temp;
if(fRes >= 0.5f)
{
++temp;
}
return temp;
}
ASINLINE int __stdcall RandomInt(int min, int max)
{
return min + rand()*(max-min)/RAND_MAX;
}
ASINLINE float __stdcall RandomFloat(float min, float max)
{
return min + rand()*(1.0f/RAND_MAX)*(max-min);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -