यदि किसी इकाई के पास कोई स्पष्ट 'प्रकार' (जैसे खिलाड़ी) नहीं है और यह केवल घटकों का एक संग्रह है, तो मैं उन संस्थाओं की पहचान कैसे करूं जो मेरे सिस्टम पर होनी चाहिए और जिन पर काम नहीं होना चाहिए? उदाहरण के लिए, पोंग के एक खेल में पैडल और बॉल दोनों खिड़की की सीमाओं से टकराते हैं। हालांकि, प्रत्येक के लिए टक्कर हैंडलिंग सिस्टम अलग-अलग होंगे, इसलिए एक सिस्टम को गलत प्रकार की संस्थाओं को नहीं संभालना चाहिए।
void PlayerCollisionSystem::update(std::vector<Entity *> entities) {
typedef std::vector<Entity *>::iterator EIter;
for (EIter i = entities.begin(); i != entities.end(); ++i) {
Entity *player = *i; // How do I verify that the entity is a player?
// Get relevant components.
PositionComponent *position = player->getComponent<PositionComponent>();
VelocityComponent *velocity = player->getComponent<VelocityComponent>();
SpriteComponent *sprite = player->getComponent<SpriteComponent>();
// Detect and handle player collisions using the components.
}
}
खिलाड़ी और गेंद दोनों टकराव से निपटने के लिए एक ही प्रासंगिक घटक प्रकार साझा करते हैं, फिर भी उनका सिस्टम कार्यान्वयन अलग होगा।
यदि मेरे पास सभी खेल संस्थाओं का एक कंटेनर है, तो मैं विरासत के बिना Entity
या सदस्य चर जैसे सहित विशिष्ट प्रकार की इकाई की पहचान कैसे करूंstd::string type
, जिस स्थिति में एक इकाई अब केवल घटकों का एक संग्रह नहीं है?