Choose button for personality of a talk node
This commit is contained in:
@@ -36,10 +36,7 @@
|
||||
<text top='184' left='77' width='24' height='14'>D</text>
|
||||
<text size='large' top='203' left='49' width='83' height='15'>Message 1:</text>
|
||||
<text size='large' top='309' left='49' width='80' height='14'>Message 2:</text>
|
||||
<text top='21' left='256' width='207' height='29'>
|
||||
If -1: Node is unused,
|
||||
-2: All personalities use this response.
|
||||
</text>
|
||||
<button name='choose-personality' type='regular' top='24' left='256'>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-regular' type='regular' top='112' left='414'>Choose</button>
|
||||
|
@@ -413,6 +413,10 @@ short choose_text(eStrType list, unsigned short cur_choice, cDialog* parent, std
|
||||
case STRT_SUMMON:
|
||||
strings = {"0 - no summon (weak)", "1 - weak summoning", "2 - summoning", "3 - major summoning", "4 - no summon (unique/powerful"};
|
||||
break;
|
||||
case STRT_TALK_NODE_PERSON:
|
||||
strings.push_back("All personalities use this response");
|
||||
strings.push_back("Node is unused");
|
||||
BOOST_FALLTHROUGH;
|
||||
case STRT_TALK:
|
||||
for(cTown* town : scenario.towns) {
|
||||
for(cPersonality who : town->talking.people) {
|
||||
|
@@ -11,7 +11,7 @@ enum eStrType {
|
||||
STRT_PICT, STRT_CMP, STRT_ACCUM, STRT_TRAP,
|
||||
STRT_ATTITUDE, STRT_STAIR, STRT_LIGHT, STRT_CONTEXT,
|
||||
STRT_SHOP, STRT_COST_ADJ, STRT_STAIR_MODE, STRT_TALK_NODE,
|
||||
STRT_STATUS, STRT_SPELL_PAT, STRT_SUMMON, STRT_TALK,
|
||||
STRT_STATUS, STRT_SPELL_PAT, STRT_SUMMON, STRT_TALK, STRT_TALK_NODE_PERSON,
|
||||
STRT_ENCHANT, STRT_DIR, STRT_QUEST, STRT_QUEST_STATUS,
|
||||
STRT_HEALING, STRT_TREASURE, STRT_MONST_STAT, STRT_POS_MODE,
|
||||
};
|
||||
|
@@ -1191,6 +1191,16 @@ static bool select_talk_node_type(cDialog& me, std::stack<node_ref_t>& talk_edit
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool select_talk_node_personality(cDialog& me, std::stack<node_ref_t>& talk_edit_stack) {
|
||||
save_talk_node(me, talk_edit_stack, false, false);
|
||||
short i = short(talk_edit_stack.top().second.personality);
|
||||
// 2 negative possible values, so +2 and -2 to convert from selectedIndex
|
||||
i = choose_text(STRT_TALK_NODE_PERSON, i + 2, &me, "Which personality(s)?") - 2;
|
||||
talk_edit_stack.top().second.personality = i;
|
||||
put_talk_node_in_dlog(me, talk_edit_stack);
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool select_talk_node_value(cDialog& me, std::string item_hit, const std::stack<node_ref_t>& talk_edit_stack) {
|
||||
const auto& talk_node = talk_edit_stack.top().second;
|
||||
if(item_hit == "chooseB") {
|
||||
@@ -1225,6 +1235,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["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-personality"].attachClickHandler(std::bind(select_talk_node_personality, _1, std::ref(talk_edit_stack)));
|
||||
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.attachFocusHandlers(check_talk_key, {"key1", "key2"});
|
||||
|
Reference in New Issue
Block a user