Fare cihazı desteği ekle

Aşağıdaki fonksiyonları kullanarak oyununuza fare cihazı desteği eklemek için: Oyun Kumandası kitaplığı. Burada, fare cihazları terimini yanı sıra dokunmatik yüzeyleri veya iztoplarını da kullanıyor.

Fare durumu geri çağırması ekle

Oyun Kumandası kitaplığı, oyunda bir sorun olduğunda oyunu bildirmek için fare durumu geri çağırmasını kullanır. bağlı olup olmadığını kontrol edin. Yalnızca bir fare durumu geri çağırmasını destekler oluşturabilirsiniz.

  • Fare durumu geri çağırması kaydetmek veya daha önce kaydedilmiş olanları değiştirmek için yeni bir geri çağırma işleviyle geri çağırmak için, Paddleboat_setMouseStatusCallback işlevini kullanın.
  • Şu anda kayıtlı olan bir geri çağırmayı kaldırmak için şurada NULL veya nullptr mesajını iletin: statusCallback parametresinden yararlanın.
  • userData parametresi, kullanıcı tanımlı veriler için isteğe bağlı bir işaretçidir. İlgili içeriği oluşturmak için kullanılan userData parametresi, geri çağırma işlevine aktarılır. Bu için başka bir çağrı tarafından değiştirilene kadar işaretçi dahili olarak korunur. Paddleboat_setMouseStatusCallback
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 sıralama parametresi üç olası değere sahip olabilir:

  • PADDLEBOAT_MOUSE_NONE: Şu anda bağlı bir fare cihazı yok.
  • PADDLEBOAT_MOUSE_CONTROLLER_EMULATED: Bağlı bir kumanda simüle ediliyor sahip olursunuz.
  • PADDLEBOAT_MOUSE_PHYSICAL: Bir veya daha fazla fiziksel fare cihazı bağlı. (Bu cihazlar fare, dokunmatik alan, iztopu veya benzer cihazlar.)

userData parametresi, son öğede belirtilen userData işaretçisini içerir. Paddleboat_setMouseStatusCallback numaralı telefona sesli arama yapın. userData, NULL veya nullptr.

Bazı kumandalar fareyi taklit etmez. Kumandalar, fareyi simüle edebilir. analog çubuklar veya entegre dokunmatik alan ile sürekli kontrol ediliyor.

Oyun Kumandası kitaplığı yalnızca tek bir fare cihazından veri bildirir. Fiziksel fare cihazları, sanal denetleyici fare cihazlarına göre önceliklidir. fiziksel fare bağlandığında, daha önce aktif olan sanal makinelerin için geçerlidir.

Fare verilerini oku

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

Paddleboat_MouseStatus Paddleboat_getMouseStatus()

Paddleboat_getMouseData'ı kullanma işlevini kullanın. Bu işlev, Veriler başarıyla okunursa PADDLEBOAT_NO_ERROR, aksi takdirde uygun hata kodu döndürülür.

bool Paddleboat_getMouseData(Paddleboat_Mouse_Data *mouseData)

Paddleboat_Mouse_Data yapısı, aşağıdakilerle ilgili bilgiler içerir:

  • En son fare girişi etkinliği zaman damgası
  • İşaretçinin geçerli 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, belirtilen tarihten itibaren mikrosaniye cinsindendir. saat dilimi.
buttonsDown Bit alanı, her bir bit 0'dan itibaren değeri, ayarlanırsa düğmenin aşağı durumunu ifade eder.
mouseX
mouseY
Piksel koordinatlarında fare konumu. Konum koordinatları 0.0 aralığındadır ekran genişliğini ve yüksekliğini değiştirebilirsiniz.
mouseScrollDeltaH
mouseScrollDeltaV
Fare kaydırma tekerleği etkinliklerinin kümülatif toplamı : Arkadaş Bitkiler Projesi’ne Paddleboat_getMouseData Bu değerler verinin net olması garanti edilir, ancak bir sağlayabilirsiniz. Çoğu farede bir tane var kaydırma tekerleğiyle ilgili mouseScrollDeltaV Farenin bir tarafı varsa tekerleğiyle ilgili bir sayfada mouseScrollDeltaH Bu değerler, Yapılan çağrıdan sonra dahili olarak 0 Paddleboat_getMouseData.

Oyun Kumandası kitaplığı, paddleboat.h arayüz başlığı dosyası:

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 ifadesi fiziksel bir fare cihazının olmadığını ve Oyun Kumandası kitaplığının bağlı bir denetleyici kullanarak sanal fare simülasyonu. En düşük bağlı PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE işareti ayarlanmış denetleyici dizini sanal fare olarak kullanılır. Sanal fare cihazlarının yalnızca rapor vermesi garanti edilir mouseX ve mouseY koordinatları. Sanal fare cihazları, bir (sol) fare düğmesidir, ancak bu garanti edilmez.