Dodaj obsługę myszy

Użyj poniższych funkcji, aby dodać obsługę myszy do gry za pomocą biblioteki kontrolera gier. Termin „urządzenia myszy” odnosi się do tradycyjnych myszy oraz trackpadów i trackballów.

Dodaj wywołanie zwrotne stanu myszy

Biblioteka kontrolera gier korzysta z wywołania zwrotnego stanu myszy, aby powiadamiać grę o połączeniu lub rozłączeniu myszy. Obsługuje tylko jedno wywołanie zwrotne stanu myszy.

  • Aby zarejestrować wywołanie zwrotne stanu myszy lub zastąpić wcześniej zarejestrowane wywołanie zwrotne nową funkcją wywołania zwrotnego, wywołaj funkcję Paddleboat_setMouseStatusCallback.
  • Aby usunąć obecnie zarejestrowane wywołanie zwrotne, przekaż parametr NULL lub nullptr w parametrze statusCallback.
  • Parametr userData jest opcjonalnym wskaźnikiem danych zdefiniowanych przez użytkownika. Parametr userData jest przekazywany do funkcji wywołania zwrotnego. Ten wskaźnik jest zachowywany wewnętrznie, dopóki nie zostanie zmienione przez inne wywołanie funkcji Paddleboat_setMouseStatusCallback.
void Paddleboat_setMouseStatusCallback(Paddleboat_MouseStatusCallback
  statusCallback, void *userData)

Podpis funkcji wywołania zwrotnego stanu myszy:

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

Parametr wyliczenia mouseStatus ma 3 możliwe wartości:

  • PADDLEBOAT_MOUSE_NONE: nie jest obecnie podłączona żadna myszka.
  • PADDLEBOAT_MOUSE_CONTROLLER_EMULATED: podłączony kontroler symuluje mysz.
  • PADDLEBOAT_MOUSE_PHYSICAL: podłączona jest co najmniej 1 fizyczna mysz. (Urządzenia te obejmują mysz, touchpad, kulkę lub inne podobne urządzenia).

Parametr userData zawiera wskaźnik userData określony w ostatnim wywołaniu funkcji Paddleboat_setMouseStatusCallback. userData może mieć wartość NULL lub nullptr.

Nie wszystkie kontrolery symulują mysz. Kontrolery mogą symulować mysz za pomocą gałków analogowych lub zintegrowanego touchpada.

Biblioteka kontrolerów gier przekazuje dane tylko z jednej myszy. Fizyczne myszy mają wyższy priorytet niż myszy kontrolery wirtualne. Jeśli podłączona jest mysz fizyczna, przejmuje ona dowolną aktywną wcześniej mysz wirtualną kontrolera.

Odczyt danych myszy

Wywołaj funkcję Paddleboat_getMouseStatus, aby sprawdzić stan myszy.

Paddleboat_MouseStatus Paddleboat_getMouseStatus()

Aby pobrać bieżące dane myszy, użyj funkcji Paddleboat_getMouseData. Jeśli dane zostały odczytane, funkcja zwraca PADDLEBOAT_NO_ERROR. W przeciwnym razie zwraca odpowiedni kod błędu.

bool Paddleboat_getMouseData(Paddleboat_Mouse_Data *mouseData)

Struktura Paddleboat_Mouse_Data zawiera te informacje:

  • Sygnatura czasowa ostatniej sygnatury czasowej zdarzenia dotyczącego danych wejściowych myszy
  • Bieżąca pozycja wskaźnika
  • Stan przycisków myszy
  • Stan kółek myszy
struct Paddleboat_Mouse_Data {
    uint64_t timestamp;
    uint32_t buttonsDown;
    int32_t mouseScrollDeltaH;
    int32_t mouseScrollDeltaV;
    float mouseX;
    float mouseY;
}
Użytkownik struktury Opis
timestamp Sygnatura czasowa ostatniego zdarzenia wpisywania danych myszą. Wartość sygnatury czasowej jest podana w mikrosekundach od. Epoka zegara.
buttonsDown Pole bitowe, każdy bit, zaczynający się od bitu 0, oznacza ustawiony stan przycisku.
mouseX
mouseY
Położenie myszy we współrzędnych w pikselach. Współrzędne pozycji mają zakres od 0.0 do szerokości i wysokości ekranu.
mouseScrollDeltaH
mouseScrollDeltaV
Liczba wszystkich zdarzeń kółka przewijania myszy od poprzedniego wywołania Paddleboat_getMouseData. Wartości te nie muszą być dokładne, ale wskazują tylko aktywność kółka przewijania we wskazanym kierunku. Większość myszy jest wyposażona w 1 koło przewijania, którego stan jest ujęty w mouseScrollDeltaV. Jeśli mysz jest wyposażona w koło przewijania, jej stan w raportach jest widoczny w raporcie mouseScrollDeltaH. Po wywołaniu Paddleboat_getMouseData te wartości są wewnętrznie resetowane do wartości 0.

Biblioteka kontrolera gier definiuje stałe maski bitowe przycisków myszy w pliku nagłówka interfejsu 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)
};

Fizyczne i wirtualne urządzenia myszy

Wartość Paddleboat_MouseStatus o wartości PADDLEBOAT_MOUSE_CONTROLLER_EMULATED oznacza, że nie ma fizycznego urządzenia myszy, a biblioteka kontrolera gier symuluje mysz wirtualną za pomocą podłączonego kontrolera. Jako mysz wirtualna używany jest najniższy indeks połączonego kontrolera z ustawioną flagą PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE. Wirtualne urządzenia myszy mają gwarancję, że będą raportować tylko współrzędne mouseX i mouseY. Wirtualne urządzenia myszy mogą zgłaszać naciśnięcia pojedynczego (lewego) przycisku myszy, ale nie jest to gwarantowane.