//============================================================================= // 更新処理 //============================================================================= void UpdatePlaybar(void) { if(!*GetIsPlay()) { // 如果鼠标左键单击的时候,当前位置在时间条的范围内,那么该条跟随鼠标移动 // シークバーがマウスの位置にくっついている if(IsMouseLeftPressed()) { if(!g_bIsPlaybarMove) for(int nCntPlayBar = 0; nCntPlayBar < MAX_PLAYBAR; nCntPlayBar++) { if(g_aPlaybar[nCntPlayBar].bUse == true) { float fX = *GetMouX(), fY = *GetMouY(); if( fX >= g_aPlaybar[nCntPlayBar].pos.x - g_aPlaybar[nCntPlayBar].fWidth / 2 && fX <= g_aPlaybar[nCntPlayBar].pos.x + g_aPlaybar[nCntPlayBar].fWidth / 2 && fY >= g_aPlaybar[nCntPlayBar].pos.y - g_aPlaybar[nCntPlayBar].fHeight / 2 && fY <= g_aPlaybar[nCntPlayBar].pos.y + g_aPlaybar[nCntPlayBar].fHeight / 2) { { // X軸 g_fDistPbar2MousX = abs(g_aPlaybar[nCntPlayBar].pos.x - fX); // Y軸 //g_fDistPbar2MousY = abs(g_aPlaybar[nCntPlayBar].pos.y - fY); } g_bIsPlaybarMove = true; g_nBeControlNum = nCntPlayBar; } //SetBarEffect(&g_aPlaybar[nCntPlayBar]); } } if(g_bIsPlaybarMove == true) { float fX = *GetMouX(), fY = *GetMouY(); // X軸 if(fX < g_aPlaybar[g_nBeControlNum].pos.x) g_aPlaybar[g_nBeControlNum].pos.x = fX + g_fDistPbar2MousX; else g_aPlaybar[g_nBeControlNum].pos.x = fX - g_fDistPbar2MousX; // Y軸 //if(nY < g_aPlaybar[g_nBeControlNum].pos.y) // g_aPlaybar[g_nBeControlNum].pos.y = fY + g_fDistPbar2MousY; //else // g_aPlaybar[g_nBeControlNum].pos.y = fY - g_fDistPbar2MousY; } // 重排轨迹线 *GetCleanupSwitch() = false; } else { g_bIsPlaybarMove = false; } if(IsMouseRightTriggered()) { for(int nCntPlayBar = 0; nCntPlayBar < MAX_PLAYBAR; nCntPlayBar++) { if(g_aPlaybar[nCntPlayBar].bUse == true) { float fX = *GetMouX(), fY = *GetMouY(); if( fX >= g_aPlaybar[nCntPlayBar].pos.x - g_aPlaybar[nCntPlayBar].fWidth / 2 && fX <= g_aPlaybar[nCntPlayBar].pos.x + g_aPlaybar[nCntPlayBar].fWidth / 2 && fY >= g_aPlaybar[nCntPlayBar].pos.y - g_aPlaybar[nCntPlayBar].fHeight / 2 && fY <= g_aPlaybar[nCntPlayBar].pos.y + g_aPlaybar[nCntPlayBar].fHeight / 2) { g_aPlaybar[nCntPlayBar].bIsInvert = g_aPlaybar[nCntPlayBar].bIsInvert ? false : true; float fTempChange = 0; fTempChange = g_aPlaybar[nCntPlayBar].fTimeEnd; g_aPlaybar[nCntPlayBar].fTimeEnd = g_aPlaybar[nCntPlayBar].fTimeStart; g_aPlaybar[nCntPlayBar].fTimeStart = fTempChange; // 重排轨迹线 *GetCleanupSwitch() = false; } } } } for(int nCntPlayBar = 0; nCntPlayBar < g_nPlaybarNum; nCntPlayBar++) { if(g_aPlaybar[nCntPlayBar].bUse) { // if( g_aPlaybar[nCntPlayBar].nType == PLAYBAR_3_1 || g_aPlaybar[nCntPlayBar].nType == PLAYBAR_3_2 || g_aPlaybar[nCntPlayBar].nType == PLAYBAR_3_3) { if(!g_aPlaybar[nCntPlayBar].bIsInvert) SetTexturePlaybar(nCntPlayBar, 0, 2, 1, 2); else SetTexturePlaybar(nCntPlayBar, 1, 2, 1, 2); SetVertexPlaybar(nCntPlayBar, 1, 1); } } } } //g_aPlaybar[0].pos.x = *GetMouX(); //g_aPlaybar[0].pos.y = *GetMouY(); if(g_nBeControlNum != -1) PlaybarPosChange(g_nBeControlNum); }
bool Input::ReadMouse() { HRESULT result; // Read the pMouse pDevice. result = pMouse->GetDeviceState(sizeof(DIMOUSESTATE), (LPVOID)&mouseState); if(FAILED(result)) { // If the pMouse lost focus or was not acquired then try to get control back. if((result == DIERR_INPUTLOST) || (result == DIERR_NOTACQUIRED)) { pMouse->Acquire(); } else { return false; } } // Update the location of the pMouse cursor based on the change of the pMouse location during the frame. mouseX += mouseState.lX; mouseY += mouseState.lY; // Ensure the mouse location doesn't exceed the screen width or height. if(mouseX < 0) { mouseX = 0; } if(mouseY < 0) { mouseY = 0; } if(mouseX > screenWidth) { mouseX = screenWidth; } if(mouseY > screenHeight) { mouseY = screenHeight; } if(mouseLeftDown) { if(!IsMouseLeftPressed()) { mouseLeftDown = false; } } else { if(IsMouseLeftPressed()) { mouseLeftDown = true; mouseLeftDownX = mouseX; mouseLeftDownY = mouseY; } } if(IsMouseRightPressed()) { if(!mouseRightDown) { mouseRightDown = true; mouseRightDownX = mouseX; mouseRightDownY = mouseY; } } else if(!IsMouseRightPressed()) { mouseRightDown = false; } return true; }
//============================================================================= // 更新処理 //============================================================================= void UpdateGameManager(void) { #ifdef _DEBUG if(GetKeyboardTrigger(DIK_F1)) { g_nGameMode = SELECTMODE_PLAY; } if(GetKeyboardTrigger(DIK_F2)) { g_nGameMode = SELECTMODE_WALLEDIT; } if(GetKeyboardTrigger(DIK_F3)) { g_nGameMode = SELECTMODE_GIMMICKEDIT; } if(GetKeyboardTrigger(DIK_F4)) { g_nGameMode = SELECTMODE_PLAYEREDIT; } if(GetKeyboardTrigger(DIK_F5)) { g_nGameMode = SELECTMODE_DELETE; } if(GetKeyboardTrigger(DIK_F6)) { g_nGameMode = SELECTMODE_SCENECHANGE; } if(GetKeyboardTrigger(DIK_F7)) { g_nGameMode = SELECTMODE_PLAYERBAR_NUM; } if(GetKeyboardTrigger(DIK_F8)) { g_nGameMode = SELECTMODE_ITEMNUMEDIT; } if(g_nGameMode != SELECTMODE_PLAY) GetBackG()[BACKGROUND_EDIT_NET].bUse = true; else GetBackG()[BACKGROUND_EDIT_NET].bUse = false; #endif switch (g_nGameMode) { case SELECTMODE_PLAY: { PrintDebugProc("【ゲームモード】\n"); if(GetTimeCounter()->fCurrentTime > TIME_15) g_bIsPlay = false; if(!g_bIsPlay) { if(IsMouseRightTriggered()) { int nGimNum = -1; int nItemNum = GetItemNum()->nItemLockTime; bool bIsLock = false; if(IsGimmickLock(&nGimNum, &bIsLock, &nItemNum) == true) { if(bIsLock == true) { SetItem(D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), ITEM_TYPE_01, nGimNum); UpdataItemNum(-1); } else { DeleteItem(nGimNum); UpdataItemNum(1); } } } } break; } case SELECTMODE_WALLEDIT: { PrintDebugProc("【壁を編集するモード】\n"); WallCreateMode(); break; } case SELECTMODE_GIMMICKEDIT: { PrintDebugProc("【ギミック編集モード】\n"); GimmickCreateMode(); break; } case SELECTMODE_PLAYEREDIT: { PrintDebugProc("【プレイヤー編集モード】\n"); if(IsMouseLeftPressed()) IsMouseHitPlayer(); PlayerEdit(); break; } case SELECTMODE_DELETE: { PrintDebugProc("【削除モード】\n"); DeleteGimmick(); DeleteWall(); break; } case SELECTMODE_SCENECHANGE: { PrintDebugProc("【ステージ切り替えるモード】\n"); if(IsMouseRightTriggered()) { if(*GetSceneNum() < SCENE_TYPE_MAX) (*GetSceneNum())++; if(*GetSceneNum() == SCENE_TYPE_MAX) *GetSceneNum() = 0; g_bIsSceneInit = true; } if(g_bIsSceneInit == true) { g_bIsSceneInit = false; switch (*GetSceneNum()) { case SCENE_01: // 从文件中读取 LoadData(SCENE_01); break; case SCENE_02: // 从文件中读取 LoadData(SCENE_02); break; case SCENE_03: // 从文件中读取 LoadData(SCENE_03); break; case SCENE_04: // 从文件中读取 LoadData(SCENE_04); break; case SCENE_05: // 从文件中读取 LoadData(SCENE_05); break; default: break; } // 読み込むデータを初期化 InitDataPlayer(); InitDataWall(); InitDataGimmick(); InitDataPlayerbar(); for(int nCntGim = 0; nCntGim < MAX_GIMMICK; nCntGim++) { // 根据补完的数据对机关场景进行位置和运动预处理 SetupGimmickTrack(nCntGim); *GetCleanupSwitch() = false; } } break; } case SELECTMODE_PLAYERBAR_NUM: { PrintDebugProc("【時間軸編集モード】\n"); PrintDebugProc("数字キー「1」 時間軸数:1\n"); PrintDebugProc("数字キー「2」 時間軸数:2\n"); PrintDebugProc("数字キー「3」 時間軸数:3\n"); if(GetKeyboardTrigger(DIK_1)) { for(int nCntPlayBar = 0; nCntPlayBar < MAX_PLAYBAR; nCntPlayBar++) { //if(g_pPlaybar_GM[nCntPlayBar].bUse == true) g_pPlaybar_GM[nCntPlayBar].bUse = false; } for(int nCntGim = 0; nCntGim < MAX_GIMMICK; nCntGim++) { if(g_pGimmick_GM[nCntGim].bUse) { g_pGimmick_GM[nCntGim].nPriorityNum01 = -1; g_pGimmick_GM[nCntGim].nPriorityNum02 = -1; g_pGimmick_GM[nCntGim].nPriorityNum03 = -1; } } SetPlaybar(D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), PLAYBAR_3_1); PlaybarNumCount(); } if(GetKeyboardTrigger(DIK_2)) { for(int nCntPlayBar = 0; nCntPlayBar < MAX_PLAYBAR; nCntPlayBar++) { //if(g_pPlaybar_GM[nCntPlayBar].bUse == true) g_pPlaybar_GM[nCntPlayBar].bUse = false; } for(int nCntGim = 0; nCntGim < MAX_GIMMICK; nCntGim++) { if(g_pGimmick_GM[nCntGim].bUse) { g_pGimmick_GM[nCntGim].nPriorityNum01 = -1; g_pGimmick_GM[nCntGim].nPriorityNum02 = -1; g_pGimmick_GM[nCntGim].nPriorityNum03 = -1; } } SetPlaybar(D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), PLAYBAR_3_1); SetPlaybar(D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), PLAYBAR_3_2); PlaybarNumCount(); } if(GetKeyboardTrigger(DIK_3)) { for(int nCntPlayBar = 0; nCntPlayBar < MAX_PLAYBAR; nCntPlayBar++) { //if(g_pPlaybar_GM[nCntPlayBar].bUse == true) g_pPlaybar_GM[nCntPlayBar].bUse = false; } for(int nCntGim = 0; nCntGim < MAX_GIMMICK; nCntGim++) { if(g_pGimmick_GM[nCntGim].bUse) { g_pGimmick_GM[nCntGim].nPriorityNum01 = -1; g_pGimmick_GM[nCntGim].nPriorityNum02 = -1; g_pGimmick_GM[nCntGim].nPriorityNum03 = -1; } } SetPlaybar(D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), PLAYBAR_3_1); SetPlaybar(D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), PLAYBAR_3_2); SetPlaybar(D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), PLAYBAR_3_3); PlaybarNumCount(); } break; } case SELECTMODE_ITEMNUMEDIT: { PrintDebugProc("【アイテム個数編集モード】\n"); PrintDebugProc("【メニュー】 【アイテム】 【個数】\n"); PrintDebugProc("数字キー「1」 時間固定アイテム:%d\n\n", g_pItemNum_GM->nItemLockTime); if(GetKeyboardTrigger(DIK_1)) { g_nMenuSelect_GM = 1; } switch (g_nMenuSelect_GM) { case 1: PrintDebugProc("矢印キー【左】、【右】 【プラス/マイナス 1】\n"); PrintDebugProc("矢印キー【上】、【下】 【プラス/マイナス 5】\n"); if(GetKeyboardRepeat(DIK_LEFT)) { g_pItemNum_GM->nItemLockTime -= 1; if(g_pItemNum_GM->nItemLockTime < 0) g_pItemNum_GM->nItemLockTime = 0; } if(GetKeyboardRepeat(DIK_RIGHT)) { g_pItemNum_GM->nItemLockTime += 1; if(g_pItemNum_GM->nItemLockTime > 9) g_pItemNum_GM->nItemLockTime = 9; } if(GetKeyboardRepeat(DIK_DOWN)) { g_pItemNum_GM->nItemLockTime -= 5; if(g_pItemNum_GM->nItemLockTime < 0) g_pItemNum_GM->nItemLockTime = 0; } if(GetKeyboardRepeat(DIK_UP)) { g_pItemNum_GM->nItemLockTime += 5; if(g_pItemNum_GM->nItemLockTime > 9) g_pItemNum_GM->nItemLockTime = 9; } break; default: break; } } default: break; } if(!g_bIsPlay) { switch (*GetSceneNum()) { case SCENE_01: PrintDebugProc("【SCENE_01】\n"); // 今のシーンをセーフする if(IsMouseCenterTriggered()) SaveData(SCENE_01); break; case SCENE_02: PrintDebugProc("【SCENE_02】\n"); if(IsMouseCenterTriggered()) SaveData(SCENE_02); break; case SCENE_03: PrintDebugProc("【SCENE_03】\n"); if(IsMouseCenterTriggered()) SaveData(SCENE_03); break; case SCENE_04: PrintDebugProc("【SCENE_04】\n"); if(IsMouseCenterTriggered()) SaveData(SCENE_04); break; case SCENE_05: PrintDebugProc("【SCENE_05】\n"); if(IsMouseCenterTriggered()) SaveData(SCENE_05); break; default: break; } } switch(*GetMode()) { case GAMEMODE_LOGO: break; case GAMEMODE_TITLE: { if(GetKeyboardTrigger(DIK_RETURN) || IsMouseLeftTriggered()) SetFade(FADE_OUT, FADE_IN, GAMEMODE_STAGE_SELECT); break; } case GAMEMODE_STAGE_SELECT: { g_bIsStop = true; g_bIsPlay = false; if(GetKeyboardTrigger(DIK_RETURN)) SetFade(FADE_OUT, FADE_IN, GAMEMODE_GAME); if(IsMouseLeftTriggered()) { int pIconNum = 0; if(IsMouseHitIcon(&pIconNum) == true) { *GetSceneNum() = GetGameElement()[pIconNum].nType; g_bIsSceneInit = true; } } if(g_bIsSceneInit == true) { g_bIsSceneInit = false; switch (*GetSceneNum()) { case SCENE_01: // 从文件中读取 LoadData(SCENE_01); break; case SCENE_02: // 从文件中读取 LoadData(SCENE_02); break; case SCENE_03: // 从文件中读取 LoadData(SCENE_03); break; case SCENE_04: // 从文件中读取 LoadData(SCENE_04); break; case SCENE_05: // 从文件中读取 LoadData(SCENE_05); break; default: break; } // 読み込むデータを初期化 InitDataPlayer(); InitDataWall(); InitDataGimmick(); InitDataPlayerbar(); for(int nCntGim = 0; nCntGim < MAX_GIMMICK; nCntGim++) { // 根据补完的数据对机关场景进行位置和运动预处理 SetupGimmickTrack(nCntGim); *GetCleanupSwitch() = false; } //*GetMode() = GAMEMODE_GAME; SetFade(FADE_OUT, FADE_IN, GAMEMODE_GAME); } break; } case GAMEMODE_GAME: break; case GAMEMODE_END: break; default: break; } }