إتاحة استخدام أجهزة الماوس

استخدِم الوظائف التالية لإتاحة استخدام أجهزة الماوس في لعبتك باستخدام وحدة تحكُّم الألعاب. نستخدم مصطلح أجهزة الماوس هنا لوصف الفئران التقليدية، بالإضافة إلى لوحات التتبع أو كرات التتبع.

إضافة استدعاء حالة الماوس

تستخدم مكتبة وحدة التحكم في الألعاب استدعاء حالة الماوس لإرسال إشعار إلى لعبة عند الماوس متصل أو غير متصل. يتوافق مع معاودة الاتصال بحالة الماوس واحدة فقط في كل مرة.

  • لتسجيل استدعاء حالة الماوس أو استبدال أي استدعاء حالة الماوس مع دالة رد اتصال جديدة، استدعِ Paddleboat_setMouseStatusCallback.
  • لإزالة أيّ معاودة اتصال مسجّلة حاليًا، عليك تمرير NULL أو nullptr في مَعلمة statusCallback.
  • المَعلمة userData هي مؤشر اختياري للبيانات التي يحدّدها المستخدم. تشير رسالة الأشكال البيانية سيتم تمرير مَعلمة userData إلى دالة رد الاتصال. هذا النمط يتم الاحتفاظ بالمؤشر داخليًا إلى أن يتم تغييره بواسطة استدعاء آخر Paddleboat_setMouseStatusCallback
void Paddleboat_setMouseStatusCallback(Paddleboat_MouseStatusCallback
  statusCallback, void *userData)

توقيع الدالة لدالة استدعاء حالة الماوس هو:

typedef void (*Paddleboat_MouseStatusCallback)(const Paddleboat_MouseStatus
  mouseStatus, void *userData)

تحتوي معلَمة enum mouseStatus على ثلاث قيم محتملة:

  • PADDLEBOAT_MOUSE_NONE: ما مِن جهاز ماوس متصل حاليًا.
  • PADDLEBOAT_MOUSE_CONTROLLER_EMULATED: جارٍ محاكاة وحدة تحكُّم متصلة ماوس.
  • PADDLEBOAT_MOUSE_PHYSICAL: جهاز ماوس فعلي واحد أو أكثر متصلين. (تتضمن هذه الأجهزة الماوس أو لوحة اللمس أو كرة التعقّب أو غير ذلك أجهزة مماثلة).

تحتوي المعلمة userData على مؤشر userData المحدد في آخر مكالمة إلى Paddleboat_setMouseStatusCallback. قد تكون الدالة userData فارغة أو nullptr

لا تحاكي جميع وحدات التحكم الماوس. يجوز لوحدات التحكم أن تحاكي ماوس باستخدام العصي التناظرية أو بلوحة اللمس المدمجة.

لا تقدم مكتبة "وحدة التحكّم في الألعاب" تقارير إلا عن البيانات الواردة من جهاز ماوس فردي. تحظى أجهزة الماوس المادية بالأولوية على أجهزة الماوس الافتراضية المستخدَمة في وحدة التحكّم. إذا اتصال الماوس الفعلي، إلا أنه يستولي على أي أجهزة افتراضية نشطة سابقًا ماوس وحدة التحكم.

قراءة بيانات الماوس

يمكنك طلب الوظيفة Paddleboat_getMouseStatus للاطّلاع على حالة جهاز الماوس.

Paddleboat_MouseStatus Paddleboat_getMouseStatus()

استخدام Paddleboat_getMouseData للحصول على بيانات الماوس الحالية. تُرجع هذه الدالة PADDLEBOAT_NO_ERROR إذا تمت قراءة البيانات بنجاح، وبخلاف ذلك رمز الخطأ المناسب.

bool Paddleboat_getMouseData(Paddleboat_Mouse_Data *mouseData)

تحتوي بنية Paddleboat_Mouse_Data على معلومات عن:

  • الطابع الزمني لآخر حدث لإدخال الماوس
  • موضع المؤشر الحالي
  • حالة أزرار الماوس
  • حالة عجلات الماوس
struct Paddleboat_Mouse_Data {
    uint64_t timestamp;
    uint32_t buttonsDown;
    int32_t mouseScrollDeltaH;
    int32_t mouseScrollDeltaV;
    float mouseX;
    float mouseY;
}
عضو في الهيكل الوصف
timestamp الطابع الزمني لأحدث حدث إدخال للماوس وتبلغ قيمة الطابع الزمني بالميكرو ثانية منذ ذلك الحين. حقبة الساعة.
buttonsDown Bitfield، تبدأ كل وحدة بت من بت 0 تشير إلى حالة لأسفل للزر إذا تم تعيينها.
mouseX
mouseY
يشير ذلك المصطلح إلى موضع الماوس في إحداثيات البكسل. تتراوح إحداثيات الموضع من 0.0 إلى عرض الشاشة وارتفاعها.
mouseScrollDeltaH
mouseScrollDeltaV
عدد أحداث عجلة تمرير الماوس التراكمية : منذ المكالمة السابقة Paddleboat_getMouseData هذه القيم ليست مضمونًا للدقة، فقط لإعطاء إشارة لنشاط عجلة التمرير في اتجاه معين. لدى معظم الفئران واحدة عجلة التمرير، والتي يتم الإبلاغ عنها في mouseScrollDeltaV إذا كان للماوس جانب عجلة التمرير، يتم الإبلاغ عنها في mouseScrollDeltaH تتم إعادة تعيين هذه القيم إلى 0 داخليًا بعد إجراء مكالمة Paddleboat_getMouseData

تحدد مكتبة وحدة التحكم في الألعاب ثوابت قناع البت لأزرار الماوس في ملف عنوان واجهة paddleboat.h:

enum Paddleboat_Mouse_Buttons {
    PADDLEBOAT_MOUSE_BUTTON_LEFT = (1U << 0),
    PADDLEBOAT_MOUSE_BUTTON_RIGHT = (1U << 1),
    PADDLEBOAT_MOUSE_BUTTON_MIDDLE = (1U << 2),
    PADDLEBOAT_MOUSE_BUTTON_BACK = (1U << 3),
    PADDLEBOAT_MOUSE_BUTTON_FORWARD = (1U << 4),
    PADDLEBOAT_MOUSE_BUTTON_6 = (1U << 5),
    PADDLEBOAT_MOUSE_BUTTON_7 = (1U << 6),
    PADDLEBOAT_MOUSE_BUTTON_8 = (1U << 7)
};

أجهزة الماوس المادية مقابل أجهزة الماوس الافتراضية

يشير Paddleboat_MouseStatus من PADDLEBOAT_MOUSE_CONTROLLER_EMULATED إلى عدم وجود جهاز ماوس فعلي ومكتبة ذراع التحكم في الألعاب وهو محاكاة ماوس افتراضي باستخدام وحدة تحكم متصلة. أدنى مستوى متصل فهرس وحدة التحكم مع مجموعة العلامات PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE هو يستخدم كماوس افتراضي. يمكن فقط ضمان إعداد تقارير عن أجهزة الماوس الافتراضية إحداثيات mouseX وmouseY قد تبلغ أجهزة الماوس الافتراضية عن الضغطات من زر ماوس واحد (أيسر)، ولكن هذا ليس مضمونًا.