Ana Menü
· Ana Sayfa
· Dosyalar
· Dökümanlar
· Forum
· Günün Resmi
· Haber Arşivi
· WWW Linkleri
· Üye Listesi

     Forumlar

 strncpy ve strncpy_s
 Konu adi : Borland c++ Builder ile Amiral Batti
 Rady10 - YerliOyun
 Kabusta Kaybolmak
 Konsol da programı bekletmek
 Oyun programlama icin hangi programlama dilli ?
 flash! şanlıurfa bilgisayar oyununda(no rapid)
 Sevgilim Olur musun?
 Directx'e başlamak isteyenler bi bakın
 PSP programlama
 Flash tan php
 Bilgisyr oyunu yapmam için üniverstde hangi bölüme girmeliym
 www.arshiv.gen.ms
 Cimg.h ilgilenenler icin
 müttefik oyunu

Konu Disi
 Emraah
 Yeni sitemiz açıldı
 Kalp krizi durumunda ne yapılmalı?
 Oyun sektöründe hangi görevde çalışmak isterdiniz?
 Takım arkadaşı sorunu
 msn de renklı nıck
 pc hata veriyor ! YARDIM!!
 Gülmek isteyenler Buraya
 İnanılmaz hl 2 modu görüntüsü
 Computer Languages History

[ Forumlara Git ]


oyunyapimi.org: Forums

www.oyunyapimi.org :: Başlığı Görüntüle - key injection buffer
 SSSSSS   AramaArama   Kullanıcı GruplarıKullanıcı Grupları   ProfilProfil   LoginLogin 

key injection buffer

 
Yeni Başlık Gönder   Cevap Gönder    www.oyunyapimi.org Forum Ana Sayfası -> Programlama Dilleri ve Algoritmalar
Önceki başlık :: Sonraki başlık  
Yazar Mesaj
Arda



Kayıt: Feb 25, 2003
Mesajlar: 226

MesajTarih: Fri Jul 30, 2004 5:45 pm    Mesaj konusu: key injection buffer Alıntıyla Cevap Ver

heycan yapmışım, bi daha yolluyorum

key injection buffer nedir ne için kullanılır?
biraz karmaşık geldi incelediğim örnek kod, pek anlayamadım

örnek kod:
Kod:
   
// Now we let's fill our event
if(ready){
    event.mouse_x = mouse_x;
    event.mouse_y = mouse_y;
    event.mouse_free_x = mouse_free_x;
    event.mouse_free_y = mouse_free_y;
    event.current_time = sys_time_passed;
    // Now let's check our keyboard status, represented in the keys array
    for(i=0; i<num; i++){ // for every key
        // set current key to key no: i, converting from DInput key to our
        // key type
        key = di2in_key[keys[i].dwOfs];
        if(!key) continue; // the processed key value is 0, it means it's
                                  // not mapped
        // if the key is mapped, let's update the key_states array
        key_states[key] = (byte)keys[i].dwData & 0x80L;
           
        // if the event is a press or release event
        if(key_states[key] != old_key_states[key]){
            event.key = key;
            event.flags = 0;
            if(key_states[INKEY_LEFTSHIFT] || key_states[INKEY_RIGHTSHIFT])
                    event.flags |= INEVF_SHIFT;
            if(key_states[INKEY_LEFTCTRL] || key_states[INKEY_RIGHTCTRL])
                    event.flags |= INEVF_CTRL;
            if(key_states[INKEY_LEFTALT] || key_states[INKEY_RIGHTALT])
                    event.flags |= INEVF_ALT;
            check_key_events(key, &event);
               
            // we set the current key states to old key state
            old_key_states[key] = key_states[key];
            // to make sure we do not call a drag event in this frame
            // (we can drag while we click or release a button)
            key_event_sent[key] = 1;
        }
    }      

// handle key injection buffer in the same way
    for (i=0;i<keyInjectionBufferIndex;i++){
        key = keyInjectionBuffer[i][0];
        // set current key state
        keyStates[key] = keyInjectionBuffer[i][1];
        if (keyStates[key] != oldKeyStates[key]){
       // press or release event, need to handle it now
       event.key = key;
       event.flags = 0;

        if(key_states[INKEY_LEFTSHIFT] || key_states[INKEY_RIGHTSHIFT])
                    event.flags |= INEVF_SHIFT;
        if(key_states[INKEY_LEFTCTRL] || key_states[INKEY_RIGHTCTRL])
                    event.flags |= INEVF_CTRL;
        if(key_states[INKEY_LEFTALT] || key_states[INKEY_RIGHTALT])
                    event.flags |= INEVF_ALT;
        CheckKeyEvents(key, &event);
        // save current key state to old
        oldKeyStates[key] = keyStates[key];
        // make sure we don't call a drag event in this frame
        keyEventSent[key] = 1;
    }
}keyInjectionBufferIndex = 0;


tam kod: cotc3src.zip

ilgili kaynak dosyası: IN_WIN.CPP

Ya biliyorum bunu kodu yazan adama sormalıyım aslında ama kesin ulaşamam ve çok önce yazılmış.
Bu arada key_states falam filan bazen KeyStates olarak yazılyıor. Yani bu yazımlar aynı, sadece kodları anlamak için kendim yazıyorum ondan yazılım farklılıkları var, yarısı benim yarısı orijinalini yapan adamın.

Asıl anlayamadığım şey old_key_states update olduktan sonra key_injetion_buffer lı bölümde, tekrar kullanılıyor. Şimdi bu bir hata mı yoksa bu injection buffer cahili olduğum için mi anlayamıyorum.

Lütfen, biliyorum biraz uğraştırıyorum, ama biraz zaman ayırıp yardım ediverin şu garibe Sad
Başa dön
Kullanıcı profilini gör MSN Messenger
Arda



Kayıt: Feb 25, 2003
Mesajlar: 226

MesajTarih: Sun Nov 21, 2004 3:43 pm    Mesaj konusu: Alıntıyla Cevap Ver

DirectInput spesifik:
http://www.gamedev.net/community/forums/topic.asp?topic_id=49758&whichpage=1&#276143
Başa dön
Kullanıcı profilini gör MSN Messenger
Mesajları göster:   
Yeni Başlık Gönder   Cevap Gönder    www.oyunyapimi.org Forum Ana Sayfası -> Programlama Dilleri ve Algoritmalar Tüm saatler GMT +2 Saat
1. sayfa (Toplam 1 sayfa)

 
Forum Seçin:  
Bu forumda yeni konular açamazsınız
Bu forumdaki mesajlara cevap veremezsiniz
Bu forumdaki mesajlarınızı değiştiremezsiniz
Bu forumdaki mesajlarınızı silemezsiniz
Bu forumdaki anketlerde oy kullanamazsınız


Powered by phpBB 2.x.x © 200x phpBB Group
Türkçe Çeviri : Onur Turgay & Erdem Çorapçıoğlu
Türkçe Düzenleme: Alexis Canver
Version 2.x.x of PHP-Nuke Port by Tom Nitzschner © 200x www.toms-home.com




Web site powered by PHP-Nuke
Web site engine\'s code is Copyright © 2002 by PHP-Nuke. All Rights Reserved. PHP-Nuke is Free Software released under the GNU/GPL license.
Sayfa Üretimi: 0.123 Saniye