Системи подій дивовижні, вони створюють надзвичайно громіздкий код приручити і дійсно дозволяють динамічно створювати ігри за допомогою легкого спілкування об'єктів та ігрового циклу. Мені важко працювати з ефективністю мого поточного впровадження. Наразі моя незначна оптимізація розділення списків об’єктів на події, на які вони відповідають, творила чудеса, але я можу зробити більше.
В даний час у мене є два методи:
Найпростіше: всі об’єкти додаються у вектор, коли подія надсилається, всі об’єкти надсилаються події за допомогою методу handle_event ()
Більш складний: у мене є карта з рядком, оскільки він є ключовим і int як його значення. Коли тип події додано, він додається до цієї карти, при цьому інт просто збільшується (повинен бути кращий спосіб),
вектор векторів об'єктів потім відштовхує новий вектор для обробки такого типу події.
Коли подія називається, вона просто викликає відповідний int у карті eventTypes до типу всередині векторів об'єктів і надсилає цю подію кожному об'єкту, що обробляє цей тип події.
Цей перший метод досить повільний (очевидно) для багатьох об'єктів, але досить швидкий для дуже мало об'єктів. Тоді як другий метод досить швидкий з великими об'єктами, які хотіли б обробляти різні типи подій, але повільніше, ніж перший метод на об'єкт із об'єктами, що обробляють один і той же тип події.
Чи існує швидший (розумний час) шлях? Чи є більш швидкий спосіб шукати int з типу рядка? (Спочатку у мене був перелік, але він не дозволяв користувацьким типам, які необхідні через бажаний рівень динамізму.)