Browse Source

Fix Cain identify-all cancel navigation

pull/8502/head
morfidon 7 days ago
parent
commit
6619672a6a
  1. 96
      Source/stores.cpp

96
Source/stores.cpp

@ -897,11 +897,11 @@ void StoreNoRoom()
AddSText(0, 14, _("You do not have enough room in inventory"), UiFlags::ColorWhite | UiFlags::AlignCenter, true); AddSText(0, 14, _("You do not have enough room in inventory"), UiFlags::ColorWhite | UiFlags::AlignCenter, true);
} }
void StoreConfirm(Item &item) void StoreConfirm(Item &item)
{ {
StartStore(OldActiveStore); StartStore(OldActiveStore);
HasScrollbar = false; HasScrollbar = false;
ClearSText(5, 23); ClearSText(5, 23);
if (OldActiveStore == TalkID::StorytellerIdentifyAll) { if (OldActiveStore == TalkID::StorytellerIdentifyAll) {
AddSText(0, 10, _("Identify all items?"), UiFlags::ColorWhite | UiFlags::AlignCenter, false); AddSText(0, 10, _("Identify all items?"), UiFlags::ColorWhite | UiFlags::AlignCenter, false);
@ -949,14 +949,28 @@ void StoreConfirm(Item &item)
app_fatal(StrCat("Unknown store dialog ", static_cast<int>(OldActiveStore))); app_fatal(StrCat("Unknown store dialog ", static_cast<int>(OldActiveStore)));
} }
AddSText(0, 15, prompt, UiFlags::ColorWhite | UiFlags::AlignCenter, false); AddSText(0, 15, prompt, UiFlags::ColorWhite | UiFlags::AlignCenter, false);
AddSText(0, 18, _("Yes"), UiFlags::ColorWhite | UiFlags::AlignCenter, true); AddSText(0, 18, _("Yes"), UiFlags::ColorWhite | UiFlags::AlignCenter, true);
AddSText(0, 20, _("No"), UiFlags::ColorWhite | UiFlags::AlignCenter, true); AddSText(0, 20, _("No"), UiFlags::ColorWhite | UiFlags::AlignCenter, true);
} }
void StartBoy() void RestoreStoreFromOldState()
{ {
IsTextFullSize = false; if (OldActiveStore == TalkID::StorytellerIdentifyAll) {
HasScrollbar = false; StartStore(TalkID::Storyteller);
CurrentTextLine = 16;
ScrollPos = 0;
return;
}
StartStore(OldActiveStore);
CurrentTextLine = OldTextLine;
ScrollPos = OldScrollPos;
}
void StartBoy()
{
IsTextFullSize = false;
HasScrollbar = false;
AddSText(0, 2, _("Wirt the Peg-legged boy"), UiFlags::ColorWhitegold | UiFlags::AlignCenter, false); AddSText(0, 2, _("Wirt the Peg-legged boy"), UiFlags::ColorWhitegold | UiFlags::AlignCenter, false);
AddSLine(5); AddSLine(5);
if (!BoyItem.isEmpty()) { if (!BoyItem.isEmpty()) {
@ -1806,13 +1820,19 @@ void ConfirmEnter(Item &item)
} }
} }
StartStore(OldActiveStore); StartStore(OldActiveStore);
if (CurrentTextLine == BackButtonLine()) if (CurrentTextLine == BackButtonLine())
return; return;
CurrentTextLine = OldTextLine; if (OldActiveStore == TalkID::StorytellerIdentifyAll) {
ScrollPos = std::min(OldScrollPos, NumTextLines); CurrentTextLine = 16;
ScrollPos = 0;
return;
}
CurrentTextLine = OldTextLine;
ScrollPos = std::min(OldScrollPos, NumTextLines);
while (CurrentTextLine != -1 && !TextLine[CurrentTextLine].isSelectable()) { while (CurrentTextLine != -1 && !TextLine[CurrentTextLine].isSelectable()) {
CurrentTextLine--; CurrentTextLine--;
@ -2482,17 +2502,15 @@ void StoreESC()
case TalkID::StorytellerIdentifyShow: case TalkID::StorytellerIdentifyShow:
StartStore(TalkID::StorytellerIdentify); StartStore(TalkID::StorytellerIdentify);
break; break;
case TalkID::NoMoney: case TalkID::NoMoney:
case TalkID::NoRoom: case TalkID::NoRoom:
case TalkID::Confirm: case TalkID::Confirm:
StartStore(OldActiveStore); RestoreStoreFromOldState();
CurrentTextLine = OldTextLine; break;
ScrollPos = OldScrollPos; case TalkID::None:
break; break;
case TalkID::None: }
break; }
}
}
void StoreUp() void StoreUp()
{ {
@ -2649,15 +2667,13 @@ void StoreEnter()
case TalkID::WitchRecharge: case TalkID::WitchRecharge:
WitchRechargeEnter(); WitchRechargeEnter();
break; break;
case TalkID::NoMoney: case TalkID::NoMoney:
case TalkID::NoRoom: case TalkID::NoRoom:
StartStore(OldActiveStore); RestoreStoreFromOldState();
CurrentTextLine = OldTextLine; break;
ScrollPos = OldScrollPos; case TalkID::Confirm:
break; ConfirmEnter(TempItem);
case TalkID::Confirm: break;
ConfirmEnter(TempItem);
break;
case TalkID::Boy: case TalkID::Boy:
BoyEnter(); BoyEnter();
break; break;

Loading…
Cancel
Save