aboutsummaryrefslogtreecommitdiff
path: root/engines/hugo/intro.cpp
diff options
context:
space:
mode:
authorJohannes Schickel2011-02-15 23:40:06 +0100
committerJohannes Schickel2011-02-15 23:42:50 +0100
commita02454644af514c4f50b861cc718e2951d4c46dd (patch)
treee6385482a68f330f412e87aa33b049b4f5912911 /engines/hugo/intro.cpp
parent01d511bf1b6df74254a2f6bd3007e884cd0c0dde (diff)
parent369db4fdfd5dac16858505f91cb37f4ae386fe80 (diff)
downloadscummvm-rg350-a02454644af514c4f50b861cc718e2951d4c46dd.tar.gz
scummvm-rg350-a02454644af514c4f50b861cc718e2951d4c46dd.tar.bz2
scummvm-rg350-a02454644af514c4f50b861cc718e2951d4c46dd.zip
Merge branch 'master' into osystem-palette
Conflicts: backends/platform/wii/osystem_gfx.cpp
Diffstat (limited to 'engines/hugo/intro.cpp')
-rw-r--r--engines/hugo/intro.cpp45
1 files changed, 37 insertions, 8 deletions
diff --git a/engines/hugo/intro.cpp b/engines/hugo/intro.cpp
index 02fb94c83d..4ee46f80b5 100644
--- a/engines/hugo/intro.cpp
+++ b/engines/hugo/intro.cpp
@@ -41,12 +41,41 @@
namespace Hugo {
-IntroHandler::IntroHandler(HugoEngine *vm) : _vm(vm) {
+IntroHandler::IntroHandler(HugoEngine *vm) : _vm(vm), _introX(0), _introY(0) {
+ _introXSize = 0;
}
IntroHandler::~IntroHandler() {
}
+/**
+ * Read _introX and _introY from hugo.dat
+ */
+void IntroHandler::loadIntroData(Common::ReadStream &in) {
+ for (int varnt = 0; varnt < _vm->_numVariant; varnt++) {
+ int numRows = in.readUint16BE();
+ if (varnt == _vm->_gameVariant) {
+ _introXSize = numRows;
+ _introX = (byte *)malloc(sizeof(byte) * _introXSize);
+ _introY = (byte *)malloc(sizeof(byte) * _introXSize);
+ for (int i = 0; i < _introXSize; i++) {
+ _introX[i] = in.readByte();
+ _introY[i] = in.readByte();
+ }
+ } else {
+ for (int i = 0; i < numRows; i++) {
+ in.readByte();
+ in.readByte();
+ }
+ }
+ }
+}
+
+void IntroHandler::freeIntroData() {
+ free(_introX);
+ free(_introY);
+}
+
intro_v1d::intro_v1d(HugoEngine *vm) : IntroHandler(vm) {
}
@@ -68,7 +97,7 @@ void intro_v1d::introInit() {
}
bool intro_v1d::introPlay() {
- byte introSize = _vm->getIntroSize();
+ byte introSize = getIntroSize();
if (_vm->getGameStatus().skipIntroFl)
return true;
@@ -296,8 +325,8 @@ bool intro_v3d::introPlay() {
if (_vm->getGameStatus().skipIntroFl)
return true;
- if (introTicks < _vm->getIntroSize()) {
- font.drawString(&surf, ".", _vm->_introX[introTicks], _vm->_introY[introTicks] - kDibOffY, 320, _TBRIGHTWHITE);
+ if (introTicks < getIntroSize()) {
+ font.drawString(&surf, ".", _introX[introTicks], _introY[introTicks] - kDibOffY, 320, _TBRIGHTWHITE);
_vm->_screen->displayBackground();
// Text boxes at various times
@@ -314,7 +343,7 @@ bool intro_v3d::introPlay() {
}
}
- return (++introTicks >= _vm->getIntroSize());
+ return (++introTicks >= getIntroSize());
}
intro_v1w::intro_v1w(HugoEngine *vm) : IntroHandler(vm) {
@@ -387,9 +416,9 @@ bool intro_v3w::introPlay() {
if (_vm->getGameStatus().skipIntroFl)
return true;
- if (introTicks < _vm->getIntroSize()) {
+ if (introTicks < getIntroSize()) {
// Scale viewport x_intro,y_intro to screen (offsetting y)
- _vm->_screen->writeStr(_vm->_introX[introTicks], _vm->_introY[introTicks] - kDibOffY, "x", _TBRIGHTWHITE);
+ _vm->_screen->writeStr(_introX[introTicks], _introY[introTicks] - kDibOffY, "x", _TBRIGHTWHITE);
_vm->_screen->displayBackground();
// Text boxes at various times
@@ -406,6 +435,6 @@ bool intro_v3w::introPlay() {
}
}
- return (++introTicks >= _vm->getIntroSize());
+ return (++introTicks >= getIntroSize());
}
} // End of namespace Hugo