Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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;
            }
        }
Пример #4
0
        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);
                }
            }
        }