void CALL HGE_Impl::System_SetStateBool(hgeBoolState state, bool value) { switch(state) { case HGE_WINDOWED: if(VertArray || hwndParent) break; if(pD3DDevice && bWindowed != value) { if(d3dppW.BackBufferFormat==D3DFMT_UNKNOWN || d3dppFS.BackBufferFormat==D3DFMT_UNKNOWN) break; if(bWindowed) GetWindowRect(hwnd, &rectW); bWindowed=value; if(bWindowed) d3dpp=&d3dppW; else d3dpp=&d3dppFS; if(_format_id(d3dpp->BackBufferFormat) < 4) nScreenBPP=16; else nScreenBPP=32; _GfxRestore(); _AdjustWindow(); } else bWindowed=value; break; case HGE_ZBUFFER: if(!pD3DDevice) bZBuffer=value; break; case HGE_TEXTUREFILTER: bTextureFilter=value; if(pD3DDevice) { _render_batch(); if(bTextureFilter) { pD3DDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR); pD3DDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR); } else { pD3DDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_POINT); pD3DDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_POINT); } } break; case HGE_USESOUND: if(bUseSound!=value) { bUseSound=value; if(bUseSound && hwnd) _SoundInit(); if(!bUseSound && hwnd) _SoundDone(); } break; case HGE_HIDEMOUSE: bHideMouse=value; break; case HGE_DONTSUSPEND: bDontSuspend=value; break; #ifdef DEMO case HGE_SHOWSPLASH: bDMO=value; break; #endif } }
void CALL HGE_Impl::System_SetStateBool(hgeBoolState state, bool value) { switch(state) { case HGE_WINDOWED: //TODO: add code here //if(hwndParent) break; //bWindowed=value; break; case HGE_ZBUFFER: //TODO: add code here break; case HGE_TEXTUREFILTER: //TODO: break; case HGE_USESOUND: if(bUseSound!=value) { bUseSound=value; if(bUseSound && hwnd) _SoundInit(); if(!bUseSound && hwnd) _SoundDone(); } break; case HGE_HIDEMOUSE: bHideMouse=value; break; case HGE_DONTSUSPEND: bDontSuspend=value; break; } }
bool CALL HGE_Impl::System_Initiate() { // Init subsystems Random_Seed(); if(!_GfxInit()) { System_Shutdown(); return false; } if(!_SoundInit()) { System_Shutdown(); return false; } System_Log("Init done.\n"); return true; }
bool CALL HGE_Impl::System_Initiate() { OSVERSIONINFO os_ver; SYSTEMTIME tm; MEMORYSTATUS mem_st; WNDCLASS winclass; int width, height; // Log system info System_Log("HGE Started..\n"); System_Log("HGE version: %X.%X", HGE_VERSION>>8, HGE_VERSION & 0xFF); GetLocalTime(&tm); System_Log("Date: %02d.%02d.%d, %02d:%02d:%02d\n", tm.wDay, tm.wMonth, tm.wYear, tm.wHour, tm.wMinute, tm.wSecond); System_Log("Application: %s",szWinTitle); os_ver.dwOSVersionInfoSize=sizeof(os_ver); GetVersionEx(&os_ver); System_Log("OS: Windows %ld.%ld.%ld",os_ver.dwMajorVersion,os_ver.dwMinorVersion,os_ver.dwBuildNumber); GlobalMemoryStatus(&mem_st); System_Log("Memory: %ldK total, %ldK free\n",mem_st.dwTotalPhys/1024L,mem_st.dwAvailPhys/1024L); // Register window class winclass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW; winclass.lpfnWndProc = WindowProc; winclass.cbClsExtra = 0; winclass.cbWndExtra = 0; winclass.hInstance = hInstance; winclass.hCursor = LoadCursor(NULL, IDC_ARROW); winclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); winclass.lpszMenuName = NULL; winclass.lpszClassName = WINDOW_CLASS_NAME; if(szIcon) winclass.hIcon = LoadIcon(hInstance, szIcon); else winclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); if (!RegisterClass(&winclass)) { _PostError("Can't register window class"); return false; } // Create window width=nScreenWidth + GetSystemMetrics(SM_CXFIXEDFRAME)*2; height=nScreenHeight + GetSystemMetrics(SM_CYFIXEDFRAME)*2 + GetSystemMetrics(SM_CYCAPTION); rectW.left=(GetSystemMetrics(SM_CXSCREEN)-width)/2; rectW.top=(GetSystemMetrics(SM_CYSCREEN)-height)/2; rectW.right=rectW.left+width; rectW.bottom=rectW.top+height; styleW=WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_VISIBLE; //WS_OVERLAPPED | WS_SYSMENU | WS_MINIMIZEBOX; rectFS.left=0; rectFS.top=0; rectFS.right=nScreenWidth; rectFS.bottom=nScreenHeight; styleFS=WS_POPUP|WS_VISIBLE; //WS_POPUP if(hwndParent) { rectW.left=0; rectW.top=0; rectW.right=nScreenWidth; rectW.bottom=nScreenHeight; styleW=WS_CHILD|WS_VISIBLE; bWindowed=true; } if(bWindowed) hwnd = CreateWindowEx(0, WINDOW_CLASS_NAME, szWinTitle, styleW, rectW.left, rectW.top, rectW.right-rectW.left, rectW.bottom-rectW.top, hwndParent, NULL, hInstance, NULL); else hwnd = CreateWindowEx(WS_EX_TOPMOST, WINDOW_CLASS_NAME, szWinTitle, styleFS, 0, 0, 0, 0, NULL, NULL, hInstance, NULL); if (!hwnd) { _PostError("Can't create window"); return false; } ShowWindow(hwnd, SW_SHOW); // Init subsystems timeBeginPeriod(1); Random_Seed(); _InitPowerStatus(); _InputInit(); if(!_GfxInit()) { System_Shutdown(); return false; } if(!_SoundInit()) { System_Shutdown(); return false; } System_Log("Init done.\n"); fTime=0.0f; t0=t0fps=timeGetTime(); dt=cfps=0; nFPS=0; // Show splash #ifdef DEMO bool (*func)(); bool (*rfunc)(); HWND hwndTmp; if(pHGE->bDMO) { Sleep(200); func=(bool(*)())pHGE->System_GetStateFunc(HGE_FRAMEFUNC); rfunc=(bool(*)())pHGE->System_GetStateFunc(HGE_RENDERFUNC); hwndTmp=hwndParent; hwndParent=0; pHGE->System_SetStateFunc(HGE_FRAMEFUNC, DFrame); pHGE->System_SetStateFunc(HGE_RENDERFUNC, 0); DInit(); pHGE->System_Start(); DDone(); hwndParent=hwndTmp; pHGE->System_SetStateFunc(HGE_FRAMEFUNC, func); pHGE->System_SetStateFunc(HGE_RENDERFUNC, rfunc); } #endif // Done return true; }