Fare cihazı desteği ekle

Oyun Kumandası kitaplığını kullanarak oyununuza fare cihazı desteği eklemek için aşağıdaki işlevleri kullanın. Burada fare cihazları terimi, geleneksel farelerin yanı sıra dokunmatik yüzeyleri veya trackball'ları tanımlamak için kullanılır.

Fare durumu geri çağırma işlevi ekleme

Game Controller kitaplığı, bir fare bağlandığında veya bağlantısı kesildiğinde oyunu bilgilendirmek için fare durumu geri çağırmasını kullanır. Aynı anda yalnızca bir fare durumu geri aramasını destekler.

  • Bir fare durumu geri çağırma işlevini kaydetmek veya daha önce kaydedilmiş bir geri çağırma işlevini yeni bir geri çağırma işleviyle değiştirmek için Paddleboat_setMouseStatusCallback işlevini çağırın.
  • Şu anda kayıtlı bir geri aramayı kaldırmak için statusCallback parametresinde NULL veya nullptr değerini iletin.
  • userData parametresi, kullanıcı tarafından tanımlanan verilere yönelik isteğe bağlı bir işaretçidir. userData parametresi, geri çağırma işlevine iletilir. Bu işaretçi, Paddleboat_setMouseStatusCallback için başka bir çağrı tarafından değiştirilene kadar dahili olarak saklanır.
void Paddleboat_setMouseStatusCallback(Paddleboat_MouseStatusCallback
  statusCallback, void *userData)

Fare durumu geri çağırma işlevinin işlev imzası şöyledir:

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

mouseStatus numaralandırma parametresinin üç olası değeri vardır:

  • PADDLEBOAT_MOUSE_NONE: Şu anda bağlı fare cihazı yok.
  • PADDLEBOAT_MOUSE_CONTROLLER_EMULATED: Bağlı bir kumanda fareyi simüle ediyordur.
  • PADDLEBOAT_MOUSE_PHYSICAL: Bir veya daha fazla fiziksel fare cihazı bağlıdır. (Bu cihazlar arasında fare, dokunmatik alan, iz topu veya benzeri cihazlar yer alır.)

userData parametresi, Paddleboat_setMouseStatusCallback için yapılan son çağrıda belirtilen userData işaretçisini içeriyor. userData, NULL veya nullptr olabilir.

Bazı kumandalar fareyi simüle etmez. Kontrol cihazları, analog çubuklardan birini veya entegre bir dokunmatik alanı kullanarak fareyi simüle edebilir.

Oyun kumandası kitaplığı yalnızca tek bir fare cihazından gelen verileri bildirir. Fiziksel fare cihazları, sanal denetleyici fare cihazlarına göre önceliklidir. Fiziksel bir fare bağlanırsa daha önce etkin olan sanal denetleyici farenin yerini alır.

Fare verilerini okuma

Fare cihazının durumunu almak için Paddleboat_getMouseStatus işlevini çağırın.

Paddleboat_MouseStatus Paddleboat_getMouseStatus()

Mevcut fare verilerini almak için Paddleboat_getMouseData işlevini kullanın. Bu işlev, veriler başarıyla okunursa PADDLEBOAT_NO_ERROR değerini, aksi takdirde uygun bir hata kodunu döndürür.

bool Paddleboat_getMouseData(Paddleboat_Mouse_Data *mouseData)

Paddleboat_Mouse_Data yapısı aşağıdaki bilgilerle ilgili veriler içerir:

  • En son fare girişi etkinliğinin zaman damgası
  • Mevcut işaretçi konumu
  • Fare düğmelerinin durumu
  • Fare tekerleklerinin durumu
struct Paddleboat_Mouse_Data {
    uint64_t timestamp;
    uint32_t buttonsDown;
    int32_t mouseScrollDeltaH;
    int32_t mouseScrollDeltaV;
    float mouseX;
    float mouseY;
}
Yapı üyesi Açıklama
timestamp En son fare girişi etkinliğinin zaman damgası. Zaman damgası değeri, saat döneminden bu yana geçen mikrosaniye cinsindendir.
buttonsDown Bit alanı. Her bit, 0. bit'ten başlayarak ayarlanmışsa bir düğmenin basılı durumunu gösterir.
mouseX
mouseY
Fare konumunun piksel koordinatları. Konum koordinatları, ekran genişliği ve yüksekliği için 0.0 ile 0.0 arasında bir aralığa sahiptir.
mouseScrollDeltaH
mouseScrollDeltaV
Paddleboat_getMouseData için önceki çağrıdan bu yana gerçekleşen toplam fare kaydırma tekerleği etkinliklerinin sayısı. Bu değerlerin kesin olduğu garanti edilmez. Yalnızca belirli bir yöndeki kaydırma tekerleği etkinliği hakkında bilgi verirler. Çoğu farede bir kaydırma tekerleği bulunur ve bu tekerlek mouseScrollDeltaV içinde bildirilir. Farenin yan kaydırma tekerleği varsa mouseScrollDeltaH içinde bildirilir. Bu değerler, 0 çağrısından sonra dahili olarak Paddleboat_getMouseData olarak sıfırlanır.

Game Controller kitaplığı, paddleboat.h arayüzü başlık dosyasındaki fare düğmeleri için bit maskesi sabitlerini tanımlar:

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)
};

Fiziksel ve sanal fare cihazları

Paddleboat_MouseStatus PADDLEBOAT_MOUSE_CONTROLLER_EMULATED, fiziksel bir fare cihazının olmadığını ve Game Controller kitaplığının bağlı bir kumanda kullanarak sanal fareyi simüle ettiğini gösterir. PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE işareti ayarlanmış en düşük bağlı kontrol cihazı dizini, sanal fare olarak kullanılır. Sanal fare cihazlarının yalnızca mouseX ve mouseY koordinatlarını bildirmesi garanti edilir. Sanal fare cihazları, tek bir (sol) fare düğmesinden gelen basma işlemlerini bildirebilir ancak bu garanti edilmez.