הוספת תמיכה במכשירי עכבר

אפשר להשתמש בפונקציות הבאות כדי להוסיף למשחק תמיכה במכשירי עכבר באמצעות ספריית בקרי המשחקים. אנחנו משתמשים כאן במונח 'מכשירי עכבר' כדי לתאר בעכברים מסורתיים, וגם במשטחים או כדורי עקיבה.

הוספת קריאה חוזרת (callback) של סטטוס העכבר

הספרייה של בקר המשחקים משתמשת בקריאה חוזרת (callback) של סטטוס העכבר כדי להודיע למשחק כאשר שהעכבר מחובר או מנותק. הוא תומך בקריאה חוזרת (callback) אחת בלבד של סטטוס העכבר בכל פעם.

  • כדי לרשום קריאה חוזרת (callback) של סטטוס העכבר או להחליף מכשירים שנרשמו בעבר עם פונקציית קריאה חוזרת חדשה, מפעילים את הפונקציה Paddleboat_setMouseStatusCallback.
  • כדי להסיר קריאה חוזרת (callback) שרשומה כרגע, צריך להעביר את 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 עשוי להיות NULL או 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. התקני עכבר וירטואליים יכולים לדווח על לחיצות שבוצעו לחצן (שמאלי) יחיד בעכבר, אך הדבר לא מובטח.