private static void MixInput(INP inpId, int keyId, int btnId) { int freezeInputFrame_BKUP = GameEngine.FreezeInputFrame; GameEngine.FreezeInputFrame = 0; bool keyDown = 1 <= GameKeyboard.GetKeyInput(keyId); bool btnDown = 1 <= GamePad.GetPadInput(GameGround.I.PrimaryPadId, btnId); GameEngine.FreezeInputFrame = freezeInputFrame_BKUP; GameDefine.UpdateInput(ref InputStatus[(int)inpId], keyDown || btnDown); }
public void MouseEachFrame() { uint status; if (GameEngine.WindowIsActive) { MouseRot = DX.GetMouseHWheelRotVol(); status = (uint)DX.GetMouseInput(); } else // ? 非アクティブ -> 無入力 { MouseRot = 0; status = 0u; } MouseRot = IntTools.ToRange(MouseRot, -IntTools.IMAX, IntTools.IMAX); GameDefine.UpdateInput(ref MouseStatus[(int)MOUBTN.L], (status & DX.MOUSE_INPUT_LEFT) != 0u); GameDefine.UpdateInput(ref MouseStatus[(int)MOUBTN.M], (status & DX.MOUSE_INPUT_MIDDLE) != 0u); GameDefine.UpdateInput(ref MouseStatus[(int)MOUBTN.R], (status & DX.MOUSE_INPUT_RIGHT) != 0u); }
public static void PadEachFrame() { int padCount = GetPadCount(); for (int padId = 0; padId < padCount; padId++) { uint status; if (GameEngine.WindowIsActive) { status = (uint)DX.GetJoypadInputState(PadId2InputType(padId)); } else // ? 非アクティブ { status = 0u; // 無入力 } if (status != 0u) { for (int btnId = 0; btnId < PAD_BUTTON_MAX; btnId++) { GameDefine.UpdateInput(ref Pads[padId].ButtonStatus[btnId], (status & (1u << btnId)) != 0u); } } else { for (int btnId = 0; btnId < PAD_BUTTON_MAX; btnId++) { GameDefine.UpdateInput(ref Pads[padId].ButtonStatus[btnId], false); } } if (GameGround.I.PrimaryPadId == -1 && 10 < GameEngine.ProcFrame && Pads[padId].Status == 0u && status != 0u) // 最初にボタンを押下したパッドを PrimaryPadId にセット { GameGround.I.PrimaryPadId = padId; } Pads[padId].Status = status; } }
public static void KeyEachFrame() { if (GameEngine.WindowIsActive) { if (DX.GetHitKeyStateAll(StatusMap) != 0) // ? 失敗 { throw new GameError(); } for (int keyId = 0; keyId < KEY_MAX; keyId++) { GameDefine.UpdateInput(ref KeyStatus[keyId], StatusMap[keyId] != 0); } } else // ? 非アクティブ -> 無入力 { for (int keyId = 0; keyId < KEY_MAX; keyId++) { GameDefine.UpdateInput(ref KeyStatus[keyId], false); } } }