Tôi đoán tôi đã quyết định rằng tôi thực sự thích xử lý sự kiện. Tôi có thể bị một chút do tê liệt phân tích, nhưng tôi lo lắng về việc làm cho thiết kế của tôi khó sử dụng hoặc gặp phải một số hậu quả không lường trước khác đối với các quyết định thiết kế của tôi.
Công cụ trò chơi của tôi hiện đang thực hiện kết xuất dựa trên sprite cơ bản với một camera trên cao. Thiết kế của tôi trông hơi giống thế này:
CảnhHandler
Chứa danh sách các lớp thực hiện giao diện SceneListener (hiện chỉ có Sprites). Gọi render () một lần mỗi lần đánh dấu và gửi onCameraUpdate (); tin nhắn đến SceneListener.
Bộ xử lý đầu vào
Thăm dò đầu vào một lần mỗi lần đánh dấu và gửi một thông báo "onKeyPression" đơn giản đến InputListener. Tôi có Camera InputListener chứa phiên bản SceneHandler và kích hoạt updateCamera (); các sự kiện dựa trên những gì đầu vào là.
Đặc vụ
Gọi các hành động mặc định trên bất kỳ Đại lý (AI) một lần mỗi lần đánh dấu và sẽ kiểm tra một ngăn xếp cho bất kỳ sự kiện mới nào đã được đăng ký, gửi chúng đến các Đại lý cụ thể khi cần.
Vì vậy, tôi có các đối tượng sprite cơ bản có thể di chuyển xung quanh một cảnh và sử dụng các hành vi lái thô sơ để đi du lịch. Tôi đã nhận được phát hiện va chạm, và đây là nơi tôi không chắc hướng thiết kế của mình sẽ tốt. Đó có phải là một thực hành tốt để có nhiều, xử lý sự kiện nhỏ? Tôi tưởng tượng theo cách mà tôi phải thực hiện một số loại CollisionHandler.
Tôi có thể tốt hơn với một EntityHandler hợp nhất xử lý AI, cập nhật va chạm và các tương tác thực thể khác trong một lớp không? Hoặc tôi sẽ ổn khi chỉ thực hiện nhiều hệ thống con xử lý sự kiện khác nhau truyền thông điệp cho nhau dựa trên loại sự kiện đó là gì? Tôi có nên viết EntityHandler chịu trách nhiệm phối hợp tất cả các trình xử lý sự kiện phụ này không?
Tôi nhận ra trong một số trường hợp, chẳng hạn như InputHandler và SceneHandler của tôi, đó là những loại sự kiện rất cụ thể. Một phần lớn mã trò chơi của tôi sẽ không quan tâm đến đầu vào và một phần lớn sẽ không quan tâm đến các cập nhật diễn ra hoàn toàn trong kết xuất cảnh. Vì vậy, tôi cảm thấy sự cô lập của tôi đối với các hệ thống đó là hợp lý. Tuy nhiên, tôi đang hỏi câu hỏi này cụ thể tiếp cận các sự kiện loại logic trò chơi.