Я підходив до основ ігрового двигуна Java, і дойшов до того, коли я готовий додати в систему Event Manager.
Я теоретично знаю, що повинен робити Менеджер подій: дозволяти об’єктам "реєструватися" для певних подій, і щоразу, коли Менеджер подій отримує повідомлення про подію, транслює подію "зареєстрованим" слухачам. Те, про що я натрапив - це як почати його реалізовувати.
Мені в Інтернеті нічого не вдалося знайти про те, як запровадити систему подій з нуля, тому я шукаю інформацію про те, які найкращі практики в цьому випадку - що я повинен, а що не повинен робити.
Наприклад, чи дійсно потрібно, щоб кожен з моїх ігрових об’єктів мав EventManagerполе? Оскільки всі мої ігрові об'єкти успадковуються від одного, абстрактного батьківського класу, я думаю, я повинен мати можливість використовувати статичну довідку, щоб було лише один екземпляр диспетчера подій, розділений між усіма ігровими об'єктами. Я роблю щось подібне, з Applet, що я використовую для візуалізації кожного об'єкта.
Я думаю, мені доведеться підтримувати якусь колекцію для кожної можливої передплаченої події - додавання та видалення ігрових об’єктів зі списку, якщо потрібно. Я думаю , що це повинно бути можливо зробити чергу подій , які повинні бути мовлення, в цьому випадку я міг би просто додати «EventManager.Update ()» в основний цикл гри, і є Update()спосіб транслювати події , які відбулися в кінці кожного кадру. Нарешті, кожен об'єкт мав би HandleEvent(Event e)метод, який потім міг би аналізувати та відповідати відповідним чином.
Чи звучить це як відповідний напрямок до впровадження такої системи, чи я відхиляюсь від шляху та / або пропускаю щось цілком очевидне?