Bir Java oyun motorunun temellerini inceliyorum ve bir Etkinlik Yöneticisi sistemine eklemeye hazır olduğum noktaya ulaştım.
Biliyorum, teoride bir Etkinlik Yöneticisi ne yapması gerektiğini: için nesneler belirli olaylar için "kayıt" izin ve Etkinlik Yöneticisi bir olayın bildirim alır zaman, "kayıtlı" dinleyicilere olayı yayınlayan. Üzerinde durduğum şey onu uygulamaya nasıl başlayacağım.
Çevrimiçi olarak, bir olay sistemini sıfırdan uygulama hakkında hiçbir şey bulamadım, bu yüzden bu durumda en iyi uygulamaların neler olduğunu - ne yapmamalı ve yapmamam gerektiğini öğrenmek istiyorum .
Örneğin, oyun nesnelerimin her birinin bir EventManager
alanı olması gerçekten gerekli mi? Tüm oyun nesnelerim tek bir soyut ana sınıftan miras aldığından, tüm oyun nesneleri arasında paylaşılan Etkinlik Yöneticisi'nin yalnızca bir örneği olması için statik bir başvuru kullanabilmem gerektiğini düşünüyorum. Her nesneyi oluşturmak için kullandığım Applet ile benzer bir şey yapıyorum.
Her bir abone olunan her etkinlik için bir çeşit koleksiyon bulundurmam gerektiğini tahmin ediyorum - gerektiğinde oyun nesnelerini listeye ekleme ve kaldırma. Ben yayınlanması gereken olayların bir sıra yapmak mümkün olacağını düşünüyorum, bu durumda ben sadece ana oyun döngüsüne "EventManager.Update ()" eklemek ve Update()
yöntem sonunda meydana olayları yayın var olabilir her çerçevenin. Son olarak, her nesnenin HandleEvent(Event e)
uygun bir şekilde ayrıştırıp yanıt verebilecekleri bir yöntemi olacaktır .
Bu, böyle bir sistemin uygulanmasına yönelik uygun bir yön gibi mi geliyor, yoksa raydan çıkıp çok açık bir şeyi mi kaçırıyorum?