📄 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 + -