From 716f7684e031a29edf126cae098f8df32181bf07 Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Fri, 17 Sep 2021 10:26:51 +0200 Subject: [PATCH] intra:: portals now can be edited --- intra.cpp | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/intra.cpp b/intra.cpp index 3d7b68f0..148397c2 100644 --- a/intra.cpp +++ b/intra.cpp @@ -293,6 +293,66 @@ EX void check_portal_movement() { } } +vector unconnected; + +void erase_unconnected(cellwalker cw) { + for(int i=0; i= 0 && point_direction < centerover->type; + + dialog::addItem(XLAT("move to the next space"), 'm'); + dialog::add_action([] { + int ic = (current + 1) % isize(data); + switch_to(ic); + }); + + bool in_list = false; for(cellwalker x: unconnected) if(x == cw) in_list = true; + + if(!valid) ; + else if(connections.count(cw)) { + dialog::addItem(XLAT("disconnect this portal"), 'd'); + dialog::add_action([cw] { + auto tcw = connections[cw].tcw; + unconnected.push_back(tcw); + connections.erase(cw); + connections.erase(tcw); + }); + } + else if(in_list) { + dialog::addItem(XLAT("remove %1 from the list", lalign(0, cw)), 'r'); + dialog::add_action([cw] { + erase_unconnected(cw); + }); + } + else { + dialog::addItem(XLAT("add to list"), 'a'); + dialog::add_action([cw] { unconnected.push_back(cw); }); + for(auto p: unconnected) { + dialog::addItem(XLAT("connect " + lalign(0, p)), '1'); + dialog::add_action([p, cw] { + connect_portal(cw, p); + erase_unconnected(p); + }); + } + } + + dialog::display(); + } + +auto hooks1 = + addHook(hooks_o_key, 90, [] (o_funcs& v) { + if(intra::in) v.push_back(named_dialog(XLAT("manage portals"), show_portals)); + }); + EX } } \ No newline at end of file