Grzebię w podstawach silnika gry Java i doszedłem do momentu, w którym jestem gotowy do dodania w systemie Event Manager.
Wiem teoretycznie , co powinien zrobić Menedżer zdarzeń: zezwalać obiektom na „rejestrację” określonych zdarzeń, a gdy Menedżer zdarzeń zostanie powiadomiony o zdarzeniu, przekaże je „zarejestrowanym” odbiorcom. Zastanawiam się, jak zacząć to wdrażać.
Nie byłem w stanie znaleźć niczego online na temat wdrażania systemu zdarzeń od zera, dlatego szukam informacji na temat najlepszych praktyk w tym przypadku - co powinienem, a czego nie powinienem robić.
Na przykład, czy naprawdę konieczne jest, aby każdy z moich obiektów gry miał EventManager
pole? Ponieważ wszystkie moje obiekty gry dziedziczą po jednej, abstrakcyjnej klasie nadrzędnej, myślę, że powinienem móc użyć statycznego odwołania, aby istniała tylko jedna instancja Event Managera, współdzielona między wszystkimi obiektami gry. Z apletem robię coś podobnego, czego już używam do renderowania każdego obiektu.
Podejrzewam, że musiałbym utrzymywać jakąś kolekcję dla każdego możliwego subskrybowanego zdarzenia - dodając i usuwając obiekty gry z listy, w razie potrzeby. Myślę, że powinna istnieć możliwość utworzenia kolejki zdarzeń, które muszą być transmitowane, w takim przypadku mógłbym po prostu dodać „EventManager.Update ()” do głównej pętli gry i pozwolić Update()
metodzie wyemitować zdarzenia, które miały miejsce na końcu każdej ramki. Na koniec każdy obiekt miałby HandleEvent(Event e)
metodę, którą mogliby odpowiednio przeanalizować i odpowiednio zareagować.
Czy to brzmi jak właściwy kierunek do wdrożenia takiego systemu, czy też jestem zejść z toru i / lub brakuje czegoś oczywistego?