Saya telah bermain-main dengan dasar-dasar mesin game Java, dan saya telah mencapai titik di mana saya siap untuk menambahkan dalam sistem Event Manager.
Saya tahu, secara teori , apa yang harus dilakukan oleh seorang Manajer Acara: mengizinkan objek untuk "mendaftar" untuk acara tertentu, dan setiap kali Manajer Acara diberitahu tentang suatu peristiwa, menyiarkan acara itu kepada pendengar "yang terdaftar". Apa yang saya bingung adalah bagaimana memulai mengimplementasikannya.
Saya belum dapat menemukan apa pun, online, tentang penerapan sistem acara dari awal, jadi saya mencari masukan tentang praktik terbaik apa yang ada dalam kasus ini - apa yang seharusnya dan tidak seharusnya saya lakukan.
Misalnya, apakah benar-benar diperlukan untuk setiap objek game saya untuk memiliki EventManager
bidang? Karena semua objek game saya mewarisi dari satu, kelas induk abstrak, saya pikir saya harus dapat menggunakan referensi statis sehingga hanya ada satu instance dari Event Manager, dibagi di antara semua objek game. Saya melakukan sesuatu yang serupa, dengan Applet, yang saya gunakan untuk membuat setiap objek, sudah.
Saya kira saya harus memelihara koleksi semacam untuk setiap acara berlangganan yang mungkin - menambah dan menghapus objek game dari daftar, sesuai kebutuhan. Saya pikir seharusnya dimungkinkan untuk membuat antrian acara yang perlu disiarkan, dalam hal ini saya cukup menambahkan "EventManager.Update ()" ke loop permainan utama, dan minta Update()
metode menyiarkan peristiwa yang terjadi di akhir dari setiap bingkai. Akhirnya, setiap objek akan memiliki HandleEvent(Event e)
metode, yang kemudian dapat diurai dan ditanggapi dengan tepat.
Apakah ini terdengar seperti arah yang tepat untuk menerapkan sistem seperti itu, atau apakah saya keluar jalur dan / atau melewatkan sesuatu yang cukup jelas?