guided enchantment choices in talk node

This commit is contained in:
2025-01-23 18:08:56 -06:00
committed by Celtic Minstrel
parent b546da94fd
commit 06ac8569a7
3 changed files with 19 additions and 5 deletions

View File

@@ -42,4 +42,5 @@
</text> </text>
<button name='chooseB' type='regular' top='135' left='414'>Choose</button> <button name='chooseB' type='regular' top='135' left='414'>Choose</button>
<button name='chooseA' type='large' top='112' left='414'>Create/Edit</button> <button name='chooseA' type='large' top='112' left='414'>Create/Edit</button>
<button name='chooseA-regular' type='regular' top='112' left='414'>Choose</button>
</dialog> </dialog>

View File

@@ -118,7 +118,7 @@ Unused
Person identifying items says: Person identifying items says:
Unused Unused
Enchant Weapons Enchant Weapons
Type of enchantment (See docs. for list) Type of enchantment
Unused Unused
Unused Unused
Unused Unused

View File

@@ -1137,9 +1137,18 @@ static void put_talk_node_in_dlog(cDialog& me, std::stack<node_ref_t>& talk_edit
if(talk_node.type == eTalkNode::SHOP) if(talk_node.type == eTalkNode::SHOP)
me["chooseB"].show(); me["chooseB"].show();
else me["chooseB"].hide(); else me["chooseB"].hide();
if(talk_node.type != eTalkNode::CALL_TOWN_SPEC && talk_node.type != eTalkNode::CALL_SCEN_SPEC) me["chooseA-regular"].hide();
me["chooseA"].hide(); switch(talk_node.type){
else me["chooseA"].show(); case eTalkNode::ENCHANT:
me["chooseA-regular"].show();
break;
case eTalkNode::CALL_TOWN_SPEC: case eTalkNode::CALL_SCEN_SPEC:
me["chooseA"].show();
break;
default:
me["chooseA"].hide();
break;
}
if(talk_edit_stack.size() > 1) if(talk_edit_stack.size() > 1)
me["back"].show(); me["back"].show();
@@ -1195,6 +1204,10 @@ static bool select_talk_node_value(cDialog& me, std::string item_hit, const std:
spec = get_fresh_spec(mode); spec = get_fresh_spec(mode);
if(edit_spec_enc(spec,mode,&me)) if(edit_spec_enc(spec,mode,&me))
me["extra1"].setTextToNum(spec); me["extra1"].setTextToNum(spec);
} else if(item_hit == "chooseA-regular") {
int i = me["extra1"].getTextAsNum();
i = choose_text(STRT_ENCHANT,i,&me,"Which enchantment?");
me["extra1"].setTextToNum(i);
} }
return true; return true;
} }
@@ -1212,7 +1225,7 @@ short edit_talk_node(short which_node) {
talk_dlg["back"].attachClickHandler(std::bind(talk_node_back, _1, std::ref(talk_edit_stack))); talk_dlg["back"].attachClickHandler(std::bind(talk_node_back, _1, std::ref(talk_edit_stack)));
talk_dlg["new"].attachClickHandler(std::bind(talk_node_branch, _1, std::ref(talk_edit_stack))); talk_dlg["new"].attachClickHandler(std::bind(talk_node_branch, _1, std::ref(talk_edit_stack)));
talk_dlg["choose-type"].attachClickHandler(std::bind(select_talk_node_type, _1, std::ref(talk_edit_stack))); talk_dlg["choose-type"].attachClickHandler(std::bind(select_talk_node_type, _1, std::ref(talk_edit_stack)));
talk_dlg.attachClickHandlers(std::bind(select_talk_node_value, _1, _2, std::ref(talk_edit_stack)), {"chooseA", "chooseB"}); talk_dlg.attachClickHandlers(std::bind(select_talk_node_value, _1, _2, std::ref(talk_edit_stack)), {"chooseA","chooseA-regular","chooseB"});
talk_dlg["who"].attachFocusHandler(check_talk_personality); talk_dlg["who"].attachFocusHandler(check_talk_personality);
talk_dlg.attachFocusHandlers(check_talk_key, {"key1", "key2"}); talk_dlg.attachFocusHandlers(check_talk_key, {"key1", "key2"});
talk_dlg.attachFocusHandlers(std::bind(check_talk_xtra, _1, std::ref(talk_edit_stack), _2, _3), {"extra1", "extra2", "extra3", "extra4"}); talk_dlg.attachFocusHandlers(std::bind(check_talk_xtra, _1, std::ref(talk_edit_stack), _2, _3), {"extra1", "extra2", "extra3", "extra4"});