www.pudn.com > T3D-3.rar > t3dconsolealpha1.cpp


// T3DCONSOLEALPHA1.CPP - First alpha iteration of game console 
 
// INCLUDES /////////////////////////////////////////////// 
 
#define WIN32_LEAN_AND_MEAN   
 
#include    // include important windows stuff 
#include   
#include  
#include  // include important C/C++ stuff 
#include  
#include  
#include  
#include  
#include  
#include  
#include   
#include  
#include  
#include  
 
// DEFINES //////////////////////////////////////////////// 
 
// defines for windows interface 
#define WINDOW_CLASS_NAME "WIN3DCLASS"  // class name 
#define WINDOW_TITLE      "T3D Graphics Console Alpha 1.0" 
#define WINDOW_WIDTH      320  // size of window 
#define WINDOW_HEIGHT     240 
 
// these read the keyboard asynchronously 
#define KEY_DOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0) 
#define KEY_UP(vk_code)   ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1) 
 
// PROTOTYPES ///////////////////////////////////////////// 
 
// game console 
int Game_Init(void *parms=NULL); 
int Game_Shutdown(void *parms=NULL); 
int Game_Main(void *parms=NULL); 
 
// GLOBALS //////////////////////////////////////////////// 
 
HWND main_window_handle           = NULL; // save the window handle 
HINSTANCE main_instance           = NULL; // save the instance 
char buffer[256];                          // used to print text 
 
 
// FUNCTIONS ////////////////////////////////////////////// 
 
LRESULT CALLBACK WindowProc(HWND hwnd,  
						    UINT msg,  
                            WPARAM wparam,  
                            LPARAM lparam) 
{ 
// this is the main message handler of the system 
PAINTSTRUCT	ps;	   // used in WM_PAINT 
HDC		hdc;	   // handle to a device context 
 
// what is the message  
switch(msg) 
	{	 
	case WM_CREATE:  
        { 
		// do initialization stuff here 
		return(0); 
		} break; 
 
    case WM_PAINT: 
         { 
         // start painting 
         hdc = BeginPaint(hwnd,&ps); 
 
         // end painting 
         EndPaint(hwnd,&ps); 
         return(0); 
        } break; 
 
	case WM_DESTROY:  
		{ 
		// kill the application			 
		PostQuitMessage(0); 
		return(0); 
		} break; 
 
	default:break; 
 
    } // end switch 
 
// process any messages that we didn't take care of  
return (DefWindowProc(hwnd, msg, wparam, lparam)); 
 
} // end WinProc 
 
// WINMAIN //////////////////////////////////////////////// 
 
int WINAPI WinMain(	HINSTANCE hinstance, 
					HINSTANCE hprevinstance, 
					LPSTR lpcmdline, 
					int ncmdshow) 
{ 
// this is the winmain function 
 
WNDCLASS winclass;	// this will hold the class we create 
HWND	 hwnd;		// generic window handle 
MSG	     msg;		// generic message 
HDC      hdc;       // generic dc 
PAINTSTRUCT ps;     // generic paintstruct 
 
// first fill in the window class stucture 
winclass.style		= CS_DBLCLKS | CS_OWNDC |  
                      CS_HREDRAW | CS_VREDRAW; 
winclass.lpfnWndProc    = WindowProc; 
winclass.cbClsExtra	    = 0; 
winclass.cbWndExtra	    = 0; 
winclass.hInstance	    = hinstance; 
winclass.hIcon		    = LoadIcon(NULL, IDI_APPLICATION); 
winclass.hCursor        = LoadCursor(NULL, IDC_ARROW); 
winclass.hbrBackground	= (HBRUSH)GetStockObject(BLACK_BRUSH); 
winclass.lpszMenuName	= NULL;  
winclass.lpszClassName	= WINDOW_CLASS_NAME; 
 
// register the window class 
if (!RegisterClass(&winclass)) 
	return(0); 
 
// create the window, note the test to see if WINDOWED_APP is 
// true to select the appropriate window flags 
if (!(hwnd = CreateWindow(WINDOW_CLASS_NAME, // class 
			  WINDOW_TITLE,	 // title 
              WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION, 
		 	  0,0,	   // x,y 
			  WINDOW_WIDTH,  // width 
              WINDOW_HEIGHT, // height 
			  NULL,	   // handle to parent  
			  NULL,	   // handle to menu 
			  hinstance,// instance 
			  NULL)))	// creation parms 
return(0); 
 
// save the window handle and instance in a global 
main_window_handle = hwnd; 
main_instance      = hinstance; 
 
// make sure window is visible 
ShowWindow(main_window_handle, SW_SHOW); 
 
// perform all game console specific initialization 
Game_Init(); 
 
// enter main event loop 
while(1) 
	{ 
	if (PeekMessage(&msg,NULL,0,0,PM_REMOVE)) 
	   {  
	   // test if this is a quit 
       if (msg.message == WM_QUIT) 
           break; 
	 
	   // translate any accelerator keys 
	   TranslateMessage(&msg); 
 
	   // send the message to the window proc 
	   DispatchMessage(&msg); 
       } // end if 
     
       // main game processing goes here 
    Game_Main(); 
    } // end while 
 
// shutdown game and release all resources 
Game_Shutdown(); 
 
// return to Windows like this 
return(msg.wParam); 
 
} // end WinMain 
 
// T3D II GAME PROGRAMMING CONSOLE FUNCTIONS //////////////// 
 
int Game_Init(void *parms) 
{ 
// this function is where you do all the initialization  
// for your game 
 
 
// return success 
return(1); 
 
} // end Game_Init 
 
/////////////////////////////////////////////////////////// 
 
int Game_Shutdown(void *parms) 
{ 
// this function is where you shutdown your game and 
// release all resources that you allocated 
 
// return success 
return(1); 
} // end Game_Shutdown 
 
////////////////////////////////////////////////////////// 
 
int Game_Main(void *parms) 
{ 
// this is the workhorse of your game it will be called 
// continuously in real-time this is like main() in C 
// all the calls for you game go here! 
 
// game logic here... 
 
 
// check of user is trying to exit 
if (KEY_DOWN(VK_ESCAPE)) 
    { 
    PostMessage(main_window_handle, WM_DESTROY,0,0); 
 
    } // end if 
 
// return success 
return(1); 
  
} // end Game_Main 
 
//////////////////////////////////////////////////////////