Browse Source

Clean up quests.cpp global naming

pull/2922/head
Anders Jenbo 5 years ago
parent
commit
464fd77238
  1. 121
      Source/quests.cpp

121
Source/quests.cpp

@ -69,21 +69,22 @@ namespace {
int WaterDone;
/** Indices of quests to display in quest log window. `fistfinishedEntry` are active quests the rest are completed */
quest_id qlist[MAXQUESTS];
/** Overall number of qlist entries */
int qlistCnt;
/** Indices of quests to display in quest log window. `FirstFinishedQuest` are active quests the rest are completed */
quest_id EncounteredQuests[MAXQUESTS];
/** Overall number of EncounteredQuests entries */
int EncounteredQuestCount;
/** First (nonselectable) finished quest in list */
int firstFinishedEntry;
int FirstFinishedQuest;
/** Currently selected quest list item */
int selectedEntry;
int SelectedQuest;
constexpr Rectangle panelInnerRect { { 32, 26 }, { 280, 300 } };
constexpr int lineHeight = 12;
constexpr int maxSpacing = lineHeight * 2;
int topY;
int lineSpacing;
int act2finSpacing;
constexpr Rectangle InnerPanel { { 32, 26 }, { 280, 300 } };
constexpr int LineHeight = 12;
constexpr int MaxSpacing = LineHeight * 2;
int ListYOffset;
int LineSpacing;
/** The number of pixels to move finished quest, to seperate them from the active ones */
int FinishedQuestOffset;
const char *const QuestTriggerNames[5] = {
N_(/* TRANSLATORS: Quest Map*/ "King Leoric's Tomb"),
@ -249,14 +250,14 @@ void DrawBlood(int x, int y)
int QuestLogMouseToEntry()
{
Rectangle innerArea = panelInnerRect;
Rectangle innerArea = InnerPanel;
innerArea.position += Displacement(LeftPanel.position.x, LeftPanel.position.y);
if (!innerArea.Contains(MousePosition) || (qlistCnt == 0))
if (!innerArea.Contains(MousePosition) || (EncounteredQuestCount == 0))
return -1;
int y = MousePosition.y - innerArea.position.y;
for (int i = 0; i < firstFinishedEntry; i++) {
if ((y >= topY + i * lineSpacing)
&& (y < topY + i * lineSpacing + lineHeight)) {
for (int i = 0; i < FirstFinishedQuest; i++) {
if ((y >= ListYOffset + i * LineSpacing)
&& (y < ListYOffset + i * LineSpacing + LineHeight)) {
return i;
}
}
@ -744,17 +745,17 @@ void DrawQuestLog(const Surface &out)
{
int l = QuestLogMouseToEntry();
if (l >= 0) {
selectedEntry = l;
SelectedQuest = l;
}
const auto x = panelInnerRect.position.x;
const auto x = InnerPanel.position.x;
CelDrawTo(out, GetPanelPosition(UiPanels::Quest, { 0, 351 }), *pQLogCel, 1);
int y = panelInnerRect.position.y + topY;
for (int i = 0; i < qlistCnt; i++) {
if (i == firstFinishedEntry) {
y += act2finSpacing;
int y = InnerPanel.position.y + ListYOffset;
for (int i = 0; i < EncounteredQuestCount; i++) {
if (i == FirstFinishedQuest) {
y += FinishedQuestOffset;
}
PrintQLString(out, x, y, _(QuestsData[qlist[i]]._qlstr), i == selectedEntry, i >= firstFinishedEntry);
y += lineSpacing;
PrintQLString(out, x, y, _(QuestsData[EncounteredQuests[i]]._qlstr), i == SelectedQuest, i >= FirstFinishedQuest);
y += LineSpacing;
}
}
@ -765,59 +766,59 @@ void StartQuestlog()
return QuestsData[a].questBookOrder < QuestsData[b].questBookOrder;
};
qlistCnt = 0;
EncounteredQuestCount = 0;
for (auto &quest : Quests) {
if (quest._qactive == QUEST_ACTIVE && quest._qlog) {
qlist[qlistCnt] = quest._qidx;
qlistCnt++;
EncounteredQuests[EncounteredQuestCount] = quest._qidx;
EncounteredQuestCount++;
}
}
firstFinishedEntry = qlistCnt;
FirstFinishedQuest = EncounteredQuestCount;
for (auto &quest : Quests) {
if (quest._qactive == QUEST_DONE || quest._qactive == QUEST_HIVE_DONE) {
qlist[qlistCnt] = quest._qidx;
qlistCnt++;
EncounteredQuests[EncounteredQuestCount] = quest._qidx;
EncounteredQuestCount++;
}
}
std::sort(&qlist[0], &qlist[firstFinishedEntry], sortQuestIdx);
std::sort(&qlist[firstFinishedEntry], &qlist[qlistCnt], sortQuestIdx);
std::sort(&EncounteredQuests[0], &EncounteredQuests[FirstFinishedQuest], sortQuestIdx);
std::sort(&EncounteredQuests[FirstFinishedQuest], &EncounteredQuests[EncounteredQuestCount], sortQuestIdx);
bool twoBlocks = firstFinishedEntry != 0 && firstFinishedEntry < qlistCnt;
bool twoBlocks = FirstFinishedQuest != 0 && FirstFinishedQuest < EncounteredQuestCount;
topY = 0;
act2finSpacing = !twoBlocks ? 0 : lineHeight / 2;
ListYOffset = 0;
FinishedQuestOffset = !twoBlocks ? 0 : LineHeight / 2;
int overallMinHeight = qlistCnt * lineHeight + act2finSpacing;
int space = panelInnerRect.size.height;
int overallMinHeight = EncounteredQuestCount * LineHeight + FinishedQuestOffset;
int space = InnerPanel.size.height;
if (qlistCnt > 0) {
if (EncounteredQuestCount > 0) {
int additionalSpace = space - overallMinHeight;
int addLineSpacing = additionalSpace / qlistCnt;
addLineSpacing = std::min(maxSpacing - lineHeight, addLineSpacing);
lineSpacing = lineHeight + addLineSpacing;
int addLineSpacing = additionalSpace / EncounteredQuestCount;
addLineSpacing = std::min(MaxSpacing - LineHeight, addLineSpacing);
LineSpacing = LineHeight + addLineSpacing;
if (twoBlocks) {
int additionalSepSpace = additionalSpace - (addLineSpacing * qlistCnt);
additionalSepSpace = std::min(lineHeight, additionalSepSpace);
act2finSpacing = std::max(4, additionalSepSpace);
int additionalSepSpace = additionalSpace - (addLineSpacing * EncounteredQuestCount);
additionalSepSpace = std::min(LineHeight, additionalSepSpace);
FinishedQuestOffset = std::max(4, additionalSepSpace);
}
int overallHeight = qlistCnt * lineSpacing + act2finSpacing;
topY += (space - overallHeight) / 2;
int overallHeight = EncounteredQuestCount * LineSpacing + FinishedQuestOffset;
ListYOffset += (space - overallHeight) / 2;
}
selectedEntry = firstFinishedEntry == 0 ? -1 : 0;
SelectedQuest = FirstFinishedQuest == 0 ? -1 : 0;
QuestLogIsOpen = true;
}
void QuestlogUp()
{
if (firstFinishedEntry == 0) {
selectedEntry = -1;
if (FirstFinishedQuest == 0) {
SelectedQuest = -1;
} else {
selectedEntry--;
if (selectedEntry < 0) {
selectedEntry = firstFinishedEntry - 1;
SelectedQuest--;
if (SelectedQuest < 0) {
SelectedQuest = FirstFinishedQuest - 1;
}
PlaySFX(IS_TITLEMOV);
}
@ -825,12 +826,12 @@ void QuestlogUp()
void QuestlogDown()
{
if (firstFinishedEntry == 0) {
selectedEntry = -1;
if (FirstFinishedQuest == 0) {
SelectedQuest = -1;
} else {
selectedEntry++;
if (selectedEntry == firstFinishedEntry) {
selectedEntry = 0;
SelectedQuest++;
if (SelectedQuest == FirstFinishedQuest) {
SelectedQuest = 0;
}
PlaySFX(IS_TITLEMOV);
}
@ -839,8 +840,8 @@ void QuestlogDown()
void QuestlogEnter()
{
PlaySFX(IS_TITLSLCT);
if (qlistCnt != 0 && selectedEntry >= 0 && selectedEntry < firstFinishedEntry)
InitQTextMsg(Quests[qlist[selectedEntry]]._qmsg);
if (EncounteredQuestCount != 0 && SelectedQuest >= 0 && SelectedQuest < FirstFinishedQuest)
InitQTextMsg(Quests[EncounteredQuests[SelectedQuest]]._qmsg);
QuestLogIsOpen = false;
}

Loading…
Cancel
Save