diff --git a/src/scenario/special-town.cpp b/src/scenario/special-town.cpp index 9d2204369..ad8ec35d3 100644 --- a/src/scenario/special-town.cpp +++ b/src/scenario/special-town.cpp @@ -79,12 +79,10 @@ namespace { .ex2b(STRT_STAIR) .ex2c(STRT_STAIR_MODE) .jump(eSpecPicker::NONE); - // TODO implement preview node_properties_t S_LEVER = node_builder_t(eSpecType::TOWN_LEVER) .msg1(eSpecPicker::MSG_SEQUENCE) .pic() - .ex1b(eSpecPicker::NODE) - .no_preview(); + .ex1b(eSpecPicker::NODE); // TODO implement preview node_properties_t S_PORTAL = node_builder_t(eSpecType::TOWN_PORTAL) .msg1(eSpecPicker::MSG_SEQUENCE) diff --git a/src/scenedit/scen.keydlgs.cpp b/src/scenedit/scen.keydlgs.cpp index 5b7dc6c59..04ac895d8 100644 --- a/src/scenedit/scen.keydlgs.cpp +++ b/src/scenedit/scen.keydlgs.cpp @@ -872,6 +872,9 @@ static bool preview_spec_enc_dlog(cDialog& me, std::string, cSpecial& special, s extern cUniverse temp_universe(); cUniverse univ = temp_universe(); std::string title = ""; + std::array strs; + std::array buttons; + ePicType pic_type = PIC_SCEN; pic_num_t pic = scenario.intro_pic; @@ -880,6 +883,13 @@ static bool preview_spec_enc_dlog(cDialog& me, std::string, cSpecial& special, s cDialog::defaultBackground = cDialog::BG_DARK; switch(special.type){ + case eSpecType::TOWN_LEVER: + if(special.m1 < 0) break; + univ.get_strs(strs,cur_type, special.m1); + buttons = {9, 35, -1}; + if(custom_choice_dialog(strs, special.pic, ePicType(special.pictype), buttons, true, special.ex1c, special.ex2c, &univ) == 1) + break; + break; case eSpecType::TOWN_GENERIC_STAIR: if(special.ex2b < 8) cChoiceDlog(stairDlogs[max(0,special.ex2b)],{"climb","leave"}).show(); @@ -908,21 +918,19 @@ static bool preview_spec_enc_dlog(cDialog& me, std::string, cSpecial& special, s univ.get_str(title, cur_type, special.m1); custom_pic_dialog(title, special.ex1a, special.ex1b); break; - case eSpecType::STORY_DIALOG:{ - std::string str1; - univ.get_str(str1,cur_type,special.m1); - story_dialog(univ, str1, special.m2, special.m3, cur_type, special.pic, ePicType(special.pictype), special.ex1c, special.ex2c); - }break; - case eSpecType::ONCE_GIVE_ITEM_DIALOG:{ - std::array buttons = {9, 19, -1}; + case eSpecType::STORY_DIALOG: + univ.get_str(title,cur_type,special.m1); + story_dialog(univ, title, special.m2, special.m3, cur_type, special.pic, ePicType(special.pictype), special.ex1c, special.ex2c); + break; + case eSpecType::ONCE_GIVE_ITEM_DIALOG: + buttons = {9, 19, -1}; once_dialog(univ, special, cur_type, buttons, &me); - }break; - case eSpecType::ONCE_TRAP:{ - std::array buttons = {3, 2, -1}; - std::array strs; + break; + case eSpecType::ONCE_TRAP: + buttons = {3, 2, -1}; univ.get_strs(strs[0], strs[1], cur_type, special.m1, special.m2); custom_choice_dialog(strs,special.pic,ePicType(special.pictype),buttons, true, special.ex1c, special.ex2c, &univ); - }break; + break; case eSpecType::ONCE_DIALOG: once_dialog(univ, special, cur_type, &me); break; @@ -931,17 +939,14 @@ static bool preview_spec_enc_dlog(cDialog& me, std::string, cSpecial& special, s pic_type = ePicType(special.pictype); pic = special.pic; BOOST_FALLTHROUGH; - default:{ - std::string str1; - std::string str2; - univ.get_strs(str1, str2, cur_type, special.m1, special.m2); + default: + univ.get_strs(strs[0], strs[1], cur_type, special.m1, special.m2); + if(strs[0].empty() && strs[1].empty()) break; - if(str1.empty() && str2.empty()) break; - - cStrDlog dlog(str1, str2, title, pic, pic_type, &me); + cStrDlog dlog(strs[0], strs[1], title, pic, pic_type, &me); dlog->getControl("record").show(); dlog.show(); - }break; + break; } cDialog::defaultBackground = defaultBackground;