#define WINVER 0x0400 #include #include "Instance.h" std::string name; Instance* parent = NULL; std::vector children; static std::string className = "BaseInstance"; Instance::Instance(void) { parent = NULL; name = "Default Game Instance"; className = "BaseInstance"; } Instance::~Instance(void) { for(size_t i = 0; i < children.size(); i++) { delete children.at(i); } } std::string Instance::getClassName() { return className; } std::vector Instance::getChildren() { return children; } std::vector Instance::getAllChildren() { std::vector totalchildren = children; for(size_t i = 0; i < children.size(); i++) { std::vector subchildren = children.at(i)->getAllChildren(); totalchildren.insert(totalchildren.end(), subchildren.begin(), subchildren.end()); } return totalchildren; } void Instance::setParent(Instance* newParent) { if(parent != NULL) { parent->removeChild(this); } parent = newParent; if(newParent != NULL) { newParent->addChild(this); } } Instance* Instance::getParent() { return parent; } void Instance::addChild(Instance* newChild) { children.push_back(newChild); } void Instance::removeChild(Instance* oldChild) { for(size_t i = 0; i < children.size(); i++) { if(children.at(i) == oldChild) { children.erase(children.begin() + i); } } } Instance* Instance::findFirstChild(std::string name) { Instance* child = NULL; for(size_t i = 0; i < children.size(); i++) { if(children.at(i)->name == name) { child = children.at(i); break; } } return child; }