GOB: Clean up class DataIO
Removing the need for class DataStream and that handle mess. svn-id: r53984
This commit is contained in:
parent
88892dc982
commit
16a3cc8a84
20 changed files with 446 additions and 774 deletions
|
@ -57,7 +57,7 @@ void Init::cleanup() {
|
|||
|
||||
_vm->_sound->speakerOff();
|
||||
_vm->_sound->blasterStop(0);
|
||||
_vm->_dataIO->closeDataFile();
|
||||
_vm->_dataIO->closeArchive(true);
|
||||
}
|
||||
|
||||
void Init::doDemo() {
|
||||
|
@ -81,17 +81,12 @@ void Init::doDemo() {
|
|||
}
|
||||
|
||||
void Init::initGame() {
|
||||
byte *infBuf;
|
||||
char *infPtr;
|
||||
char *infEnd;
|
||||
char buffer[128];
|
||||
|
||||
initVideo();
|
||||
updateConfig();
|
||||
|
||||
if (!_vm->isDemo()) {
|
||||
if (_vm->_dataIO->existData(_vm->_startStk.c_str()))
|
||||
_vm->_dataIO->openDataFile(_vm->_startStk.c_str());
|
||||
if (_vm->_dataIO->hasFile(_vm->_startStk))
|
||||
_vm->_dataIO->openArchive(_vm->_startStk, true);
|
||||
}
|
||||
|
||||
_vm->_util->initInput();
|
||||
|
@ -126,37 +121,31 @@ void Init::initGame() {
|
|||
return;
|
||||
}
|
||||
|
||||
if (!_vm->_dataIO->existData("intro.inf")) {
|
||||
Common::SeekableReadStream *infFile = _vm->_dataIO->getFile("intro.inf");
|
||||
if (!infFile) {
|
||||
|
||||
for (int i = 0; i < 4; i++)
|
||||
_vm->_draw->loadFont(i, _fontNames[i]);
|
||||
|
||||
} else {
|
||||
infBuf = _vm->_dataIO->getData("intro.inf");
|
||||
infPtr = (char *)infBuf;
|
||||
|
||||
infEnd = (char *)(infBuf + _vm->_dataIO->getDataSize("intro.inf"));
|
||||
|
||||
for (int i = 0; i < 8; i++, infPtr++) {
|
||||
int j;
|
||||
|
||||
for (j = 0; infPtr < infEnd && *infPtr >= ' '; j++, infPtr++)
|
||||
buffer[j] = *infPtr;
|
||||
buffer[j] = 0;
|
||||
|
||||
strcat(buffer, ".let");
|
||||
|
||||
_vm->_draw->loadFont(i, buffer);
|
||||
|
||||
if ((infPtr + 1) >= infEnd)
|
||||
for (int i = 0; i < 8; i++) {
|
||||
if (infFile->eos())
|
||||
break;
|
||||
|
||||
infPtr++;
|
||||
Common::String font = infFile->readLine();
|
||||
if (infFile->eos() && font.empty())
|
||||
break;
|
||||
|
||||
font += ".let";
|
||||
|
||||
_vm->_draw->loadFont(i, font.c_str());
|
||||
}
|
||||
delete[] infBuf;
|
||||
|
||||
delete infFile;
|
||||
}
|
||||
|
||||
if (_vm->_dataIO->existData(_vm->_startTot.c_str())) {
|
||||
if (_vm->_dataIO->hasFile(_vm->_startTot)) {
|
||||
_vm->_inter->allocateVars(Script::getVariablesCount(_vm->_startTot.c_str(), _vm));
|
||||
|
||||
strcpy(_vm->_game->_curTotFile, _vm->_startTot.c_str());
|
||||
|
@ -165,7 +154,7 @@ void Init::initGame() {
|
|||
_vm->_sound->cdLoadLIC("gob.lic");
|
||||
|
||||
// Search for a Coktel logo animation or image to display
|
||||
if (_vm->_dataIO->existData("coktel.imd")) {
|
||||
if (_vm->_dataIO->hasFile("coktel.imd")) {
|
||||
_vm->_draw->initScreen();
|
||||
_vm->_draw->_cursorIndex = -1;
|
||||
|
||||
|
@ -179,26 +168,28 @@ void Init::initGame() {
|
|||
}
|
||||
|
||||
_vm->_draw->closeScreen();
|
||||
} else if (_vm->_dataIO->existData("coktel.clt")) {
|
||||
_vm->_draw->initScreen();
|
||||
_vm->_util->clearPalette();
|
||||
} else if (_vm->_dataIO->hasFile("coktel.clt")) {
|
||||
Common::SeekableReadStream *stream = _vm->_dataIO->getFile("coktel.clt");
|
||||
if (stream) {
|
||||
_vm->_draw->initScreen();
|
||||
_vm->_util->clearPalette();
|
||||
|
||||
DataStream *stream = _vm->_dataIO->getDataStream("coktel.clt");
|
||||
stream->read((byte *)_vm->_draw->_vgaPalette, 768);
|
||||
delete stream;
|
||||
stream->read((byte *)_vm->_draw->_vgaPalette, 768);
|
||||
delete stream;
|
||||
|
||||
if (_vm->_dataIO->existData("coktel.ims")) {
|
||||
byte *sprBuf;
|
||||
int32 size;
|
||||
byte *sprite = _vm->_dataIO->getFile("coktel.ims", size);
|
||||
if (sprite) {
|
||||
_vm->_video->drawPackedSprite(sprite, 320, 200, 0, 0, 0,
|
||||
*_vm->_draw->_frontSurface);
|
||||
_vm->_palAnim->fade(_palDesc, 0, 0);
|
||||
_vm->_util->delay(500);
|
||||
|
||||
sprBuf = _vm->_dataIO->getData("coktel.ims");
|
||||
_vm->_video->drawPackedSprite(sprBuf, 320, 200, 0, 0, 0,
|
||||
*_vm->_draw->_frontSurface);
|
||||
_vm->_palAnim->fade(_palDesc, 0, 0);
|
||||
_vm->_util->delay(500);
|
||||
delete[] sprite;
|
||||
}
|
||||
|
||||
delete[] sprBuf;
|
||||
_vm->_draw->closeScreen();
|
||||
}
|
||||
_vm->_draw->closeScreen();
|
||||
}
|
||||
|
||||
_vm->_game->start();
|
||||
|
@ -209,7 +200,7 @@ void Init::initGame() {
|
|||
}
|
||||
|
||||
delete _palDesc;
|
||||
_vm->_dataIO->closeDataFile();
|
||||
_vm->_dataIO->closeArchive(true);
|
||||
_vm->_video->initPrimary(-1);
|
||||
cleanup();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue