//第一次初始化执行 void main_init_on_login(IrrlichtDevice* device) { guienv = device->getGUIEnvironment(); guiroot = guienv->addStaticText(L"", core::rect<s32>(0, 0, 10000, 10000)); the_device = device; the_smgr = device->getSceneManager(); the_driver = device->getVideoDriver(); porting::signal_handler_init(); porting::initializePaths(); // Create user data directory fs::CreateDir(porting::path_user); // Initialize default settings set_default_settings(g_settings); // Initialize sockets sockets_init(); atexit(sockets_cleanup); std::vector<std::string> filenames; filenames.push_back(porting::path_user + DIR_DELIM + "settings.conf"); #if RUN_IN_PLACE // Try also from a lower level (to aid having the same configuration // for many RUN_IN_PLACE installs) filenames.push_back(porting::path_user + DIR_DELIM + ".." + DIR_DELIM + ".." + DIR_DELIM + "settings.conf"); #endif for(u32 i=0; i<filenames.size(); i++) { bool r = g_settings->readConfigFile(filenames[i].c_str()); if(r) { g_settings_configpath = filenames[i]; break; } } // If no path found, use the first one (menu creates the file) if(g_settings_configpath == "") g_settings_configpath = filenames[0]; // Initialize random seed srand(time(0)); mysrand(time(0)); my_event_receiver.init(); g_timegetter = new IrrlichtTimeGetter(device); // Create game callback for menus g_gamecallback = new MainGameCallback(device); bool random_input = false;//g_settings->getBool("random_input"); // if(random_input) // input = new RandomInputHandler(); // else { touchscreengui = new TouchScreenGUI(device); input = touchscreengui; } scene::ISceneManager* smgr = device->getSceneManager(); //这里保存下原有的skin。从游戏内返回的时候需要重新加载 IGUISkin* skin = guienv->getSkin(); //设定一下一些控件的大小 skin->setSize(EGDS_SCROLLBAR_SIZE, device->getVideoDriver()->getScreenSize().Width * 0.06); skin->setSize(EGDS_CHECK_BOX_WIDTH, device->getVideoDriver()->getScreenSize().Width * 0.03); skin->setSize(EGDS_BUTTON_WIDTH, device->getVideoDriver()->getScreenSize().Width * 0.1); skin->setSize(EGDS_BUTTON_HEIGHT, device->getVideoDriver()->getScreenSize().Width * 0.03); skin->setSize(EGDS_WINDOW_BUTTON_WIDTH, device->getVideoDriver()->getScreenSize().Width * 0.05); font = skin->getFont(); if(font) skin->setFont(font); else errorstream<<"WARNING: Font file was not found." " Using default font."<<std::endl; // If font was not found, this will get us one // font = skin->getFont(); assert(font); //skin->setColor(gui::EGDC_BUTTON_TEXT, video::SColor(255,0,0,0)); skin->setColor(gui::EGDC_BUTTON_TEXT, video::SColor(255,255,255,255)); //skin->setColor(gui::EGDC_3D_HIGH_LIGHT, video::SColor(0,0,0,0)); //skin->setColor(gui::EGDC_3D_SHADOW, video::SColor(0,0,0,0)); // skin->setColor(gui::EGDC_3D_HIGH_LIGHT, video::SColor(255,0,0,0)); skin->setColor(gui::EGDC_3D_HIGH_LIGHT, video::SColor(255,52,55,64)); skin->setColor(gui::EGDC_3D_SHADOW, video::SColor(255,0,0,0)); // skin->setColor(gui::EGDC_HIGH_LIGHT, video::SColor(255,70,100,50)); skin->setColor(gui::EGDC_HIGH_LIGHT, video::SColor(255, 161 , 164 , 179)); skin->setColor(gui::EGDC_HIGH_LIGHT_TEXT, video::SColor(255,255,255,255)); #if (IRRLICHT_VERSION_MAJOR >= 1 && IRRLICHT_VERSION_MINOR >= 8) || IRRLICHT_VERSION_MAJOR >= 2 // Irrlicht 1.8 input colours skin->setColor(gui::EGDC_EDITABLE, video::SColor(255,128,128,128)); skin->setColor(gui::EGDC_FOCUSED_EDITABLE, video::SColor(255,96,134,49)); #endif if (!g_menucloudsmgr) g_menucloudsmgr = smgr->createNewSceneManager(); if (!g_menuclouds) g_menuclouds = new Clouds(g_menucloudsmgr->getRootSceneNode(), g_menucloudsmgr, -1, rand(), 100); g_menuclouds->update(v2f(0, 0), video::SColor(255,200,200,255)); scene::ICameraSceneNode* camera; camera = g_menucloudsmgr->addCameraSceneNode(0, v3f(0,0,0), v3f(0, 60, 100)); camera->setFarValue(10000); guienv->clear(); guiroot = guienv->addStaticText(L"", core::rect<s32>(0, 0, 10000, 10000)); }