/* windoze.cpp - Don Yang (uguu.org) 12/21/00 */ #include"global.h" #include"bg.h" #include"game.h" #include"input.h" #include"main.h" #include"sprite.h" #include"windoze.h" static LRESULT CALLBACK WindowProc(HWND handle, UINT msg, WPARAM wparam, LPARAM lparam); /************************************************************** InitInstance Initialize class/window. */ BOOL InitInstance(HINSTANCE inst, int state) { WNDCLASS wndclass; if( !CaptureScreen() ) // (bg.cpp) return FALSE; // Create class wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WindowProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = AppInstance = inst; wndclass.hIcon = LoadIcon(inst, MAKEINTRESOURCE(APP_ICON)); // (resource.h) wndclass.hCursor = LoadCursor(inst, IDC_ARROW); wndclass.hbrBackground = NULL; wndclass.lpszMenuName = NULL; wndclass.lpszClassName = WINDOW_CLASSNAME; // (windoze.h) if( !RegisterClass(&wndclass) ) return Croak("RegisterClass failed"); // (main.cpp) // Create window WindowX = (ScreenWidth - APP_WIDTH) / 2; WindowY = (ScreenHeight - APP_HEIGHT) / 2; AppWindow = CreateWindow(WINDOW_CLASSNAME, WINDOW_TITLE, // (windoze.h) WS_POPUP, WindowX, WindowY, APP_WIDTH, APP_HEIGHT, NULL, NULL, inst, NULL); if( AppWindow == NULL ) return Croak("CreateWindow failed"); ShowWindow(AppWindow, state); SetCursor(LoadCursor(NULL, IDC_ARROW)); return RedrawAll = TRUE; } // InitInstance() /**************************************************************** WindowProc Windows message handler. */ static LRESULT CALLBACK WindowProc(HWND handle, UINT msg, WPARAM wparam, LPARAM lparam) { switch( msg ) { // Input events case WM_KEYDOWN: KeyDown((int)wparam); return 0; // (input.cpp) case WM_KEYUP: KeyUp((int)wparam); return 0; case WM_LBUTTONDOWN: case WM_LBUTTONUP: case WM_RBUTTONDOWN: case WM_RBUTTONUP: MouseButton((int)LOWORD(lparam), (int)HIWORD(lparam), (int)wparam); return 0; case WM_MOUSEMOVE: MouseMove((int)LOWORD(lparam), (int)HIWORD(lparam), (int)wparam); return 0; case MM_JOY1MOVE: case MM_JOY2MOVE: JoyMove(LOWORD(lparam) >> 11, HIWORD(lparam) >> 11); return 0; case MM_JOY1BUTTONDOWN: case MM_JOY2BUTTONDOWN: KeyDown(KEY_ROTATE); return 0; case MM_JOY1BUTTONUP: case MM_JOY2BUTTONUP: KeyUp(KEY_ROTATE); return 0; // Game events case WM_COMMAND: switch( LOWORD(wparam) ) { case APP_MENU_ABOUT: MessageBox(AppWindow, ABOUT_STRING, WINDOW_TITLE, MB_OK); break; case APP_MENU_HELP: MessageBox(AppWindow, HELP_STRING, WINDOW_TITLE, MB_OK); break; case APP_MENU_PAUSE: if( GameState > 0 ) AppPaused = !AppPaused; else AppPaused = FALSE; RedrawAll = TRUE; break; case APP_MENU_NOISE: if( GameOptions & OPTION_SND_ALL ) GameOptions &= ~OPTION_SND_ALL; else GameOptions |= OPTION_SND; break; case APP_MENU_TRANSPARENT: GameOptions ^= OPTION_SPR_TRANSPARENT; InitSprites(); // (sprite.cpp) RedrawAll = TRUE; break; case APP_MENU_TRANSLUCENT: GameOptions ^= OPTION_SPR_TRANSLUCENT; InitSprites(); RedrawAll = TRUE; break; case APP_MENU_BACKGROUND: GameOptions ^= OPTION_BG_BACKGROUND; InitBackground(); // (bg.cpp) RedrawAll = TRUE; break; case APP_MENU_JOYSTICK: if( JoystickCaptured ) UninitInput(); // (input.cpp) else InitInput(); break; case APP_MENU_WHITE_PARTICLE: GameOptions ^= OPTION_BG_WHITE_PARTICLE; InitBackground(); // (bg.cpp) RedrawAll = TRUE; break; case APP_MENU_FRACTAL: if( (GameOptions & OPTION_BG_FX) == OPTION_BG_FRACTAL ) { GameOptions &= ~OPTION_BG_FX; } else { GameOptions = (GameOptions & ~OPTION_BG_FX) | OPTION_BG_FRACTAL; } InitBackground(); RedrawAll = TRUE; break; case APP_MENU_DUST: if( (GameOptions & OPTION_BG_FX) == OPTION_BG_DUST ) { GameOptions &= ~OPTION_BG_FX; } else { GameOptions = (GameOptions & ~OPTION_BG_FX) | OPTION_BG_DUST; } InitBackground(); RedrawAll = TRUE; break; case APP_MENU_SWARM: if( (GameOptions & OPTION_BG_FX) == OPTION_BG_SWARM ) { GameOptions &= ~OPTION_BG_FX; } else { GameOptions = (GameOptions & ~OPTION_BG_FX) | OPTION_BG_SWARM; } InitBackground(); RedrawAll = TRUE; break; case APP_MENU_RESET: ResetGame(); // (game.cpp) break; case APP_MENU_CLEAR_HISTORY: ResetOptions(); // (game.cpp) break; case APP_MENU_EXIT: DestroyWindow(AppWindow); break; case APP_MENU_CAPTURE: Recapture(); // (bg.cpp) break; case APP_MENU_FRAMERATE: GameState = SYS_STATE_INIT; break; default: break; } break; // System events case WM_ACTIVATE: AppActive = wparam; return 0; case WM_CLOSE: DestroyWindow(AppWindow); return 0; case WM_DESTROY: Shutdown(); // (main.cpp) PostQuitMessage(0); return 0; case WM_ERASEBKGND: return 0; default: break; } // Use default processor return DefWindowProc(handle, msg, wparam, lparam); } // WindowProc() char *WindozeObjTime = __TIME__ " " __DATE__; int WindozeObjLines = __LINE__;