Câu hỏi của tôi là:
Làm cách nào tôi có thể xử lý các trạng thái trò chơi trong hệ thống thực thể của mình mà không cần phải giữ một chồng các đối tượng trạng thái trò chơi xung quanh?
Vì vậy, thiết kế hệ thống thực thể của tôi có nghĩa là khi một thực thể cần đăng ký cho các sự kiện đầu vào, thành phần đầu vào gọi hệ thống đầu vào và nói "đăng ký thực thể này cho đầu vào này". Đây là tất cả tốt và tốt, tuy nhiên nếu bạn thêm vào khái niệm trạng thái trò chơi này (giả sử màn hình tạm dừng), nó sẽ trở thành một vấn đề để giải quyết nếu một thực thể ở trạng thái hiện tại và sẽ nhận được đầu vào.
Tôi có thể tăng thành phần / hệ thống đầu vào để thông báo: "đăng ký thực thể này cho đầu vào này trong khi ở các trạng thái trò chơi này", nhưng điều này đòi hỏi mọi thực thể đều biết nó sẽ được sử dụng ở trạng thái nào và điều đó có thể không rõ ràng. Ngoài ra, việc giữ một danh sách các trạng thái trò chơi xung quanh mỗi đầu vào đã đăng ký (và các hệ thống khác sử dụng hàm gọi lại) có vẻ không hiệu quả lắm.
Một ý tưởng khác mà tôi có là vì sẽ có một thực thể đại diện cho trạng thái trò chơi, đánh dấu là bị vô hiệu hóa, sau đó khi tạo sự kiện đầu vào kiểm tra xem thực thể đó không phải là hậu duệ của thực thể trạng thái trò chơi bị vô hiệu hóa. Có vẻ tốn kém để làm việc cho cha mẹ cho mỗi cuộc gọi lại.
Một ý tưởng khác là để tất cả các hệ thống lưu trữ dữ liệu của chúng được khóa theo trạng thái hiện tại, theo cách đó khi tạo đầu vào, thực thể đích thậm chí sẽ không phải là một ứng cử viên. Tuy nhiên, điều này thực sự làm tổn thương khả năng cho phép liên lạc giữa các thực thể ở các trạng thái khác nhau (không phải là vấn đề quá lớn đối với màn hình tạm dừng, nhưng hãy nghĩ rằng việc chọn khóa trong Oblivion / Skyrim).
Ý tưởng khác duy nhất tôi có là để tất cả các thành phần xử lý một sự kiện thay đổi trạng thái và liên lạc với hệ thống có liên quan của chúng để vô hiệu hóa bất cứ thứ gì chúng đã đăng ký và kích hoạt lại khi chuyển về trạng thái này.
Thứ hai (đánh dấu một đối tượng là vô hiệu hóa) trở đi (có từng thành phần đối phó với thay đổi trạng thái) có vẻ như là ý tưởng tốt nhất của tôi, nhưng không ai trong số chúng nhảy ra khỏi tôi là đặc biệt tuyệt vời.
Có ai khác có bất kỳ ý tưởng khác về cách làm điều này?
chỉnh sửa Trong khi tôi nói về đầu vào cụ thể trong câu hỏi này, nó có thể có nghĩa là bất kỳ hệ thống nào có khả năng gửi tin nhắn / sự kiện đến các thực thể, chẳng hạn như va chạm, sự kiện hẹn giờ, v.v ...