all[quests]: add a function to protect access from bad index..

This commit is contained in:
ALONSO Laurent
2021-10-20 16:47:45 +02:00
committed by Celtic Minstrel
parent 15db88e723
commit f997771dbe
8 changed files with 39 additions and 12 deletions

View File

@@ -642,11 +642,11 @@ static bool handle_rb_action(location the_point, bool option_hit) {
if(j == scenario.quests.size() - 1)
scenario.quests.pop_back();
else {
scenario.quests[j] = cQuest();
scenario.quests[j].name = "Unused Quest";
scenario.get_quest(j) = cQuest();
scenario.get_quest(j).name = "Unused Quest";
}
} else {
if(!edit_quest(j) && j == size_before && scenario.quests[j].name == "New Quest")
if(!edit_quest(j) && j == size_before && scenario.get_quest(j).name == "New Quest")
scenario.quests.pop_back();
}
start_quest_editing(size_before == scenario.quests.size());
@@ -2491,7 +2491,7 @@ void start_quest_editing(bool just_redo_text) {
std::string title;
if(i == scenario.quests.size())
title = "Create New Quest";
else title = scenario.quests[i].name;
else title = scenario.get_quest(i).name;
title = std::to_string(i) + " - " + title;
set_rb(i, RB_QUEST, i, title);
}

View File

@@ -2088,7 +2088,7 @@ static bool save_quest_from_dlog(cDialog& me, cQuest& quest, size_t which_quest,
quest.bank2 = me["bank2"].getTextAsNum();
} else quest.bank1 = quest.bank2 = -1;
scenario.quests[which_quest] = quest;
scenario.get_quest(which_quest) = quest;
if(!close) me.untoast();
return true;
}
@@ -2107,7 +2107,7 @@ static bool change_quest_dlog_page(cDialog& me, std::string dir, cQuest& quest,
which_quest = 0;
}
quest = scenario.quests[which_quest];
quest = scenario.get_quest(which_quest);
put_quest_in_dlog(me, quest, which_quest);
return true;
}
@@ -2118,7 +2118,7 @@ bool edit_quest(size_t which_quest) {
scenario.quests.resize(which_quest + 1);
scenario.quests[which_quest].name = "New Quest";
}
cQuest quest = scenario.quests[which_quest];
cQuest quest = scenario.get_quest(which_quest);
cDialog quest_dlg("edit-quest");
quest_dlg["cancel"].attachClickHandler(std::bind(&cDialog::toast, _1, false));

View File

@@ -199,7 +199,7 @@ void writeScenarioToXml(ticpp::Printer&& data, cScenario& scenario) {
data.CloseElement("special-item");
}
for(size_t i = 0; i < scenario.quests.size(); i++) {
cQuest& quest = scenario.quests[i];
cQuest const &quest = scenario.quests[i];
data.OpenElement("quest");
data.PushAttribute("start-with", boolstr(quest.flags / 10));
if(quest.deadline >= 0) {