Exemple #1
0
bool World::loadFromFile(std::string filename){
    rapidjson::Document doc;
    if(readJsonFile(filename, doc)){
        rapidjson::Value& objects = doc["objects"];
        for (rapidjson::SizeType i = 0; i < objects.Size(); i++) {
            if(!worldObjectExists(objects[i]["type"].GetString())){
                Logger::warning << "World Object \"" << objects[i]["type"].GetString() << "\" doesn't exist, skipping." << std::endl;
                continue;
            }
            WorldObject* o = getWorldObject(objects[i]["type"].GetString())->clone();
            o->initFromJson(this, objects[i]);
            if (objects[i].HasMember("id"))
                idObjectMap[objects[i]["id"].GetString()] = o;
            addObject(o);
        }
        Logger::info << "Level loaded" << std::endl;
    }
}