diff options
Diffstat (limited to 'hgewin/hge_impl.h')
-rwxr-xr-x | hgewin/hge_impl.h | 356 |
1 files changed, 0 insertions, 356 deletions
diff --git a/hgewin/hge_impl.h b/hgewin/hge_impl.h deleted file mode 100755 index 244dafc..0000000 --- a/hgewin/hge_impl.h +++ /dev/null @@ -1,356 +0,0 @@ -// -*- C++ -*- -/* -** Haaf's Game Engine 1.8 -** Copyright (C) 2003-2007, Relish Games -** hge.relishgames.com -** -** Common core implementation header -** Upgraded to DirectX9 By Chris Xiong, 2013/08/08 -*/ - - -#ifndef HGE_IMPL_H -#define HGE_IMPL_H - -#include "hge.h" -#include <stdio.h> -#include <d3d9.h> -#include <d3dx9.h> - -#define DEMO - -#define D3DFVF_HGEVERTEX (D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1) -#define VERTEX_BUFFER_SIZE 4000 - - -typedef BOOL (WINAPI *GetSystemPowerStatusFunc)(LPSYSTEM_POWER_STATUS); - - -struct CRenderTargetList -{ - int width; - int height; - IDirect3DTexture9* pTex; - IDirect3DSurface9* pDepth; - CRenderTargetList* next; -}; - -struct CTextureList -{ - HTEXTURE tex; - int width; - int height; - CTextureList* next; -}; - -struct CResourceList -{ - char filename[_MAX_PATH]; - char password[64]; - CResourceList* next; -}; - -struct CStreamList -{ - HSTREAM hstream; - void* data; - CStreamList* next; -}; - -struct CInputEventList -{ - hgeInputEvent event; - CInputEventList* next; -}; - - -void DInit(); -void DDone(); -bool DFrame(); - - -/* -** HGE Interface implementation -*/ -class HGE_Impl : public HGE -{ -public: - virtual void CALL Release(); - - virtual bool CALL System_Initiate(); - virtual void CALL System_Shutdown(); - virtual bool CALL System_Start(); - virtual void CALL System_SetStateBool (hgeBoolState state, bool value); - virtual void CALL System_SetStateFunc (hgeFuncState state, hgeCallback value); - virtual void CALL System_SetStateHwnd (hgeHwndState state, HWND value); - virtual void CALL System_SetStateInt (hgeIntState state, int value); - virtual void CALL System_SetStateString(hgeStringState state, const char *value); - virtual bool CALL System_GetStateBool (hgeBoolState ); - virtual hgeCallback CALL System_GetStateFunc (hgeFuncState ); - virtual HWND CALL System_GetStateHwnd (hgeHwndState ); - virtual int CALL System_GetStateInt (hgeIntState ); - virtual const char* CALL System_GetStateString(hgeStringState); - virtual const char* CALL System_GetErrorMessage(); - virtual void CALL System_Log(const char *format, ...); - virtual bool CALL System_Launch(const char *url); - virtual void CALL System_Snapshot(const char *filename=0); - - virtual void* CALL Resource_Load(const char *filename, DWORD *size=0); - virtual void CALL Resource_Free(void *res); - virtual bool CALL Resource_AttachPack(const char *filename, const char *password=0); - virtual void CALL Resource_RemovePack(const char *filename); - virtual void CALL Resource_RemoveAllPacks(); - virtual char* CALL Resource_MakePath(const char *filename=0); - virtual char* CALL Resource_EnumFiles(const char *wildcard=0); - virtual char* CALL Resource_EnumFolders(const char *wildcard=0); - - virtual void CALL Ini_SetInt(const char *section, const char *name, int value); - virtual int CALL Ini_GetInt(const char *section, const char *name, int def_val); - virtual void CALL Ini_SetFloat(const char *section, const char *name, float value); - virtual float CALL Ini_GetFloat(const char *section, const char *name, float def_val); - virtual void CALL Ini_SetString(const char *section, const char *name, const char *value); - virtual char* CALL Ini_GetString(const char *section, const char *name, const char *def_val); - - virtual void CALL Random_Seed(int seed=0); - virtual int CALL Random_Int(int min, int max); - virtual float CALL Random_Float(float min, float max); - - virtual float CALL Timer_GetTime(); - virtual float CALL Timer_GetDelta(); - virtual int CALL Timer_GetFPS(); - virtual float CALL Timer_GetFPSf(); - - virtual HEFFECT CALL Effect_Load(const char *filename, DWORD size=0); - virtual void CALL Effect_Free(HEFFECT eff); - virtual HCHANNEL CALL Effect_Play(HEFFECT eff); - virtual HCHANNEL CALL Effect_PlayEx(HEFFECT eff, float volume=1.0, float pan=0.0, float pitch=1.0f, bool loop=false); - - virtual HMUSIC CALL Music_Load(const char *filename, DWORD size=0); - virtual void CALL Music_Free(HMUSIC mus); - virtual HCHANNEL CALL Music_Play(HMUSIC mus, bool loop, int volume = 100, int order = 0, int row = 0); - virtual void CALL Music_SetAmplification(HMUSIC music, int ampl); - virtual int CALL Music_GetAmplification(HMUSIC music); - virtual int CALL Music_GetLength(HMUSIC music); - virtual void CALL Music_SetPos(HMUSIC music, int order, int row); - virtual bool CALL Music_GetPos(HMUSIC music, int *order, int *row); - virtual void CALL Music_SetInstrVolume(HMUSIC music, int instr, int volume); - virtual int CALL Music_GetInstrVolume(HMUSIC music, int instr); - virtual void CALL Music_SetChannelVolume(HMUSIC music, int channel, int volume); - virtual int CALL Music_GetChannelVolume(HMUSIC music, int channel); - - virtual HSTREAM CALL Stream_Load(const char *filename, DWORD size=0); - virtual void CALL Stream_Free(HSTREAM stream); - virtual HCHANNEL CALL Stream_Play(HSTREAM stream, bool loop, int volume = 100); - - virtual void CALL Channel_SetPanning(HCHANNEL chn, float pan); - virtual void CALL Channel_SetVolume(HCHANNEL chn, float volume); - virtual void CALL Channel_SetPitch(HCHANNEL chn, float pitch); - virtual void CALL Channel_Pause(HCHANNEL chn); - virtual void CALL Channel_Resume(HCHANNEL chn); - virtual void CALL Channel_Stop(HCHANNEL chn); - virtual void CALL Channel_PauseAll(); - virtual void CALL Channel_ResumeAll(); - virtual void CALL Channel_StopAll(); - virtual bool CALL Channel_IsPlaying(HCHANNEL chn);
- virtual float CALL Channel_GetLength(HCHANNEL chn);
- virtual float CALL Channel_GetPos(HCHANNEL chn);
- virtual void CALL Channel_SetPos(HCHANNEL chn, float fSeconds);
- virtual int CALL Channel_GetPos_BySample(HCHANNEL chn);
- virtual void CALL Channel_SetPos_BySample(HCHANNEL chn, int iSample);
- virtual void CALL Channel_SlideTo(HCHANNEL channel, float time, int volume, int pan = -101, float pitch = -1);
- virtual bool CALL Channel_IsSliding(HCHANNEL channel); - - virtual void CALL Input_GetMousePos(float *x, float *y); - virtual void CALL Input_SetMousePos(float x, float y); - virtual int CALL Input_GetMouseWheel(); - virtual bool CALL Input_IsMouseOver(); - virtual bool CALL Input_KeyDown(int key); - virtual bool CALL Input_KeyUp(int key); - virtual bool CALL Input_GetKeyState(int key); - virtual int CALL Input_GetKeyStateEx(int key); - virtual const char* CALL Input_GetKeyName(int key); - virtual int CALL Input_GetKey(); - virtual int CALL Input_GetChar(); - virtual bool CALL Input_GetEvent(hgeInputEvent *event); - - virtual bool CALL Gfx_BeginScene(HTARGET target=0); - virtual void CALL Gfx_EndScene(); - virtual void CALL Gfx_Clear(DWORD color); - virtual void CALL Gfx_RenderLine(float x1, float y1, float x2, float y2, DWORD color=0xFFFFFFFF, float z=0.5f); - virtual void CALL Gfx_RenderTriple(const hgeTriple *triple); - virtual void CALL Gfx_RenderQuad(const hgeQuad *quad); - virtual hgeVertex* CALL Gfx_StartBatch(int prim_type, HTEXTURE tex, int blend, int *max_prim); - virtual void CALL Gfx_FinishBatch(int nprim); - virtual void CALL Gfx_SetClipping(int x=0, int y=0, int w=0, int h=0); - virtual void CALL Gfx_SetTransform(float x=0, float y=0, float dx=0, float dy=0, float rot=0, float hscale=0, float vscale=0); - - virtual HTARGET CALL Target_Create(int width, int height, bool zbuffer); - virtual void CALL Target_Free(HTARGET target); - virtual HTEXTURE CALL Target_GetTexture(HTARGET target); - - virtual HTEXTURE CALL Texture_Create(int width, int height); - virtual HTEXTURE CALL Texture_Load(const char *filename, DWORD size=0, bool bMipmap=false); - virtual void CALL Texture_Free(HTEXTURE tex); - virtual int CALL Texture_GetWidth(HTEXTURE tex, bool bOriginal=false); - virtual int CALL Texture_GetHeight(HTEXTURE tex, bool bOriginal=false); - virtual DWORD* CALL Texture_Lock(HTEXTURE tex, bool bReadOnly=true, int left=0, int top=0, int width=0, int height=0); - virtual void CALL Texture_Unlock(HTEXTURE tex); - - //////// Implementation //////// - - static HGE_Impl* _Interface_Get(); - void _FocusChange(bool bAct); - void _PostError(const char *error); - - - HINSTANCE hInstance; - HWND hwnd; - - bool bActive; - char szError[256]; - char szAppPath[_MAX_PATH]; - char szIniString[256]; - - - // System States - bool (*procFrameFunc)(); - bool (*procRenderFunc)(); - bool (*procFocusLostFunc)(); - bool (*procFocusGainFunc)(); - bool (*procGfxRestoreFunc)(); - bool (*procExitFunc)(); - const char* szIcon; - char szWinTitle[256]; - int nScreenWidth; - int nScreenHeight; - int nScreenBPP; - bool bWindowed; - bool bZBuffer; - bool bTextureFilter; - char szIniFile[_MAX_PATH]; - char szLogFile[_MAX_PATH]; - bool bUseSound; - int nSampleRate; - int nFXVolume; - int nMusVolume; - int nStreamVolume; - int nHGEFPS; - bool bHideMouse; - bool bDontSuspend; - HWND hwndParent; - - #ifdef DEMO - bool bDMO; - #endif - - - // Power - int nPowerStatus; - HMODULE hKrnl32; - GetSystemPowerStatusFunc lpfnGetSystemPowerStatus; - - void _InitPowerStatus(); - void _UpdatePowerStatus(); - void _DonePowerStatus(); - - - // Graphics - D3DPRESENT_PARAMETERS* d3dpp; - - D3DPRESENT_PARAMETERS d3dppW; - RECT rectW; - LONG styleW; - - D3DPRESENT_PARAMETERS d3dppFS; - RECT rectFS; - LONG styleFS; - - IDirect3D9* pD3D; - IDirect3DDevice9* pD3DDevice; - IDirect3DVertexBuffer9* pVB; - IDirect3DIndexBuffer9* pIB; - - IDirect3DSurface9* pScreenSurf; - IDirect3DSurface9* pScreenDepth; - CRenderTargetList* pTargets; - CRenderTargetList* pCurTarget; - - D3DXMATRIX matView; - D3DXMATRIX matProj; - - CTextureList* textures; - hgeVertex* VertArray; - - int nPrim; - int CurPrimType; - int CurBlendMode; - HTEXTURE CurTexture; - - bool _GfxInit(); - void _GfxDone(); - bool _GfxRestore(); - void _AdjustWindow(); - void _Resize(int width, int height); - bool _init_lost(); - void _render_batch(bool bEndScene=false); - int _format_id(D3DFORMAT fmt); - void _SetBlendMode(int blend); - void _SetProjectionMatrix(int width, int height); - - - // Audio - //HINSTANCE hBass; - void* hOpenAL; - bool bSilent; - CStreamList* streams; - bool _SoundInit(); - void _SoundDone(); - void _SetMusVolume(int vol); - void _SetStreamVolume(int vol); - void _SetFXVolume(int vol); - - - // Input - int VKey; - int Char; - int Zpos; - float Xpos; - float Ypos; - bool bMouseOver; - bool bCaptured; - char keyz[256]; - bool keylast[256]; - CInputEventList* queue; - void _UpdateMouse(); - void _InputInit(); - void _ClearQueue(); - void _BuildEvent(int type, int key, int scan, int flags, int x, int y); - - - // Resources - char szTmpFilename[_MAX_PATH]; - CResourceList* res; - HANDLE hSearch; - WIN32_FIND_DATA SearchData; - - - // Timer - float fTime; - float fDeltaTime; - float fUpdateFPSDelay; - float nFPSf; - DWORD nFixedDelta; - int nFPS; - int Fcnt; - DWORD t0, t0fps, dt; - int cfps; - - -private: - HGE_Impl(); -}; - -extern HGE_Impl* pHGE; - -#endif - |