aboutsummaryrefslogtreecommitdiff
path: root/engines/prince
diff options
context:
space:
mode:
Diffstat (limited to 'engines/prince')
-rw-r--r--engines/prince/animation.cpp2
-rw-r--r--engines/prince/animation.h4
-rw-r--r--engines/prince/archive.cpp10
-rw-r--r--engines/prince/archive.h2
-rw-r--r--engines/prince/common.h28
-rw-r--r--engines/prince/cursor.cpp26
-rw-r--r--engines/prince/cursor.h8
-rw-r--r--engines/prince/debugger.cpp4
-rw-r--r--engines/prince/debugger.h4
-rw-r--r--engines/prince/detection.cpp2
-rw-r--r--engines/prince/flags.cpp7
-rw-r--r--engines/prince/flags.h5
-rw-r--r--engines/prince/font.cpp29
-rw-r--r--engines/prince/font.h13
-rw-r--r--engines/prince/graphics.cpp22
-rw-r--r--engines/prince/graphics.h6
-rw-r--r--engines/prince/hero.cpp34
-rw-r--r--engines/prince/hero.h5
-rw-r--r--engines/prince/hero_set.cpp243
-rw-r--r--engines/prince/hero_set.h221
-rw-r--r--engines/prince/mhwanh.cpp27
-rw-r--r--engines/prince/mhwanh.h10
-rw-r--r--engines/prince/mob.cpp6
-rw-r--r--engines/prince/mob.h9
-rw-r--r--engines/prince/module.mk1
-rw-r--r--engines/prince/musNum.h2
-rw-r--r--engines/prince/object.cpp9
-rw-r--r--engines/prince/object.h3
-rw-r--r--engines/prince/option_text.h3
-rw-r--r--engines/prince/prince.cpp145
-rw-r--r--engines/prince/prince.h11
-rw-r--r--engines/prince/pscr.cpp17
-rw-r--r--engines/prince/pscr.h9
-rw-r--r--engines/prince/resource.h4
-rw-r--r--engines/prince/saveload.cpp2
-rw-r--r--engines/prince/script.cpp21
-rw-r--r--engines/prince/script.h12
-rw-r--r--engines/prince/sound.cpp6
-rw-r--r--engines/prince/sound.h2
-rw-r--r--engines/prince/variatxt.cpp14
-rw-r--r--engines/prince/variatxt.h6
41 files changed, 394 insertions, 600 deletions
diff --git a/engines/prince/animation.cpp b/engines/prince/animation.cpp
index 98d1e33620..db16adacbc 100644
--- a/engines/prince/animation.cpp
+++ b/engines/prince/animation.cpp
@@ -192,5 +192,3 @@ Graphics::Surface *Animation::getFrame(int frameIndex) {
}
} // End of namespace Prince
-
-/* vim: set tabstop=4 noexpandtab: */
diff --git a/engines/prince/animation.h b/engines/prince/animation.h
index 0634d7a937..87d21f5dbc 100644
--- a/engines/prince/animation.h
+++ b/engines/prince/animation.h
@@ -73,8 +73,6 @@ private:
int16 _baseY;
};
-}
+} // End of namespace Prince
#endif
-
-/* vim: set tabstop=4 noexpandtab: */
diff --git a/engines/prince/archive.cpp b/engines/prince/archive.cpp
index ac00261337..11be0b224a 100644
--- a/engines/prince/archive.cpp
+++ b/engines/prince/archive.cpp
@@ -60,7 +60,7 @@ bool PtcArchive::open(const Common::String &filename) {
_stream->seek(fileTableOffset);
- byte *fileTable = new byte[fileTableSize];
+ byte *fileTable = (byte *)malloc(fileTableSize);
byte *fileTableEnd = fileTable + fileTableSize;
_stream->read(fileTable, fileTableSize);
decrypt(fileTable, fileTableSize);
@@ -73,8 +73,8 @@ bool PtcArchive::open(const Common::String &filename) {
//debug("%12s %8X %d", name.c_str(), item._offset, item._size);
_items[name] = item;
}
-
- delete[] fileTable;
+
+ free(fileTable);
return true;
}
@@ -141,6 +141,4 @@ Common::SeekableReadStream *PtcArchive::createReadStreamForMember(const Common::
return new Common::MemoryReadStream(buffer, size, DisposeAfterUse::YES);
}
-}
-
-/* vim: set tabstop=4 noexpandtab: */
+} // End of namespace Prince
diff --git a/engines/prince/archive.h b/engines/prince/archive.h
index 29d3d58560..e211036ed6 100644
--- a/engines/prince/archive.h
+++ b/engines/prince/archive.h
@@ -59,5 +59,3 @@ private:
} // End of namespace Prince
#endif
-
-/* vim: set tabstop=4 noexpandtab: */
diff --git a/engines/prince/common.h b/engines/prince/common.h
index 808b6900ec..c846f9a751 100644
--- a/engines/prince/common.h
+++ b/engines/prince/common.h
@@ -26,22 +26,20 @@
namespace Prince {
enum Direction {
- kDirLD = 0,
- kDirL = 1,
- kDirLU = 2,
- kDirRD = 3,
- kDirR = 4,
- kDirRU = 5,
- kDirUL = 6,
- kDirU = 7,
- kDirUR = 8,
- kDirDL = 9,
- kDirD = 10,
- kDirDR = 11
+ kDirLD,
+ kDirL,
+ kDirLU,
+ kDirRD,
+ kDirR,
+ kDirRU,
+ kDirUL,
+ kDirU,
+ kDirUR,
+ kDirDL,
+ kDirD,
+ kDirDR
};
-}
+} // End of namespace Prince
#endif
-
-/* vim: set tabstop=4 noexpandtab: */
diff --git a/engines/prince/cursor.cpp b/engines/prince/cursor.cpp
index 865ae99cad..c09fe43bfc 100644
--- a/engines/prince/cursor.cpp
+++ b/engines/prince/cursor.cpp
@@ -23,32 +23,32 @@
#include "prince/cursor.h"
#include "common/debug.h"
-#include "common/stream.h"
namespace Prince {
-Cursor::Cursor() : _surface(NULL) {
+Cursor::Cursor() : _surface(nullptr) {
}
Cursor::~Cursor() {
- _surface->free();
- delete _surface;
- _surface = NULL;
+ if (_surface != nullptr) {
+ _surface->free();
+ delete _surface;
+ _surface = nullptr;
+ }
}
bool Cursor::loadFromStream(Common::SeekableReadStream &stream) {
stream.skip(4);
- uint16 w = stream.readUint16LE();
- uint16 h = stream.readUint16LE();
+ uint16 width = stream.readUint16LE();
+ uint16 heigth = stream.readUint16LE();
_surface = new Graphics::Surface();
- _surface->create(w, h, Graphics::PixelFormat::createFormatCLUT8());
+ _surface->create(width, heigth, Graphics::PixelFormat::createFormatCLUT8());
- for (int ih = 0; ih < h; ++ih)
- stream.read(_surface->getBasePtr(0, ih), w);
+ for (int h = 0; h < heigth; h++) {
+ stream.read(_surface->getBasePtr(0, h), width);
+ }
return true;
}
-}
-
-/* vim: set tabstop=4 noexpandtab: */
+} // End of namespace Prince
diff --git a/engines/prince/cursor.h b/engines/prince/cursor.h
index 70516519e6..683a158ba8 100644
--- a/engines/prince/cursor.h
+++ b/engines/prince/cursor.h
@@ -25,9 +25,7 @@
#include "graphics/surface.h"
-namespace Common {
- class SeekableReadStream;
-}
+#include "common/stream.h"
namespace Prince {
@@ -43,8 +41,6 @@ private:
Graphics::Surface *_surface;
};
-}
+} // End of namespace Prince
#endif
-
-/* vim: set tabstop=4 expandtab!: */
diff --git a/engines/prince/debugger.cpp b/engines/prince/debugger.cpp
index cf74b7b423..481ea695f5 100644
--- a/engines/prince/debugger.cpp
+++ b/engines/prince/debugger.cpp
@@ -171,6 +171,4 @@ bool Debugger::Cmd_AddItem(int argc, const char **argv) {
return true;
}
-}
-
-/* vim: set tabstop=4 noexpandtab: */
+} // End of namespace Prince
diff --git a/engines/prince/debugger.h b/engines/prince/debugger.h
index 10c82d5282..a4467e63d5 100644
--- a/engines/prince/debugger.h
+++ b/engines/prince/debugger.h
@@ -53,8 +53,6 @@ private:
InterpreterFlags *_flags;
};
-}
+} // End of namespace Prince
#endif
-
-/* vim: set tabstop=4 noexpandtab: */
diff --git a/engines/prince/detection.cpp b/engines/prince/detection.cpp
index 285d7d1ce3..3f83009de8 100644
--- a/engines/prince/detection.cpp
+++ b/engines/prince/detection.cpp
@@ -71,5 +71,3 @@ REGISTER_PLUGIN_DYNAMIC(PRINCE, PLUGIN_TYPE_ENGINE, Prince::PrinceMetaEngine);
#else
REGISTER_PLUGIN_STATIC(PRINCE, PLUGIN_TYPE_ENGINE, Prince::PrinceMetaEngine);
#endif
-
-/* vim: set tabstop=4 noexpandtab: */
diff --git a/engines/prince/flags.cpp b/engines/prince/flags.cpp
index 18d9e212c1..3b0d1d95dc 100644
--- a/engines/prince/flags.cpp
+++ b/engines/prince/flags.cpp
@@ -24,8 +24,7 @@
namespace Prince {
-const char *Flags::getFlagName(uint16 flagId)
-{
+const char *Flags::getFlagName(uint16 flagId) {
switch (flagId) {
default: return "unknown_flag";
case FLAGA1: return "FLAGA1";
@@ -401,6 +400,4 @@ const char *Flags::getFlagName(uint16 flagId)
}
}
-}
-
-/* vim: set tabstop=4 noexpandtab: */
+} // End of namespace Prince
diff --git a/engines/prince/flags.h b/engines/prince/flags.h
index 5af6bffa00..efa97eb5ed 100644
--- a/engines/prince/flags.h
+++ b/engines/prince/flags.h
@@ -410,7 +410,6 @@ struct Flags {
};
};
-}
-#endif
-/* vim: set tabstop=4 noexpandtab: */
+} // End of namespace Prince
+#endif
diff --git a/engines/prince/font.cpp b/engines/prince/font.cpp
index 40b6d014e6..0ac61f29be 100644
--- a/engines/prince/font.cpp
+++ b/engines/prince/font.cpp
@@ -23,24 +23,25 @@
#include "common/archive.h"
#include "common/debug.h"
#include "common/stream.h"
-#include "common/str.h"
-
-#include "graphics/surface.h"
#include "prince/font.h"
namespace Prince {
-Font::Font() {
+Font::Font() : _fontData(nullptr) {
}
Font::~Font() {
- delete [] _fontData;
+ if (_fontData != nullptr) {
+ free(_fontData);
+ _fontData = nullptr;
+ }
}
bool Font::loadFromStream(Common::SeekableReadStream &stream) {
stream.seek(0);
- _fontData = new byte[stream.size()];
+ uint32 dataSize = stream.size();
+ _fontData = (byte *)malloc(dataSize);
stream.read(_fontData, stream.size());
return true;
}
@@ -55,11 +56,11 @@ int Font::getMaxCharWidth() const {
Font::ChrData Font::getChrData(byte chr) const {
chr -= 32;
- uint16 chrOffset = 4*chr+6;
+ uint16 chrOffset = 4 * chr + 6;
ChrData chrData;
- chrData._width = _fontData[chrOffset+2];
- chrData._height = _fontData[chrOffset+3];
+ chrData._width = _fontData[chrOffset + 2];
+ chrData._height = _fontData[chrOffset + 3];
chrData._pixels = _fontData + READ_LE_UINT16(_fontData + chrOffset);
return chrData;
@@ -72,20 +73,18 @@ int Font::getCharWidth(uint32 chr) const {
void Font::drawChar(Graphics::Surface *dst, uint32 chr, int posX, int posY, uint32 color) const {
const ChrData chrData = getChrData(chr);
- for (int y = 0; y < chrData._height; ++y) {
- for (int x = 0; x < chrData._width; ++x) {
+ for (int y = 0; y < chrData._height; y++) {
+ for (int x = 0; x < chrData._width; x++) {
byte d = chrData._pixels[x + (chrData._width * y)];
if (d == 0) d = 255;
else if (d == 1) d = 0;
else if (d == 2) d = color;
else if (d == 3) d = 0;
if (d != 255) {
- *(byte*)dst->getBasePtr(posX + x, posY + y) = d;
+ *(byte *)dst->getBasePtr(posX + x, posY + y) = d;
}
}
}
}
-}
-
-/* vim: set tabstop=4 expandtab!: */
+} // End of namespace Prince
diff --git a/engines/prince/font.h b/engines/prince/font.h
index bf9c09d0e9..001e9f7668 100644
--- a/engines/prince/font.h
+++ b/engines/prince/font.h
@@ -23,14 +23,9 @@
#define PRINCE_FONT_H
#include "graphics/font.h"
+#include "graphics/surface.h"
-namespace Graphics {
- struct Surface;
-}
-
-namespace Common {
- class String;
-}
+#include "common/str.h"
namespace Prince {
@@ -63,8 +58,6 @@ private:
byte *_fontData;
};
-}
+} // End of namespace Prince
#endif
-
-/* vim: set tabstop=4 expandtab!: */
diff --git a/engines/prince/graphics.cpp b/engines/prince/graphics.cpp
index 58ab7b0f21..f70002c28b 100644
--- a/engines/prince/graphics.cpp
+++ b/engines/prince/graphics.cpp
@@ -21,9 +21,7 @@
*/
#include "prince/graphics.h"
-
#include "prince/prince.h"
-
#include "prince/mhwanh.h"
#include "graphics/palette.h"
@@ -32,28 +30,34 @@
namespace Prince {
-GraphicsMan::GraphicsMan(PrinceEngine *vm)
- : _vm(vm), _changed(false) {
+GraphicsMan::GraphicsMan(PrinceEngine *vm) : _vm(vm), _changed(false) {
initGraphics(640, 480, true);
+
_frontScreen = new Graphics::Surface();
_frontScreen->create(640, 480, Graphics::PixelFormat::createFormatCLUT8());
+
_screenForInventory = new Graphics::Surface();
_screenForInventory->create(640, 480, Graphics::PixelFormat::createFormatCLUT8());
+
_mapScreen = new Graphics::Surface();
_mapScreen->create(640, 480, Graphics::PixelFormat::createFormatCLUT8());
- _shadowTable70 = new byte[256];
- _shadowTable50 = new byte[256];
+
+ _shadowTable70 = (byte *)malloc(256);
+ _shadowTable50 = (byte *)malloc(256);
}
GraphicsMan::~GraphicsMan() {
_frontScreen->free();
delete _frontScreen;
+
_screenForInventory->free();
delete _screenForInventory;
+
_mapScreen->free();
delete _mapScreen;
- delete[] _shadowTable70;
- delete[] _shadowTable50;
+
+ free(_shadowTable70);
+ free(_shadowTable50);
}
void GraphicsMan::update(Graphics::Surface *screen) {
@@ -382,5 +386,3 @@ void GraphicsMan::makeShadowTable(int brightness, byte *shadowPalette) {
}
} // End of namespace Prince
-
-/* vim: set tabstop=4 noexpandtab: */
diff --git a/engines/prince/graphics.h b/engines/prince/graphics.h
index 57e28fdae5..95c10ec790 100644
--- a/engines/prince/graphics.h
+++ b/engines/prince/graphics.h
@@ -28,8 +28,8 @@
namespace Prince {
class PrinceEngine;
-struct DrawNode;
class MhwanhDecoder;
+struct DrawNode;
class GraphicsMan {
public:
@@ -68,12 +68,10 @@ public:
void drawPixel(Graphics::Surface *screen, int32 posX, int32 posY);
private:
-
PrinceEngine *_vm;
-
bool _changed;
};
-}
+} // End of namespace Prince
#endif
diff --git a/engines/prince/hero.cpp b/engines/prince/hero.cpp
index 79a69da471..685964c787 100644
--- a/engines/prince/hero.cpp
+++ b/engines/prince/hero.cpp
@@ -19,6 +19,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
+
#include "common/debug.h"
#include "common/random.h"
@@ -33,21 +34,24 @@
namespace Prince {
-Hero::Hero(PrinceEngine *vm, GraphicsMan *graph) : _vm(vm), _graph(graph)
- , _number(0), _visible(false), _state(kHeroStateStay), _middleX(0), _middleY(0)
- , _boreNum(1), _currHeight(0), _moveDelay(0), _shadMinus(0), _moveSetType(0), _zoomedHeroSurface(nullptr)
- , _lastDirection(kHeroDirDown), _destDirection(kHeroDirDown), _talkTime(0), _boredomTime(0), _phase(0)
- , _specAnim(nullptr), _drawX(0), _drawY(0), _drawZ(0), _zoomFactor(0), _scaleValue(0)
- , _shadZoomFactor(0), _shadScaleValue(0), _shadLineLen(0), _shadDrawX(0), _shadDrawY(0)
- , _frameXSize(0), _frameYSize(0), _scaledFrameXSize(0), _scaledFrameYSize(0), _color(0)
- , _coords(nullptr), _dirTab(nullptr), _currCoords(nullptr), _currDirTab(nullptr), _step(0)
- , _maxBoredom(200), _turnAnim(0), _leftRightMainDir(0), _upDownMainDir(0), _animSetNr(0)
+Hero::Hero(PrinceEngine *vm, GraphicsMan *graph) : _vm(vm), _graph(graph),
+ _number(0), _visible(false), _state(kHeroStateStay), _middleX(0), _middleY(0),
+ _boreNum(1), _currHeight(0), _moveDelay(0), _shadMinus(0), _moveSetType(0), _zoomedHeroSurface(nullptr),
+ _lastDirection(kHeroDirDown), _destDirection(kHeroDirDown), _talkTime(0), _boredomTime(0), _phase(0),
+ _specAnim(nullptr), _drawX(0), _drawY(0), _drawZ(0), _zoomFactor(0), _scaleValue(0),
+ _shadZoomFactor(0), _shadScaleValue(0), _shadLineLen(0), _shadDrawX(0), _shadDrawY(0),
+ _frameXSize(0), _frameYSize(0), _scaledFrameXSize(0), _scaledFrameYSize(0), _color(0),
+ _coords(nullptr), _dirTab(nullptr), _currCoords(nullptr), _currDirTab(nullptr), _step(0),
+ _maxBoredom(200), _turnAnim(0), _leftRightMainDir(0), _upDownMainDir(0), _animSetNr(0)
{
- _shadowLine = new byte[kShadowLineArraySize];
+ _shadowLine = (byte *)malloc(kShadowLineArraySize);
}
Hero::~Hero() {
- delete[] _shadowLine;
+ if (_shadowLine != nullptr) {
+ free(_shadowLine);
+ _shadowLine = nullptr;
+ }
freeHeroAnim();
freeOldMove();
freeZoomedSurface();
@@ -141,7 +145,7 @@ Graphics::Surface *Hero::zoomSprite(Graphics::Surface *heroFrame) {
for (int i = 0; i < _scaledFrameYSize; i++) {
// linear_loop:
- while(1) {
+ while (1) {
sprZoomY -= 100;
if (sprZoomY >= 0 || _scaleValue == 10000) {
// all_r_y
@@ -477,7 +481,7 @@ void Hero::showHeroShadow(Graphics::Surface *heroFrame) {
}
}
//krap2
- shadWallDestAddr -= kScreenWidth;
+ shadWallDestAddr -= _vm->kNormalWidth;
shadWallBitAddr -= _vm->kMaxPicWidth / 8;
shadWallPosY--;
}
@@ -1027,6 +1031,4 @@ void Hero::freeZoomedSurface() {
}
}
-}
-
-/* vim: set tabstop=4 noexpandtab: */
+} // End of namespace Prince
diff --git a/engines/prince/hero.h b/engines/prince/hero.h
index 7c30fda559..00c47e1dc4 100644
--- a/engines/prince/hero.h
+++ b/engines/prince/hero.h
@@ -41,7 +41,6 @@ class Hero {
public:
static const uint32 kMoveSetSize = 26;
static const int16 kShadowLineArraySize = 2 * 1280 * 4;
- static const int16 kScreenWidth = 640;
static const int16 kStepLeftRight = 8;
static const int16 kStepUpDown = 4;
@@ -189,8 +188,6 @@ public:
uint32 _shadMinus;
};
-}
+} // End of namespace Prince
#endif
-
-/* vim: set tabstop=4 noexpandtab: */
diff --git a/engines/prince/hero_set.cpp b/engines/prince/hero_set.cpp
deleted file mode 100644
index 1d235a567a..0000000000
--- a/engines/prince/hero_set.cpp
+++ /dev/null
@@ -1,243 +0,0 @@
-
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "prince/hero_set.h"
-#include "common/scummsys.h"
-
-namespace Prince {
-
-static HeroSetAnimNames heroSet5 = {
- "SL_DIAB.ANI",
- "SR_DIAB.ANI",
- "SU_DIAB.ANI",
- "SD_DIAB.ANI",
- NULL,
- NULL,
- "MU_DIAB.ANI",
- "MD_DIAB.ANI",
- "TL_DIAB.ANI",
- "TR_DIAB.ANI",
- "TU_DIAB.ANI",
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL
-};
-
-static HeroSetAnimNames heroSet1 = {
- "SL_HERO1.ANI",
- "SR_HERO1.ANI",
- "SU_HERO1.ANI",
- "SD_HERO1.ANI",
- "ML_HERO1.ANI",
- "MR_HERO1.ANI",
- "MU_HERO1.ANI",
- "MD_HERO1.ANI",
- "TL_HERO1.ANI",
- "TR_HERO1.ANI",
- "TU_HERO1.ANI",
- "TD_HERO1.ANI",
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- "KSI_KURZ.ANI",
- "KS_WLOSY.ANI"
-};
-
-static HeroSetAnimNames heroSet2 = {
- "SL_HERO2.ANI",
- "SR_HERO2.ANI",
- "SU_HERO2.ANI",
- "SD_HERO2.ANI",
- "ML_HERO2.ANI",
- "MR_HERO2.ANI",
- "MU_HERO2.ANI",
- "MD_HERO2.ANI",
- "TL_HERO2.ANI",
- "TR_HERO2.ANI",
- "TU_HERO2.ANI",
- "TD_HERO2.ANI",
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- "KSI_KU_S.ANI",
- "KS_WLO_S.ANI"
-};
-
-static HeroSetAnimNames heroSet3 = {
- "SL_BEAR.ANI",
- "SR_BEAR.ANI",
- "SU_BEAR.ANI",
- "SD_BEAR.ANI",
- "NIED-LEW.ANI",
- "NIED-PRW.ANI",
- "NIED-TYL.ANI",
- "NIED-PRZ.ANI",
- "SL_BEAR.ANI",
- "SR_BEAR.ANI",
- "SU_BEAR.ANI",
- "SD_BEAR.ANI",
- "N_LW-TYL.ANI",
- "N_LW-PRZ.ANI",
- "N_LW-PR.ANI",
- "N_PR-TYL.ANI",
- "N_PR-PRZ.ANI",
- "N_PR-LW.ANI",
- "N_TYL-LW.ANI",
- "N_TYL-PR.ANI",
- "N_TL-PRZ.ANI",
- "N_PRZ-LW.ANI",
- "N_PRZ-PR.ANI",
- "N_PRZ-TL.ANI",
- NULL,
- NULL,
-};
-
-static HeroSetAnimNames shanSet1 = {
- "SL_SHAN.ANI",
- "SR_SHAN.ANI",
- "SU_SHAN.ANI",
- "SD_SHAN.ANI",
- "ML_SHAN.ANI",
- "MR_SHAN.ANI",
- "MU_SHAN.ANI",
- "MD_SHAN.ANI",
- "TL_SHAN.ANI",
- "TR_SHAN.ANI",
- "TU_SHAN.ANI",
- "TD_SHAN.ANI",
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- "B1_SHAN.ANI",
- "B2_SHAN.ANI",
-};
-
-static HeroSetAnimNames shanSet2 = {
- "SL_SHAN2.ANI",
- "SR_SHAN2.ANI",
- "SU_SHAN.ANI",
- "SD_SHAN2.ANI",
- "ML_SHAN2.ANI",
- "MR_SHAN2.ANI",
- "MU_SHAN.ANI",
- "MD_SHAN2.ANI",
- "TL_SHAN2.ANI",
- "TR_SHAN2.ANI",
- "TU_SHAN.ANI",
- "TD_SHAN2.ANI",
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- "B1_SHAN2.ANI",
- "B2_SHAN2.ANI"
-};
-
-static HeroSetAnimNames arivSet1 = {
- "SL_ARIV.ANI",
- "SR_ARIV.ANI",
- "SU_ARIV.ANI",
- "SD_ARIV.ANI",
- "ML_ARIV.ANI",
- "MR_ARIV.ANI",
- "MU_ARIV.ANI",
- "MD_ARIV.ANI",
- "TL_ARIV.ANI",
- "TR_ARIV.ANI",
- "TU_ARIV.ANI",
- "TD_ARIV.ANI",
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL
-};
-
-const HeroSetAnimNames *heroSetTable[7] = {
- &heroSet1,
- &heroSet2,
- &heroSet3,
- &shanSet1,
- &arivSet1,
- &heroSet5,
- &shanSet2,
-};
-
-}
-/* vim: set tabstop=4 noexpandtab: */
diff --git a/engines/prince/hero_set.h b/engines/prince/hero_set.h
index e0c7887b94..1674f67503 100644
--- a/engines/prince/hero_set.h
+++ b/engines/prince/hero_set.h
@@ -20,12 +20,225 @@
*
*/
+#include "common/scummsys.h"
+
namespace Prince {
+const int heroSetBack[7] = { 0, 0, 10, 0, 6, 0, 0 };
+
typedef const char *HeroSetAnimNames[26];
-const int heroSetBack[7] = { 0, 0, 10, 0, 6, 0, 0 };
-extern const HeroSetAnimNames *heroSetTable[7];
+static HeroSetAnimNames heroSet5 = {
+ "SL_DIAB.ANI",
+ "SR_DIAB.ANI",
+ "SU_DIAB.ANI",
+ "SD_DIAB.ANI",
+ NULL,
+ NULL,
+ "MU_DIAB.ANI",
+ "MD_DIAB.ANI",
+ "TL_DIAB.ANI",
+ "TR_DIAB.ANI",
+ "TU_DIAB.ANI",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static HeroSetAnimNames heroSet1 = {
+ "SL_HERO1.ANI",
+ "SR_HERO1.ANI",
+ "SU_HERO1.ANI",
+ "SD_HERO1.ANI",
+ "ML_HERO1.ANI",
+ "MR_HERO1.ANI",
+ "MU_HERO1.ANI",
+ "MD_HERO1.ANI",
+ "TL_HERO1.ANI",
+ "TR_HERO1.ANI",
+ "TU_HERO1.ANI",
+ "TD_HERO1.ANI",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "KSI_KURZ.ANI",
+ "KS_WLOSY.ANI"
+};
+
+static HeroSetAnimNames heroSet2 = {
+ "SL_HERO2.ANI",
+ "SR_HERO2.ANI",
+ "SU_HERO2.ANI",
+ "SD_HERO2.ANI",
+ "ML_HERO2.ANI",
+ "MR_HERO2.ANI",
+ "MU_HERO2.ANI",
+ "MD_HERO2.ANI",
+ "TL_HERO2.ANI",
+ "TR_HERO2.ANI",
+ "TU_HERO2.ANI",
+ "TD_HERO2.ANI",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "KSI_KU_S.ANI",
+ "KS_WLO_S.ANI"
+};
+
+static HeroSetAnimNames heroSet3 = {
+ "SL_BEAR.ANI",
+ "SR_BEAR.ANI",
+ "SU_BEAR.ANI",
+ "SD_BEAR.ANI",
+ "NIED-LEW.ANI",
+ "NIED-PRW.ANI",
+ "NIED-TYL.ANI",
+ "NIED-PRZ.ANI",
+ "SL_BEAR.ANI",
+ "SR_BEAR.ANI",
+ "SU_BEAR.ANI",
+ "SD_BEAR.ANI",
+ "N_LW-TYL.ANI",
+ "N_LW-PRZ.ANI",
+ "N_LW-PR.ANI",
+ "N_PR-TYL.ANI",
+ "N_PR-PRZ.ANI",
+ "N_PR-LW.ANI",
+ "N_TYL-LW.ANI",
+ "N_TYL-PR.ANI",
+ "N_TL-PRZ.ANI",
+ "N_PRZ-LW.ANI",
+ "N_PRZ-PR.ANI",
+ "N_PRZ-TL.ANI",
+ NULL,
+ NULL,
+};
+
+static HeroSetAnimNames shanSet1 = {
+ "SL_SHAN.ANI",
+ "SR_SHAN.ANI",
+ "SU_SHAN.ANI",
+ "SD_SHAN.ANI",
+ "ML_SHAN.ANI",
+ "MR_SHAN.ANI",
+ "MU_SHAN.ANI",
+ "MD_SHAN.ANI",
+ "TL_SHAN.ANI",
+ "TR_SHAN.ANI",
+ "TU_SHAN.ANI",
+ "TD_SHAN.ANI",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "B1_SHAN.ANI",
+ "B2_SHAN.ANI",
+};
+
+static HeroSetAnimNames shanSet2 = {
+ "SL_SHAN2.ANI",
+ "SR_SHAN2.ANI",
+ "SU_SHAN.ANI",
+ "SD_SHAN2.ANI",
+ "ML_SHAN2.ANI",
+ "MR_SHAN2.ANI",
+ "MU_SHAN.ANI",
+ "MD_SHAN2.ANI",
+ "TL_SHAN2.ANI",
+ "TR_SHAN2.ANI",
+ "TU_SHAN.ANI",
+ "TD_SHAN2.ANI",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "B1_SHAN2.ANI",
+ "B2_SHAN2.ANI"
+};
+
+static HeroSetAnimNames arivSet1 = {
+ "SL_ARIV.ANI",
+ "SR_ARIV.ANI",
+ "SU_ARIV.ANI",
+ "SD_ARIV.ANI",
+ "ML_ARIV.ANI",
+ "MR_ARIV.ANI",
+ "MU_ARIV.ANI",
+ "MD_ARIV.ANI",
+ "TL_ARIV.ANI",
+ "TR_ARIV.ANI",
+ "TU_ARIV.ANI",
+ "TD_ARIV.ANI",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+const HeroSetAnimNames *heroSetTable[7] = {
+ &heroSet1,
+ &heroSet2,
+ &heroSet3,
+ &shanSet1,
+ &arivSet1,
+ &heroSet5,
+ &shanSet2,
+};
-}
-/* vim: set tabstop=4 noexpandtab: */
+} // End of namespace Prince
diff --git a/engines/prince/mhwanh.cpp b/engines/prince/mhwanh.cpp
index 3bd034e4a7..ef94ef71f9 100644
--- a/engines/prince/mhwanh.cpp
+++ b/engines/prince/mhwanh.cpp
@@ -28,8 +28,7 @@
namespace Prince {
-MhwanhDecoder::MhwanhDecoder()
- : _surface(NULL), _palette(0), _paletteColorCount(0) {
+MhwanhDecoder::MhwanhDecoder() : _surface(nullptr), _palette(nullptr) {
}
MhwanhDecoder::~MhwanhDecoder() {
@@ -37,38 +36,36 @@ MhwanhDecoder::~MhwanhDecoder() {
}
void MhwanhDecoder::destroy() {
- if (_surface) {
+ if (_surface != nullptr) {
_surface->free();
delete _surface;
- _surface = 0;
+ _surface = nullptr;
+ }
+ if (_palette != nullptr) {
+ free(_palette);
+ _palette = nullptr;
}
-
- delete [] _palette; _palette = 0;
- _paletteColorCount = 0;
}
bool MhwanhDecoder::loadStream(Common::SeekableReadStream &stream) {
destroy();
- _paletteColorCount = 256;
stream.seek(0);
stream.skip(0x20);
// Read the palette
- _palette = new byte[_paletteColorCount * 3];
- for (uint16 i = 0; i < _paletteColorCount; i++) {
- _palette[i * 3 + 0] = stream.readByte();
+ _palette = (byte *)malloc(kPaletteColorCount * 3);
+ for (uint16 i = 0; i < kPaletteColorCount; i++) {
+ _palette[i * 3] = stream.readByte();
_palette[i * 3 + 1] = stream.readByte();
_palette[i * 3 + 2] = stream.readByte();
}
_surface = new Graphics::Surface();
_surface->create(640, 480, Graphics::PixelFormat::createFormatCLUT8());
- for (int h = 0; h < 480; ++h) {
+ for (int h = 0; h < 480; h++) {
stream.read(_surface->getBasePtr(0, h), 640);
}
return true;
}
-}
-
-/* vim: set tabstop=4 noexpandtab: */
+} // End of namespace Prince
diff --git a/engines/prince/mhwanh.h b/engines/prince/mhwanh.h
index 02256569ce..cfa14630b7 100644
--- a/engines/prince/mhwanh.h
+++ b/engines/prince/mhwanh.h
@@ -25,7 +25,9 @@
#include "image/image_decoder.h"
#include "image/bmp.h"
+
#include "graphics/surface.h"
+
#include "resource.h"
namespace Prince {
@@ -40,12 +42,12 @@ public:
virtual bool loadStream(Common::SeekableReadStream &stream);
virtual Graphics::Surface *getSurface() const { return _surface; }
virtual const byte *getPalette() const { return _palette; }
- uint16 getPaletteCount() const { return _paletteColorCount; }
+ uint16 getPaletteCount() const { return kPaletteColorCount; }
+ static const uint16 kPaletteColorCount = 256;
private:
Graphics::Surface *_surface;
byte *_palette;
- uint16 _paletteColorCount;
};
namespace Resource {
@@ -60,8 +62,6 @@ namespace Resource {
}
}
-}
+} // End of namespace Prince
#endif
-
-/* vim: set tabstop=4 noexpandtab: */
diff --git a/engines/prince/mob.cpp b/engines/prince/mob.cpp
index 7ed4f58103..9f3ff5d7b8 100644
--- a/engines/prince/mob.cpp
+++ b/engines/prince/mob.cpp
@@ -22,8 +22,6 @@
#include "prince/mob.h"
-#include "common/stream.h"
-
namespace Prince {
bool Mob::loadFromStream(Common::SeekableReadStream &stream) {
@@ -107,6 +105,4 @@ uint16 Mob::getData(AttrId dataId) {
}
}
-}
-
-/* vim: set tabstop=4 noexpandtab: */
+} // End of namespace Prince
diff --git a/engines/prince/mob.h b/engines/prince/mob.h
index 36630eb6eb..aaa51988b2 100644
--- a/engines/prince/mob.h
+++ b/engines/prince/mob.h
@@ -26,13 +26,10 @@
#include "common/scummsys.h"
#include "common/rect.h"
#include "common/str.h"
+#include "common/stream.h"
#include "prince/common.h"
-namespace Common {
- class SeekableReadStream;
-}
-
namespace Prince {
class Mob {
@@ -79,8 +76,6 @@ public:
Common::String _examText;
};
-}
+} // End of namespace Prince
#endif
-
-/* vim: set tabstop=4 noexpandtab: */
diff --git a/engines/prince/module.mk b/engines/prince/module.mk
index 584fb99a97..2dfa538a6e 100644
--- a/engines/prince/module.mk
+++ b/engines/prince/module.mk
@@ -17,7 +17,6 @@ MODULE_OBJS = \
archive.o \
decompress.o \
hero.o \
- hero_set.o \
cursor.o \
pscr.o \
saveload.o
diff --git a/engines/prince/musNum.h b/engines/prince/musNum.h
index 65b31f8175..c24cba6ad7 100644
--- a/engines/prince/musNum.h
+++ b/engines/prince/musNum.h
@@ -84,4 +84,4 @@ enum RoomMus {
ROOM61MUS = 0
};
-}
+} // End of namespace Prince
diff --git a/engines/prince/object.cpp b/engines/prince/object.cpp
index 7e4bd1bbee..a9a96455b1 100644
--- a/engines/prince/object.cpp
+++ b/engines/prince/object.cpp
@@ -25,7 +25,6 @@
#include "common/debug.h"
#include "common/stream.h"
-
#include "graphics/surface.h"
#include "prince/object.h"
@@ -65,8 +64,9 @@ void Object::loadSurface(Common::SeekableReadStream &stream) {
bool Object::loadFromStream(Common::SeekableReadStream &stream) {
int32 pos = stream.pos();
uint16 x = stream.readUint16LE();
- if (x == 0xFFFF)
+ if (x == 0xFFFF) {
return false;
+ }
_x = x;
_y = stream.readSint16LE(); // skull mini-game has some signed y coords
@@ -82,8 +82,6 @@ bool Object::loadFromStream(Common::SeekableReadStream &stream) {
stream.seek(pos + 16);
- //debug("Object x %d, y %d, z %d overlay %d", _x, _y, _z, _mask);
-
return true;
}
@@ -112,5 +110,4 @@ int32 Object::getData(AttrId dataId) {
}
}
-}
-/* vim: set tabstop=4 noexpandtab: */
+} // End of namespace Prince
diff --git a/engines/prince/object.h b/engines/prince/object.h
index 31e88ac9e4..68edd061a0 100644
--- a/engines/prince/object.h
+++ b/engines/prince/object.h
@@ -65,7 +65,6 @@ private:
Graphics::Surface *_surface;
};
-}
+} // End of namespace Prince
#endif
-/* vim: set tabstop=4 noexpandtab: */
diff --git a/engines/prince/option_text.h b/engines/prince/option_text.h
index 0a1548a8a5..d4d214c98c 100644
--- a/engines/prince/option_text.h
+++ b/engines/prince/option_text.h
@@ -82,5 +82,4 @@ const char *optionsTextEN[] = {
"Talk to"
};
-}
-
+} // End of namespace Prince
diff --git a/engines/prince/prince.cpp b/engines/prince/prince.cpp
index ee96895d31..49d76afab7 100644
--- a/engines/prince/prince.cpp
+++ b/engines/prince/prince.cpp
@@ -21,7 +21,6 @@
*/
#include "common/scummsys.h"
-
#include "common/config-manager.h"
#include "common/debug-channels.h"
#include "common/debug.h"
@@ -77,8 +76,8 @@ void PrinceEngine::debugEngine(const char *s, ...) {
PrinceEngine::PrinceEngine(OSystem *syst, const PrinceGameDescription *gameDesc) :
Engine(syst), _gameDescription(gameDesc), _graph(nullptr), _script(nullptr), _interpreter(nullptr), _flags(nullptr),
- _locationNr(0), _debugger(nullptr), _midiPlayer(nullptr), _room(nullptr), testAnimNr(0), testAnimFrame(0),
- _frameNr(0), _cursor1(nullptr), _cursor2(nullptr), _cursor3(nullptr), _font(nullptr),
+ _locationNr(0), _debugger(nullptr), _midiPlayer(nullptr), _room(nullptr), _frameNr(0),
+ _cursor1(nullptr), _cursor2(nullptr), _cursor3(nullptr), _font(nullptr),
_suitcaseBmp(nullptr), _roomBmp(nullptr), _cursorNr(0), _picWindowX(0), _picWindowY(0), _randomSource("prince"),
_invLineX(134), _invLineY(176), _invLine(5), _invLines(3), _invLineW(70), _invLineH(76), _maxInvW(72), _maxInvH(76),
_invLineSkipX(2), _invLineSkipY(3), _showInventoryFlag(false), _inventoryBackgroundRemember(false),
@@ -121,9 +120,9 @@ PrinceEngine::~PrinceEngine() {
delete _roomBmp;
delete _suitcaseBmp;
delete _variaTxt;
- delete[] _talkTxt;
- delete[] _invTxt;
- delete[] _dialogDat;
+ free(_talkTxt);
+ free(_invTxt);
+ free(_dialogDat);
delete _graph;
delete _room;
@@ -137,7 +136,7 @@ PrinceEngine::~PrinceEngine() {
}
_objList.clear();
- delete[] _objSlot;
+ free(_objSlot);
for (uint32 i = 0; i < _pscrList.size(); i++) {
delete _pscrList[i];
@@ -258,7 +257,7 @@ void PrinceEngine::init() {
return;
}
_talkTxtSize = talkTxtStream->size();
- _talkTxt = new byte[_talkTxtSize];
+ _talkTxt = (byte *)malloc(_talkTxtSize);
talkTxtStream->read(_talkTxt, _talkTxtSize);
delete talkTxtStream;
@@ -269,7 +268,7 @@ void PrinceEngine::init() {
return;
}
_invTxtSize = invTxtStream->size();
- _invTxt = new byte[_invTxtSize];
+ _invTxt = (byte *)malloc(_invTxtSize);
invTxtStream->read(_invTxt, _invTxtSize);
delete invTxtStream;
@@ -282,7 +281,7 @@ void PrinceEngine::init() {
return;
}
_dialogDatSize = dialogDatStream->size();
- _dialogDat = new byte[_dialogDatSize];
+ _dialogDat = (byte *)malloc(_dialogDatSize);
dialogDatStream->read(_dialogDat, _dialogDatSize);
delete dialogDatStream;
@@ -325,7 +324,7 @@ void PrinceEngine::init() {
_normAnimList.push_back(tempAnim);
}
- _objSlot = new int[kMaxObjects];
+ _objSlot = (uint16 *)malloc(kMaxObjects * sizeof(uint16));
for (int i = 0; i < kMaxObjects; i++) {
_objSlot[i] = 0xFF;
}
@@ -551,10 +550,10 @@ void PrinceEngine::makeInvCursor(int itemNr) {
byte *src1 = (byte *)itemSurface->getBasePtr(0, 0);
byte *dst1 = (byte *)_cursor2->getBasePtr(cur1W, cur1H);
- if (itemH % 2 != 0) {
+ if (itemH % 2) {
itemH--;
}
- if (itemW % 2 != 0) {
+ if (itemW % 2) {
itemW--;
}
@@ -564,7 +563,7 @@ void PrinceEngine::makeInvCursor(int itemNr) {
if (y % 2 == 0) {
for (int x = 0; x < itemW; x++, src2++) {
if (x % 2 == 0) {
- if (*src2 != 0) {
+ if (*src2) {
*dst2 = *src2;
} else {
*dst2 = 255;
@@ -880,81 +879,9 @@ void PrinceEngine::keyHandler(Common::Event event) {
getDebugger()->attach();
}
break;
- case Common::KEYCODE_LEFT:
- if(testAnimNr > 0) {
- testAnimNr--;
- }
- debug("testAnimNr: %d", testAnimNr);
- break;
- case Common::KEYCODE_RIGHT:
- testAnimNr++;
- debug("testAnimNr: %d", testAnimNr);
- break;
case Common::KEYCODE_ESCAPE:
_flags->setFlagValue(Flags::ESCAPED2, 1);
break;
- case Common::KEYCODE_UP:
- _mainHero->_phase++;
- debugEngine("%d", _mainHero->_phase);
- testAnimFrame++;
- break;
- case Common::KEYCODE_DOWN:
- if(_mainHero->_phase > 0) {
- _mainHero->_phase--;
- }
- if (testAnimFrame > 0) {
- testAnimFrame--;
- }
- debugEngine("%d", _mainHero->_phase);
- break;
- case Common::KEYCODE_w:
- _mainHero->_lastDirection = _mainHero->kHeroDirUp;
- debugEngine("UP");
- break;
- case Common::KEYCODE_s:
- _mainHero->_lastDirection = _mainHero->kHeroDirDown;
- debugEngine("DOWN");
- break;
- case Common::KEYCODE_a:
- _mainHero->_lastDirection = _mainHero->kHeroDirLeft;
- debugEngine("LEFT");
- break;
- case Common::KEYCODE_f:
- _mainHero->_lastDirection = _mainHero->kHeroDirRight;
- debugEngine("RIGHT");
- break;
- case Common::KEYCODE_1:
- if(_mainHero->_state > 0) {
- _mainHero->_state--;
- }
- debugEngine("%d", _mainHero->_state);
- break;
- case Common::KEYCODE_2:
- _mainHero->_state++;
- debugEngine("%d", _mainHero->_state);
- break;
- case Common::KEYCODE_i:
- _mainHero->_middleY -= 5;
- break;
- case Common::KEYCODE_k:
- _mainHero->_middleY += 5;
- break;
- case Common::KEYCODE_j:
- _mainHero->_middleX -= 5;
- break;
- case Common::KEYCODE_l:
- _mainHero->_middleX += 5;
- break;
- case Common::KEYCODE_EQUALS:
- if (_debugger->_locationNr > 1) {
- _debugger->_locationNr--;
- }
- break;
- case Common::KEYCODE_BACKSPACE:
- if (_debugger->_locationNr < 43) {
- _debugger->_locationNr++;
- }
- break;
}
}
@@ -1144,10 +1071,11 @@ void PrinceEngine::printAt(uint32 slot, uint8 color, char *s, uint16 x, uint16 y
text._x = x;
text._y = y;
text._color = color;
- text._time = calcText(s) * 30;
+ int lines = calcTextLines(s);
+ text._time = calcTextTime(lines);
}
-int PrinceEngine::calcText(const char *s) {
+int PrinceEngine::calcTextLines(const char *s) {
int lines = 1;
while (*s) {
if (*s == '\n') {
@@ -1156,7 +1084,10 @@ int PrinceEngine::calcText(const char *s) {
s++;
}
return lines;
- //time = lines * 30
+}
+
+int PrinceEngine::calcTextTime(int numberOfLines) {
+ return numberOfLines * 30;
}
uint32 PrinceEngine::getTextWidth(const char *s) {
@@ -1742,7 +1673,7 @@ void PrinceEngine::showParallax() {
if (pscrSurface != nullptr) {
int x = _pscrList[i]->_x - (_pscrList[i]->_step * _picWindowX / 4);
int y = _pscrList[i]->_y;
- int z = 1000;
+ int z = PScr::kPScrZ;
if (spriteCheck(pscrSurface->w, pscrSurface->h, x, y)) {
showSprite(pscrSurface, x, y, z);
}
@@ -2355,24 +2286,17 @@ void PrinceEngine::inventoryLeftMouseButton() {
}
if (_optionsFlag == 1) {
- //check_opt
if (_selectedMob != -1) {
- //inv_check_mob
if (_optionEnabled < _invOptionsNumber) {
_optionsFlag = 0;
- //do_option
} else {
return;
}
} else {
error("PrinceEngine::inventoryLeftMouseButton() - optionsFlag = 1, selectedMob = 0");
- // test bx, RMBMask 7996 ? right mouse button here? - > return;
- //disable_use
if (_currentPointerNumber == 2) {
- //disableuseuse
changeCursor(1);
_currentPointerNumber = 1;
- //exit_normally
_selectedMob = -1;
_optionsMob = -1;
return;
@@ -2389,7 +2313,6 @@ void PrinceEngine::inventoryLeftMouseButton() {
// map item
_optionEnabled = 1;
}
- //do_option
} else {
//use_item_on_item
int invObjUU = _script->scanMobEventsWithItem(_invMobList[_selectedMob]._mask, _script->_scriptInfo.invObjUU, _selectedItem);
@@ -2402,15 +2325,12 @@ void PrinceEngine::inventoryLeftMouseButton() {
printAt(0, 216, (char *)_variaTxt->getString(textNr - 80000), kNormalWidth / 2, 100);
setVoice(0, 28, 1);
playSample(28, 0);
- //exit_normally
_selectedMob = -1;
_optionsMob = -1;
return;
} else {
- //store_new_pc
_interpreter->storeNewPC(invObjUU);
_flags->setFlagValue(Flags::CURRMOB, _invMobList[_selectedMob]._mask);
- //byeinv
_showInventoryFlag = false;
}
}
@@ -2430,12 +2350,9 @@ void PrinceEngine::inventoryLeftMouseButton() {
// disableuseuse
changeCursor(0);
_currentPointerNumber = 1;
- //exit_normally
} else {
- //store_new_pc
_interpreter->storeNewPC(invObjExamEvent);
_flags->setFlagValue(Flags::CURRMOB, _invMobList[_selectedMob]._mask);
- //bye_inv
_showInventoryFlag = false;
}
} else if (_optionEnabled == 1) {
@@ -2448,23 +2365,18 @@ void PrinceEngine::inventoryLeftMouseButton() {
makeInvCursor(_invMobList[_selectedMob]._mask);
_currentPointerNumber = 2;
changeCursor(2);
- //exit_normally
} else {
- //store_new_pc
_interpreter->storeNewPC(invObjUse);
_flags->setFlagValue(Flags::CURRMOB, _invMobList[_selectedMob]._mask);
- //bye_inv
_showInventoryFlag = false;
}
} else if (_optionEnabled == 4) {
- // not_use_inv
// do_standard_give
_selectedMode = 1;
_selectedItem = _invMobList[_selectedMob]._mask;
makeInvCursor(_invMobList[_selectedMob]._mask);
_currentPointerNumber = 2;
changeCursor(2);
- //exit_normally
} else {
// use_item_on_item
int invObjUU = _script->scanMobEventsWithItem(_invMobList[_selectedMob]._mask, _script->_scriptInfo.invObjUU, _selectedItem);
@@ -2477,16 +2389,12 @@ void PrinceEngine::inventoryLeftMouseButton() {
printAt(0, 216, (char *)_variaTxt->getString(textNr - 80000), kNormalWidth / 2, 100);
setVoice(0, 28, 1);
playSample(28, 0);
- //exit_normally
} else {
- //store_new_pc
_interpreter->storeNewPC(invObjUU);
_flags->setFlagValue(Flags::CURRMOB, _invMobList[_selectedMob]._mask);
- //byeinv
_showInventoryFlag = false;
}
}
- //exit_normally
_selectedMob = -1;
_optionsMob = -1;
}
@@ -2733,7 +2641,7 @@ void PrinceEngine::createDialogBox(int dialogBoxNr) {
while ((sentenceNumber = *dialogText) != 0xFF) {
dialogText++;
if (!(dialogDataValue & (1 << sentenceNumber))) {
- _dialogLines += calcText((const char *)dialogText);
+ _dialogLines += calcTextLines((const char *)dialogText);
amountOfDialogOptions++;
}
do {
@@ -2756,7 +2664,7 @@ void PrinceEngine::runDialog() {
while (!shouldQuit()) {
drawScreen();
- // background iterpreter?
+ // TODO - background iterpreter?
int dialogX = (640 - _dialogWidth) / 2;
int dialogY = 460 - _dialogHeight;
@@ -2849,7 +2757,6 @@ void PrinceEngine::runDialog() {
_dialogImage->free();
delete _dialogImage;
_dialogFlag = false;
- // cursor?
}
void PrinceEngine::dialogLeftMouseButton(byte *string, int dialogSelected) {
@@ -2873,7 +2780,7 @@ void PrinceEngine::dialogLeftMouseButton(byte *string, int dialogSelected) {
void PrinceEngine::talkHero(int slot) {
// heroSlot = textSlot (slot 0 or 1)
Text &text = _textSlots[slot];
- int lines = calcText((const char *)_interpreter->getString());
+ int lines = calcTextLines((const char *)_interpreter->getString());
int time = lines * 30;
if (slot == 0) {
@@ -2896,7 +2803,7 @@ void PrinceEngine::talkHero(int slot) {
void PrinceEngine::doTalkAnim(int animNumber, int slot, AnimType animType) {
Text &text = _textSlots[slot];
- int lines = calcText((const char *)_interpreter->getString());
+ int lines = calcTextLines((const char *)_interpreter->getString());
int time = lines * 30;
if (animType == kNormalAnimation) {
Anim &normAnim = _normAnimList[animNumber];
@@ -4545,5 +4452,3 @@ void PrinceEngine::mainLoop() {
}
} // End of namespace Prince
-
-/* vim: set tabstop=4 expandtab!: */
diff --git a/engines/prince/prince.h b/engines/prince/prince.h
index 4b8d78ad94..a1379d6b59 100644
--- a/engines/prince/prince.h
+++ b/engines/prince/prince.h
@@ -49,7 +49,6 @@
#include "prince/object.h"
#include "prince/pscr.h"
-
namespace Prince {
struct PrinceGameDescription;
@@ -301,7 +300,8 @@ public:
void changeCursor(uint16 curId);
void printAt(uint32 slot, uint8 color, char *s, uint16 x, uint16 y);
- int calcText(const char *s);
+ int calcTextLines(const char *s);
+ int calcTextTime(int numberOfLines);
static const uint8 kMaxTexts = 32;
Text _textSlots[kMaxTexts];
@@ -355,7 +355,7 @@ public:
Common::Array<uint32> _mobPriorityList;
Common::Array<Mask> _maskList;
Common::Array<Object *> _objList;
- int *_objSlot;
+ uint16 *_objSlot;
void freeNormAnim(int slot);
void freeAllNormAnims();
@@ -563,9 +563,6 @@ public:
int checkRightDownDir();
int checkRightUpDir();
- int testAnimNr;
- int testAnimFrame;
-
private:
bool playNextFrame();
void keyHandler(Common::Event event);
@@ -620,5 +617,3 @@ private:
} // End of namespace Prince
#endif
-
-/* vim: set tabstop=4 noexpandtab: */
diff --git a/engines/prince/pscr.cpp b/engines/prince/pscr.cpp
index bb4316d465..d9d36a3356 100644
--- a/engines/prince/pscr.cpp
+++ b/engines/prince/pscr.cpp
@@ -21,17 +21,13 @@
*/
#include "common/archive.h"
-#include "common/debug-channels.h"
-#include "common/debug.h"
#include "common/stream.h"
-#include "graphics/surface.h"
-
#include "prince/pscr.h"
namespace Prince {
-PScr::PScr() :_file(0), _x(0), _y(0), _step(0), _addr(0), _len(0), _surface(nullptr)
+PScr::PScr() : _x(0), _y(0), _step(0), _surface(nullptr)
{
}
@@ -58,15 +54,14 @@ void PScr::loadSurface(Common::SeekableReadStream &stream) {
bool PScr::loadFromStream(Common::SeekableReadStream &stream) {
int32 pos = stream.pos();
uint16 file = stream.readUint16LE();
- if (file == 0xFFFF)
+ if (file == 0xFFFF) {
return false;
- _file = file;
+ }
_x = stream.readUint16LE();
_y = stream.readUint16LE();
_step = stream.readUint16LE();
- _addr = stream.readUint32LE();
- const Common::String pscrStreamName = Common::String::format("PS%02d", _file);
+ const Common::String pscrStreamName = Common::String::format("PS%02d", file);
Common::SeekableReadStream *pscrStream = SearchMan.createReadStreamForMember(pscrStreamName);
if (pscrStream != nullptr) {
loadSurface(*pscrStream);
@@ -74,9 +69,7 @@ bool PScr::loadFromStream(Common::SeekableReadStream &stream) {
delete pscrStream;
stream.seek(pos + 12); // size of PScrList struct
- debug("Parallex nr %d, x %d, y %d, step %d", _file, _x, _y, _step);
-
return true;
}
-}
+} // End of namespace Prince
diff --git a/engines/prince/pscr.h b/engines/prince/pscr.h
index 76add9602d..d59fa37d81 100644
--- a/engines/prince/pscr.h
+++ b/engines/prince/pscr.h
@@ -23,7 +23,6 @@
#ifndef PRINCE_PSCR_H
#define PRINCE_PSCR_H
-#include "image/image_decoder.h"
#include "graphics/surface.h"
namespace Prince {
@@ -32,13 +31,10 @@ class PScr {
public:
PScr();
~PScr();
-
- int16 _file;
int16 _x;
int16 _y;
int16 _step;
- int32 _addr;
- byte _len;
+ static const int16 kPScrZ = 1000;
bool loadFromStream(Common::SeekableReadStream &stream);
Graphics::Surface *getSurface() const { return _surface; }
@@ -47,7 +43,6 @@ private:
Graphics::Surface *_surface;
};
-}
+} // End of namespace Prince
#endif
-
diff --git a/engines/prince/resource.h b/engines/prince/resource.h
index c30bec0e09..76ac5b0505 100644
--- a/engines/prince/resource.h
+++ b/engines/prince/resource.h
@@ -95,8 +95,6 @@ namespace Resource {
}
-}
+} // End of namespace Prince
#endif
-
-/* vim: set tabstop=4 noexpandtab: */
diff --git a/engines/prince/saveload.cpp b/engines/prince/saveload.cpp
index 4bf41b43c1..094d66b292 100644
--- a/engines/prince/saveload.cpp
+++ b/engines/prince/saveload.cpp
@@ -26,10 +26,12 @@
#include "prince/flags.h"
#include "prince/script.h"
#include "prince/hero.h"
+
#include "common/savefile.h"
#include "common/system.h"
#include "common/config-manager.h"
#include "common/memstream.h"
+
#include "graphics/thumbnail.h"
#include "graphics/surface.h"
#include "graphics/palette.h"
diff --git a/engines/prince/script.cpp b/engines/prince/script.cpp
index a621c864cb..4f122d8bec 100644
--- a/engines/prince/script.cpp
+++ b/engines/prince/script.cpp
@@ -31,7 +31,6 @@
#include "common/debug.h"
#include "common/debug-channels.h"
-#include "common/stream.h"
#include "common/archive.h"
#include "common/memstream.h"
@@ -90,20 +89,24 @@ Script::Script(PrinceEngine *vm) : _vm(vm), _data(nullptr), _dataSize(0) {
}
Script::~Script() {
- delete[] _data;
- _dataSize = 0;
- _data = nullptr;
+ if (_data != nullptr) {
+ free(_data);
+ _dataSize = 0;
+ _data = nullptr;
+ }
}
bool Script::loadFromStream(Common::SeekableReadStream &stream) {
_dataSize = stream.size();
- if (!_dataSize)
+ if (!_dataSize) {
return false;
+ }
- _data = new byte[_dataSize];
+ _data = (byte *)malloc(_dataSize);
- if (!_data)
+ if (!_data) {
return false;
+ }
stream.read(_data, _dataSize);
@@ -2015,6 +2018,4 @@ Interpreter::OpcodeFunc Interpreter::_opcodes[kNumOpcodes] = {
&Interpreter::O_BREAK_POINT,
};
-}
-
-/* vim: set tabstop=4 noexpandtab: */
+} // End of namespace Prince
diff --git a/engines/prince/script.h b/engines/prince/script.h
index 57f9268598..f033128e97 100644
--- a/engines/prince/script.h
+++ b/engines/prince/script.h
@@ -26,13 +26,10 @@
#include "common/random.h"
#include "common/endian.h"
#include "common/array.h"
+#include "common/stream.h"
#include "prince/flags.h"
-namespace Common {
- class SeekableReadStream;
-}
-
namespace Prince {
class PrinceEngine;
@@ -42,9 +39,9 @@ struct Anim;
struct BackgroundAnim;
struct Mask;
+// TODO - change this to sth else?
namespace Detail {
template <typename T> T LittleEndianReader(void *data);
- template <> inline uint8 LittleEndianReader<uint8>(void *data) { return *(uint8*)(data); }
template <> inline uint16 LittleEndianReader<uint16>(void *data) { return READ_LE_UINT16(data); }
template <> inline uint32 LittleEndianReader<uint32>(void *data) { return READ_LE_UINT32(data); }
}
@@ -233,7 +230,6 @@ private:
uint32 currentString;
} _stringStack;
uint8 _stacktop;
- //uint8 _savedStacktop;
uint32 _waitFlag;
byte *_string;
@@ -404,8 +400,6 @@ private:
};
-}
+} // End of namespace Prince
#endif
-
-/* vim: set tabstop=4 noexpandtab: */
diff --git a/engines/prince/sound.cpp b/engines/prince/sound.cpp
index 3509bbc291..0f536973b6 100644
--- a/engines/prince/sound.cpp
+++ b/engines/prince/sound.cpp
@@ -37,7 +37,7 @@
namespace Prince {
-const char * MusicPlayer::_musTable[] = {
+const char *MusicPlayer::_musTable[] = {
"",
"Battlfld.mid",
"Cave.mid",
@@ -217,6 +217,4 @@ void MusicPlayer::sendToChannel(byte channel, uint32 b) {
_channelsTable[channel]->send(b);
}
-}
-
-/* vim: set tabstop=4 expandtab!: */
+} // End of namespace Prince
diff --git a/engines/prince/sound.h b/engines/prince/sound.h
index 07ac9f38d9..b1711bd682 100644
--- a/engines/prince/sound.h
+++ b/engines/prince/sound.h
@@ -70,5 +70,3 @@ public:
} // End of namespace Prince
#endif
-
-/* vim: set tabstop=4 expandtab!: */
diff --git a/engines/prince/variatxt.cpp b/engines/prince/variatxt.cpp
index eb4efd8877..839ed5e662 100644
--- a/engines/prince/variatxt.cpp
+++ b/engines/prince/variatxt.cpp
@@ -25,19 +25,21 @@
namespace Prince {
-VariaTxt::VariaTxt() : _dataSize(0), _data(NULL) {
+VariaTxt::VariaTxt() : _dataSize(0), _data(nullptr) {
}
VariaTxt::~VariaTxt() {
_dataSize = 0;
- delete[] _data;
- _data = NULL;
+ if (_data != nullptr) {
+ free(_data);
+ _data = nullptr;
+ }
}
bool VariaTxt::loadFromStream(Common::SeekableReadStream &stream) {
_dataSize = stream.size();
- _data = new byte [_dataSize];
+ _data = (byte *)malloc(_dataSize);
stream.read(_data, _dataSize);
return true;
}
@@ -50,6 +52,4 @@ byte *VariaTxt::getString(uint32 stringId) {
return _data + stringOffset;
}
-}
-
-/* vim: set tabstop=4 noexpandtab: */
+} // End of namespace Prince
diff --git a/engines/prince/variatxt.h b/engines/prince/variatxt.h
index 98efad2059..99b225f362 100644
--- a/engines/prince/variatxt.h
+++ b/engines/prince/variatxt.h
@@ -27,11 +27,9 @@ namespace Prince {
class VariaTxt {
public:
VariaTxt();
-
~VariaTxt();
bool loadFromStream(Common::SeekableReadStream &stream);
-
byte *getString(uint32 stringId);
private:
@@ -39,6 +37,4 @@ private:
byte *_data;
};
-}
-
-/* vim: set tabstop=4 noexpandtab: */
+} // End of namespace Prince