aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/prince/prince.cpp14
-rw-r--r--engines/prince/prince.h3
2 files changed, 16 insertions, 1 deletions
diff --git a/engines/prince/prince.cpp b/engines/prince/prince.cpp
index 37c7ce46f6..b91155344b 100644
--- a/engines/prince/prince.cpp
+++ b/engines/prince/prince.cpp
@@ -117,6 +117,7 @@ PrinceEngine::~PrinceEngine() {
delete _variaTxt;
delete[] _talkTxt;
delete[] _invTxt;
+ delete[] _dialogDat;
delete _graph;
delete _room;
@@ -255,6 +256,17 @@ void PrinceEngine::init() {
loadAllInv();
+ Common::SeekableReadStream *dialogDatStream = SearchMan.createReadStreamForMember("dialog.dat");
+ if (!dialogDatStream) {
+ error("Can't load dialogDatStream");
+ return;
+ }
+ _dialogDatSize = dialogDatStream->size();
+ _dialogDat = new byte[_dialogDatSize];
+ dialogDatStream->read(_dialogDat, _dialogDatSize);
+
+ delete dialogDatStream;
+
_optionsPic = new Graphics::Surface();
_optionsPic->create(_optionsWidth, _optionsHeight, Graphics::PixelFormat::createFormatCLUT8());
Common::Rect picRect(0, 0, _optionsWidth, _optionsHeight);
@@ -2369,7 +2381,7 @@ void PrinceEngine::doTalkAnim(int animNumber, int slot, AnimType animType) {
}
}
} else if (animType == kBackgroundAnimation) {
- if (animNumber < _backAnimList.size()) {
+ if ((uint)animNumber < _backAnimList.size()) {
int currAnim = _backAnimList[animNumber]._seq._currRelative;
Anim &backAnim = _backAnimList[animNumber].backAnims[currAnim];
if (backAnim._animData != nullptr) {
diff --git a/engines/prince/prince.h b/engines/prince/prince.h
index d59e62a60e..165cc68c99 100644
--- a/engines/prince/prince.h
+++ b/engines/prince/prince.h
@@ -398,6 +398,9 @@ public:
void inventoryRightMouseButton();
void dialogLeftMouseButton(int dialogSelected, const char *s);
+ uint32 _dialogDatSize;
+ byte *_dialogDat;
+
bool _dialogFlag;
int _dialogWidth;
int _dialogHeight;