void Options::buildMenu() { MyOGL::OutlineFonts& fonts = win.extensions().outlineFonts(); menu.addItem(new PlayerNameItem(win, playerName)); MenuItem* last; //pointer to the last added item (only if it will have sub menu) last = menu.addItem(new MenuItem(fonts, langData["optionsMenu"]["cuboidSize"])); for(int size = Difficulty::SIZE_MIN; size <= Difficulty::SIZE_MAXX; ++size) last->addSubItem(new MenuItem(fonts, lexical_cast<string>(size))); last = menu.addItem(new MenuItem(fonts, langData["optionsMenu"]["cuboidDepth"])); for(int depth = Difficulty::DEPTH_MIN; depth <= Difficulty::DEPTH_MAX; depth += 2) last->addSubItem(new MenuItem(fonts, lexical_cast<std::string>(depth))); last = menu.addItem(new MenuItem(fonts, langData["optionsMenu"]["blocksSet"])); for(int bset = 0; bset < 3; ++bset) last->addSubItem(new MenuItem(fonts, Difficulty::blocksSetStr(bset))); menu.addItem(new VideoItem(win)); //sub items are created in constructor automatically menu.addItem(new LanguageItem(win.extensions(), user["language"], needRestart)); menu.addItem(new MenuItem(fonts, langData["optionsMenu"]["keyboard"])); last = menu.addItem(new MenuItem(fonts, langData["optionsMenu"]["sounds"])); last->addSubItem(new MenuItem(fonts, langData["sounds"]["on"])); last->addSubItem(new MenuItem(fonts, langData["sounds"]["off"])); }