void SpaceGameLayer::super_init(const char*map_name,uint32_t res_scale) { scale = res_scale; cocos2d::Layer::init(); auto director = cocos2d::Director::getInstance(); this->setScale(1); float sf = director->getContentScaleFactor(); this->setAnchorPoint(cocos2d::Point(0, 0)); //////////////////////////////////// // LEVEL-SETUP - GENERAL level = new Level(); level->loadMap(map_name,scale); this->addChild(level); level->setPosition(0, 0); // Special atribute layers string fgs = "foreground"; int fg_cnt = 1; TMXLayer *fg = level->map->getLayer((fgs + std::to_string(fg_cnt))); while (fg != NULL) { this->addChild(fg, 10); fg->setScale(level->getScale()); fg_cnt++; fg = level->map->getLayer((fgs + std::to_string(fg_cnt))); } string bgs = "background"; int bg_cnt = 1; TMXLayer *bg = level->map->getLayer((bgs + std::to_string(bg_cnt))); while (bg != NULL) { bg->setScale(scale); background_layers.pushBack(bg); bg = level->map->getLayer((bgs + std::to_string(bg_cnt))); bg_cnt++; } //////////////////////////////////// // OUTSIDE OF SCREEN RECTANGLE - GENERAL - This rect is used to determine which go's are on/off-screen outside_screen = 1.5; float screnWidh = director->getWinSize().width*outside_screen; float screnHeight = director->getWinSize().height*outside_screen; float distanceX = (screnWidh - screnWidh / outside_screen) / 2; float distanceY = (screnHeight - screnHeight / outside_screen) / 2; screen.setRect(getPositionX() - distanceX, getPositionY() - distanceY, screnWidh, screnHeight); if (view_of_screen_rect) { screen_draw = cocos2d::DrawNode::create(); cocos2d::Vec2 rectangle[4]; rectangle[0] = cocos2d::Vec2(screen.getMinX(), screen.getMinY()); rectangle[1] = cocos2d::Vec2(screen.getMaxX(), screen.getMinY()); rectangle[2] = cocos2d::Vec2(screen.getMaxX(), screen.getMaxY()); rectangle[3] = cocos2d::Vec2(screen.getMinX(), screen.getMaxY()); screen_draw->drawPolygon(rectangle, 4, cocos2d::Color4F::RED, 1, cocos2d::Color4F::BLUE); screen_draw->setAnchorPoint(getAnchorPoint()); addChild(screen_draw, 3); } //////////////////////////////////// // SPAWN GAME OBJACTS - SPECIFIC getObjects(sf); if (hero != NULL) { setViewPointCenter(hero->getCameraView()); Hero_Gui *hg = new Hero_Gui(); hg->hero = hero; addChild(hg); } //////////////////////////////////// // MUSIC SETUP - SPECIFIC auto mapGroup = level->getMap()->getProperties(); string track_name = mapGroup["music_track"].asString(); auto audio = CocosDenshion::SimpleAudioEngine::getInstance(); if (track_name == "") { current_track = ""; audio->stopBackgroundMusic(); } else if (track_name != current_track) { current_track = track_name; audio->playBackgroundMusic(track_name.c_str(), true); } }