Đối với dự án của tôi, tôi muốn sử dụng một thực thể dựa trên thành phần trong C ++. Việc triển khai hiện tại của tôi được chia thành các phần sau:
- Hệ thống - Chứa bản đồ của các thành phần của lớp nhất định và hoạt động trên các hệ thống này. Ví dụ: ChemistrySystem có một vectơ Vật lý.
- Thành phần - Một thành phần chứa một số biến công khai và có thể là hàm tạo để khởi tạo chúng.
- Các thực thể - Một thực thể đối với tôi chỉ là một Id. Tuy nhiên, nó không được lưu trữ ở bất cứ đâu, thay vào đó chỉ có các thành phần của nó được lưu trữ trong các hệ thống trong bản đồ (trong đó khóa là entityId và giá trị là con trỏ tới thành phần).
Vấn đề của tôi là tạo ra các thể hiện của các đối tượng khác nhau trong trò chơi của tôi. Tôi muốn định nghĩa các đối tượng trong XML (có thể là bất kỳ định dạng tệp văn bản nào). Vì lý do hiệu suất, tệp này chỉ được phân tích cú pháp một lần khi chương trình được chạy.
Điều đó có nghĩa là tôi nên tạo một số mẫu từ nó trong ObjectFactory của mình và liên kết nó với một tên. Sau đó, tôi chỉ cần gọi factory.CreateObject("Player")
để thêm thực thể mới vào trò chơi.
Tôi không thực sự chắc chắn làm thế nào để thực hiện điều này mà không cần quá nhiều mã. Một mối quan tâm khác là, tôi không muốn nhà máy của mình biết về chính các hệ thống. Nhưng vì các thành phần của tôi được lưu trữ trong các hệ thống chứ không phải đối tượng Thực thể, tôi sẽ cần sử dụng một số hệ thống nhắn tin để chuyển các thành phần mới vào hệ thống phù hợp của chúng.
Câu hỏi của tôi là , làm thế nào tôi có thể thực hiện đối tượng sinh sản với khuôn mẫu cho từng loại đối tượng? Và làm thế nào để một số công cụ mô tả các đối tượng của họ với các tập tin cấu hình?