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
parametresindeNULL
veyanullptr
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.