void LoopFunction() { if (hooked == false) { DWORD VTable[3] = { 0 }; while (GetModuleHandleA("d3d9.dll") == NULL) { Sleep(250); } DX_Init(VTable); HOOK(EndScene, VTable[0]); while (!nm_pD3Ddev) { Sleep(50); } UNHOOK(EndScene, VTable[0]); *(PDWORD)&pEndScene = VTable[0]; CreateThread(NULL, 0, &VMT_Patching, NULL, 0, NULL); //Create hooking thread hooked = true; } }
void Game::Play(){//ゲーム全体の各処理 int zx, zy,check=0; DX_Init(true, zx, zy,check);//DX初期化 if (check == -1){ return; } int Title_BG = Load_Title_Rand();//背景決め while (1){ //デバッグコマンド //1-タイトル //2-本編 //3-途中経過 //4-ゲーム終了 if (CheckHitKey(KEY_INPUT_1)){ Change_Phase(GAME_TITLE); } if (CheckHitKey(KEY_INPUT_2)){ Change_Phase(GAME_PLAY); } if (CheckHitKey(KEY_INPUT_3)){ Change_Phase(GAME_PAUSE); } if (CheckHitKey(KEY_INPUT_4)){ Change_Phase(GAME_END); } switch (game_phase){ case 1://タイトル ClearDrawScreen();//描画、画面初期化 DrawGraph(0, 0, Title_BG, false);//背景描画 ScreenFlip();//描画、画面切り替え break; case 2://本編 ClearDrawScreen();//描画、画面初期化 Mouse mouse; GetMousePoint(&mouse.x, &mouse.y); //田んぼ DrawFillBox(20, 20, 620, 520, Colors::Brown); //ステータス DrawFillBox(20, 560, 1004, 748, Colors::White); //ボタン if (Mouse_Sq(660, 20, 300, 100, mouse)){ DrawFillBox(660, 20, 960, 120, Colors::Red); } else DrawFillBox(660, 20, 960, 120, Colors::White); if (Mouse_Sq(660, 140, 300, 100, mouse)){ DrawFillBox(660, 140, 960, 240, Colors::Blue); } else DrawFillBox(660, 140, 960, 240, Colors::White); if (Mouse_Sq(660, 260, 300, 100, mouse)){ DrawFillBox(660, 260, 960, 360,Colors::Green); } else DrawFillBox(660, 260, 960, 360, Colors::White); if (Mouse_Sq(660, 380, 300, 100, mouse)){ DrawFillBox(660, 380, 960, 480, Colors::Yellow); } else DrawFillBox(660, 380, 960, 480, Colors::White); ScreenFlip();//描画、画面切り替え break; case 3://途中経過 ClearDrawScreen();//描画、画面初期化 DrawFillBox(zx, zy, zx + 20, zy + 20, 0xff00ff); ScreenFlip();//描画、画面切り替え break; case 4://ゲーム終了 ClearDrawScreen();//描画、画面初期化 DrawFillBox(zx, zy, zx + 20, zy + 20, 0xffff00); ScreenFlip();//描画、画面切り替え break; } } }