CHEWY: Use error() instead of returning a global error flag

The error messages are temporary, and all error checking for
resources will be eventually moved into the resource handling
code
This commit is contained in:
Filippos Karapetis 2022-01-30 16:51:42 +02:00 committed by Paul Gilbert
parent 2574347f82
commit f512718281
23 changed files with 168 additions and 581 deletions

View File

@ -633,7 +633,7 @@ void ailclass::startDbVoc(Stream *v, int16 channel, int16 vol) {
src->seek(-ChunkHead::SIZE(), SEEK_CUR);
ChunkHead ch;
if (!ch.load(src))
::error("Error loading speech");
error("Error loading speech");
Common::SeekableReadStream *rs = src->readStream(ch.size);
playSpeech(channel, rs);

View File

@ -306,9 +306,7 @@ Stream *atdsys::pool_handle(const char *fname_, const char *fmode) {
if (handle) {
atdshandle[ATDS_HANDLE] = handle;
} else {
modul = DATEI;
fcode = OPENFEHLER;
err->set_user_msg(fname_);
error("Error reading from %s", fname_);
}
return handle;
@ -327,13 +325,13 @@ void atdsys::set_handle(const char *fname_, int16 mode, Stream *handle, int16 ch
atdshandle[mode] = rs;
atdsmem[mode] = tmp_adr;
atdspooloff[mode] = chunk_start;
if (mode == INV_USE_DATEI) {
switch (mode) {
case INV_USE_DATEI:
mem->file->select_pool_item(rs, atdspooloff[mode]);
rs->seek(-ChunkHead::SIZE(), SEEK_CUR);
if (!Ch.load(rs)) {
modul = DATEI;
fcode = READFEHLER;
error("Error reading from %s", fname_);
} else {
free(inv_use_mem);
inv_use_mem = (char *)MALLOC(Ch.size + 3l);
@ -341,8 +339,7 @@ void atdsys::set_handle(const char *fname_, int16 mode, Stream *handle, int16 ch
if (!modul) {
if (Ch.size) {
if (!rs->read(inv_use_mem, Ch.size)) {
fcode = READFEHLER;
modul = DATEI;
error("Error reading from %s", fname_);
} else
crypt(inv_use_mem, Ch.size);
}
@ -351,10 +348,12 @@ void atdsys::set_handle(const char *fname_, int16 mode, Stream *handle, int16 ch
inv_use_mem[Ch.size + 2] = (char)BLOCKENDE;
}
}
break;
}
}
} else
err->set_user_msg(fname_);
error("Error reading from %s", fname_);
}
void atdsys::open_handle(const char *fname_, const char *fmode, int16 mode) {
@ -382,9 +381,7 @@ void atdsys::open_handle(const char *fname_, const char *fmode, int16 mode) {
break;
}
} else {
modul = DATEI;
fcode = OPENFEHLER;
err->set_user_msg(fname_);
error("Error reading from %s", fname_);
}
}
}
@ -424,13 +421,11 @@ void atdsys::load_atds(int16 chunk_nr, int16 mode) {
mem->file->select_pool_item(stream, chunk_nr + atdspooloff[mode]);
stream->seek(-ChunkHead::SIZE(), SEEK_CUR);
if (!Ch.load(stream)) {
modul = DATEI;
fcode = READFEHLER;
error("load_atds error");
} else {
if (Ch.size) {
if (stream->read(txt_adr, Ch.size) != Ch.size) {
fcode = READFEHLER;
modul = DATEI;
error("load_atds error");
} else if (mode != ADH_DATEI)
crypt(txt_adr, Ch.size);
}
@ -439,8 +434,7 @@ void atdsys::load_atds(int16 chunk_nr, int16 mode) {
txt_adr[Ch.size + 2] = (char)BLOCKENDE;
}
} else {
modul = DATEI;
fcode = OPENFEHLER;
error("load_atds error");
}
}
@ -454,23 +448,20 @@ void atdsys::save_ads_header(int16 dia_nr) {
rs->seek(-ChunkHead::SIZE(), SEEK_CUR);
if (!Ch.load(rs)) {
modul = DATEI;
fcode = READFEHLER;
error("save_ads_header error");
} else {
if (Ch.size) {
Common::SeekableWriteStream *ws = g_engine->_tempFiles.createWriteStreamForMember(ADSH_TMP);
ws->seek(rs->pos());
if (ws->write(atdsmem[ADH_HANDLE], Ch.size) != Ch.size) {
fcode = WRITEFEHLER;
modul = DATEI;
error("save_ads_header error");
}
delete ws;
}
}
} else {
modul = DATEI;
fcode = OPENFEHLER;
error("save_ads_header error");
}
}
@ -982,7 +973,6 @@ void atdsys::print_aad(int16 scrx, int16 scry) {
atdsv.VocNr = aadv.StrHeader->VocNr - ATDS_VOC_OFFSET;
if (atdsv.VocNr != -1) {
mem->file->select_pool_item(atdsv.SpeechHandle, atdsv.VocNr);
ERROR
int16 vocx = spieler_vector[aadv.StrHeader->AkPerson].Xypos[0] -
_G(spieler).scrollx + spieler_mi[aadv.StrHeader->AkPerson].HotX;
@ -992,9 +982,7 @@ void atdsys::print_aad(int16 scrx, int16 scry) {
aadv.DelayCount = 1;
}
} else {
modul = DATEI;
fcode = OPENFEHLER;
err->set_user_msg("sprachausgabe.tvp");
error("Error reading from sprachausgabe.tvp");
}
}
for (int16 i = 0; i < ssr->Anz; i++) {
@ -1358,14 +1346,12 @@ int16 atdsys::calc_inv_no_use(int16 cur_inv, int16 test_nr, int16 mode) {
InvUse *iu = (InvUse *)atdsmem[INV_IDX_HANDLE];
for (int16 i = 0; i < INV_STRC_ANZ; ++i, ++iu) {
if (!iu->load(rs)) {
modul = DATEI;
fcode = READFEHLER;
error("calc_inv_no_use error");
break;
}
}
} else {
modul = DATEI;
fcode = OPENFEHLER;
error("calc_inv_no_use error");
}
}

View File

@ -93,8 +93,7 @@ Common::Error ChewyEngine::loadGameStream(Common::SeekableReadStream *stream) {
Common::Serializer s(stream, nullptr);
if (!_G(spieler).synchronize(s)) {
fcode = READFEHLER;
modul = DATEI;
error("loadGameStream error");
return Common::kReadingFailed;
} else {
@ -113,7 +112,6 @@ Common::Error ChewyEngine::loadGameStream(Common::SeekableReadStream *stream) {
if (_G(spieler).AkInvent != -1)
_G(spieler).room_m_obj[_G(spieler).AkInvent].RoomNr = -1;
room->load_room(&room_blk, _G(spieler).PersonRoomNr[P_CHEWY], &_G(spieler));
ERROR
load_chewy_taf(_G(spieler).ChewyAni);
fx_blend = BLEND1;

View File

@ -86,16 +86,13 @@ void datei::load_image(Stream *stream, byte *sp, byte *palette) {
break;
}
} else {
fcode = NOTTBF;
modul = DATEI;
error("load_image error");
}
} else {
fcode = READFEHLER;
modul = DATEI;
error("load_image error");
}
} else {
fcode = ZEIGERFEHLER;
modul = GRAFIK;
error("load_image error");
}
ChunkHead ch;
@ -110,9 +107,7 @@ uint16 datei::select_pool_item(Stream *stream, uint16 nr) {
if (rs) {
rs->seek(0, SEEK_SET);
if (!ph->load(rs)) {
modul = DATEI;
fcode = READFEHLER;
rs->seek(0, SEEK_SET);
error("select_pool_item error");
} else {
if (!strncmp(ph->id, "NGS", 3)) {
if (nr >= ph->PoolAnz)
@ -153,8 +148,7 @@ void datei::load_tafmcga(const char *fname, byte *sp, int16 nr) {
next = iheader.next;
image = iheader.image;
} else {
fcode = READFEHLER;
modul = DATEI;
error("load_tafmcga error");
}
++sprcount;
}
@ -167,8 +161,7 @@ void datei::load_tafmcga(const char *fname, byte *sp, int16 nr) {
next = iheader.next;
image = iheader.image;
} else {
fcode = READFEHLER;
modul = DATEI;
error("load_tafmcga error");
}
}
@ -180,22 +173,18 @@ void datei::load_tafmcga(const char *fname, byte *sp, int16 nr) {
read_tbf_image(&f, komp, size, speicher);
} else {
fcode = NOTTBF;
modul = DATEI;
error("load_tafmcga error");
}
} else {
fcode = READFEHLER;
modul = DATEI;
error("load_tafmcga error");
}
f.close();
} else {
fcode = OPENFEHLER;
modul = DATEI;
error("load_tafmcga error");
}
} else {
fcode = ZEIGERFEHLER;
modul = GRAFIK;
error("load_tafmcga error");
}
}
@ -226,8 +215,7 @@ void datei::load_full_taf(const char *fname, byte *hi_sp, taf_info *tinfo) {
next = iheader.next;
image = iheader.image;
} else {
fcode = READFEHLER;
modul = DATEI;
error("load_full_taf error");
}
uint16 *abmess = (uint16 *)speicher;
abmess[0] = iheader.width;
@ -241,22 +229,18 @@ void datei::load_full_taf(const char *fname, byte *hi_sp, taf_info *tinfo) {
speicher += size;
}
} else {
fcode = NOTTBF;
modul = DATEI;
error("load_full_taf error");
}
} else {
fcode = READFEHLER;
modul = DATEI;
error("load_full_taf error");
}
f.close();
} else {
fcode = OPENFEHLER;
modul = DATEI;
error("load_full_taf error");
}
} else {
fcode = ZEIGERFEHLER;
modul = GRAFIK;
error("load_full_taf error");
}
}
@ -272,29 +256,24 @@ void datei::load_korrektur(const char *fname, int16 *sp) {
if ((id == TAFDATEI) && (header->korrekt > 0)) {
f.seek(-((int)(header->count * sizeof(int16) * 2) * header->korrekt), SEEK_END);
if ((f.size() - f.pos() / 2) < (int16)(header->count * sizeof(int16) * 2)) {
fcode = READFEHLER;
modul = DATEI;
error("load_korrektur error");
} else {
for (int i = 0; i < header->count * 2; ++i)
*sp++ = f.readSint16LE();
}
} else {
fcode = NOTTBF;
modul = DATEI;
error("load_korrektur error");
}
} else {
fcode = READFEHLER;
modul = DATEI;
error("load_korrektur error");
}
f.close();
} else {
fcode = OPENFEHLER;
modul = DATEI;
error("load_korrektur error");
}
} else {
fcode = ZEIGERFEHLER;
modul = GRAFIK;
error("load_korrektur error");
}
}
@ -312,19 +291,16 @@ void datei::load_tff(const char *fname, byte *speicher) {
if (tff->load(&f)) {
uint32 size = tff->size;
if (f.read(speicher + sizeof(tff_header), size) != size) {
fcode = READFEHLER;
modul = DATEI;
error("load_tff error");
}
}
f.close();
} else {
fcode = OPENFEHLER;
modul = DATEI;
error("load_tff error");
}
} else {
fcode = ZEIGERFEHLER;
modul = GRAFIK;
error("load_tff error");
}
}
@ -382,17 +358,14 @@ uint32 datei::load_voc(Stream *handle, byte *speicher) {
rs->seek(-ChunkHead::SIZE(), SEEK_CUR);
if (!ch->load(rs)) {
modul = DATEI;
fcode = READFEHLER;
error("load_voc error");
} else {
if (ch->type == VOCDATEI) {
if (rs->read(speicher, ch->size) != ch->size) {
modul = DATEI;
fcode = READFEHLER;
error("load_voc error");
}
} else {
modul = DATEI;
fcode = NOTVOC;
error("load_voc error");
}
}
}
@ -407,14 +380,12 @@ void datei::void_load(const char *fname, byte *speicher, uint32 size) {
Common::File f;
if (f.open(filename)) {
if (!f.read(speicher, size)) {
modul = DATEI;
fcode = READFEHLER;
error("void_load error");
}
f.close();
} else {
fcode = OPENFEHLER;
modul = DATEI;
error("void_load error");
}
}
@ -426,15 +397,13 @@ uint32 datei::load_tmf(Stream *handle, tmf_header *song) {
if (rs) {
rs->seek(-ChunkHead::SIZE(), SEEK_CUR);
if (!ch->load(rs)) {
modul = DATEI;
fcode = READFEHLER;
error("load_tmf error");
} else {
if (ch->type == TMFDATEI) {
assert(ch->size > (uint32)tmf_header::SIZE());
if (!song->load(rs)) {
modul = DATEI;
fcode = READFEHLER;
error("load_tmf error");
} else {
size = ch->size + sizeof(tmf_header);
byte *speicher = (byte *)song + sizeof(tmf_header);
@ -447,8 +416,7 @@ uint32 datei::load_tmf(Stream *handle, tmf_header *song) {
}
}
} else {
modul = DATEI;
fcode = NOTTBF;
error("load_tmf error");
}
}
}
@ -504,13 +472,10 @@ uint32 datei::size(const char *fname, int16 typ) {
if ((id == TBFDATEI) || (id == TPFDATEI)) {
size = tbfheader->entpsize + 4;
} else {
fcode = NOTTBF;
modul = DATEI;
size = 0;
error("size error");
}
} else {
fcode = READFEHLER;
modul = DATEI;
error("size error");
}
break;
@ -522,13 +487,10 @@ uint32 datei::size(const char *fname, int16 typ) {
uint16 breite = pcxheader->bpz * pcxheader->planes;
size = (uint32)((long)hoehe) * ((long)breite) + 4;
} else {
fcode = NOTTBF;
modul = DATEI;
size = 0;
error("size error");
}
} else {
fcode = READFEHLER;
modul = DATEI;
error("size error");
}
break;
@ -539,12 +501,10 @@ uint32 datei::size(const char *fname, int16 typ) {
if (id == TFFDATEI) {
size = tff.size + sizeof(tff_header);
} else {
modul = DATEI;
fcode = NOTTBF;
error("size error");
}
} else {
modul = DATEI;
fcode = READFEHLER;
error("size error");
}
}
break;
@ -582,8 +542,7 @@ uint32 datei::size(const char *fname, int16 typ) {
f.close();
} else {
fcode = OPENFEHLER;
modul = DATEI;
error("size error");
size = 0;
}
@ -597,8 +556,7 @@ uint32 datei::get_poolsize(const char *fname, int16 chunk_start, int16 chunk_anz
Common::File f;
if (f.open(fname)) {
if (!Nph->load(&f)) {
modul = DATEI;
fcode = READFEHLER;
error("get_poolsize error");
} else {
if (!strncmp(Nph->id, "NGS", 3)) {
select_pool_item(&f, chunk_start);
@ -607,9 +565,7 @@ uint32 datei::get_poolsize(const char *fname, int16 chunk_start, int16 chunk_anz
for (int16 i = chunk_start; (i < Nph->PoolAnz) && (!modul) && i < (chunk_start + chunk_anz); i++) {
ChunkHead ch;
if (!ch.load(&f)) {
modul = DATEI;
fcode = READFEHLER;
size = 0;
error("get_poolsize error");
} else {
if (ch.size > size)
size = ch.size;
@ -622,8 +578,7 @@ uint32 datei::get_poolsize(const char *fname, int16 chunk_start, int16 chunk_anz
f.close();
} else {
fcode = OPENFEHLER;
modul = DATEI;
error("get_poolsize error");
}
return size;
@ -645,21 +600,15 @@ uint32 datei::get_tafinfo(const char *fname, taf_dateiheader **tafheader) {
size += ((uint32)sizeof(taf_info));
} else {
fcode = NOTTBF;
modul = DATEI;
size = 0;
error("get_tafinfo error");
}
} else {
fcode = NOTTBF;
modul = DATEI;
size = 0;
error("get_tafinfo error");
}
tafFile.close();
} else {
fcode = OPENFEHLER;
modul = DATEI;
size = 0;
error("get_tafinfo error");
}
return size;
@ -687,8 +636,7 @@ void datei::load_palette(const char *fname, byte *palette, int16 typ) {
strcat(filename, ".taf");
break;
default:
modul = DATEI;
fcode = NOTTBF;
error("load_palette error");
}
}
@ -704,12 +652,10 @@ void datei::load_palette(const char *fname, byte *palette, int16 typ) {
for (uint16 i = 0; i < 768; i++)
palette[i] = tbfheader->palette[i];
} else {
fcode = NOTTBF;
modul = DATEI;
error("load_palette error");
}
} else {
fcode = READFEHLER;
modul = DATEI;
error("load_palette error");
}
break;
@ -722,8 +668,7 @@ void datei::load_palette(const char *fname, byte *palette, int16 typ) {
if (zeichen == 12) {
f.seek(-768L, SEEK_END);
if ((chewy_fread(palette, 768, 1, &f)) != 1) {
fcode = PALETTEFEHLER;
modul = DATEI;
error("load_palette error");
} else {
uint16 j = 0;
for (uint16 i = 0; i < 255; i++) {
@ -734,17 +679,14 @@ void datei::load_palette(const char *fname, byte *palette, int16 typ) {
}
}
} else {
fcode = PALETTEFEHLER;
modul = DATEI;
error("load_palette error");
}
}
} else {
fcode = NOTTBF;
modul = DATEI;
error("load_palette error");
}
} else {
fcode = READFEHLER;
modul = DATEI;
error("load_palette error");
}
break;
@ -755,24 +697,20 @@ void datei::load_palette(const char *fname, byte *palette, int16 typ) {
for (uint16 i = 0; i < 768; i++)
palette[i] = tafheader->palette[i];
} else {
fcode = NOTTBF;
modul = DATEI;
error("load_palette error");
}
} else {
fcode = READFEHLER;
modul = DATEI;
error("load_palette error");
}
break;
default:
modul = DATEI;
fcode = NOTTBF;
error("load_palette error");
}
f.close();
} else {
fcode = OPENFEHLER;
modul = DATEI;
error("load_palette error");
}
}
}
@ -796,8 +734,7 @@ void datei::imsize(const char *fname, uint32 *svekt) {
next = iheader.next;
svekt[sprcount] = (uint32)iheader.width * (uint32)iheader.height;
} else {
fcode = READFEHLER;
modul = DATEI;
error("imsize error");
}
++sprcount;
}
@ -806,8 +743,7 @@ void datei::imsize(const char *fname, uint32 *svekt) {
f.close();
} else {
fcode = OPENFEHLER;
modul = DATEI;
error("imsize error");
}
}

View File

@ -38,7 +38,7 @@ static int strToInt(const char *s) {
uint tmp = 0;
int read = sscanf(s, "%xh", &tmp);
if (read < 1)
::error("strToInt failed on string \"%s\"", s);
error("strToInt failed on string \"%s\"", s);
return (int)tmp;
}

View File

@ -54,8 +54,6 @@ enum SetupScreenMode {
#define SOUND_SLOT_SIZE 500000
#define SPEECH_HALF_BUF 25000
#define ERROR if(modul) {error();}
#define JXDIFF 180
#define JYDIFF 150

View File

@ -177,22 +177,18 @@ void detail::load_rdi(const char *fname_, int16 room_nr) {
f.seek(room_nr * room_detail_info::SIZE(), SEEK_CUR);
if (!rdi.load(&f)) {
modul = DATEI;
fcode = READFEHLER;
error("load_rdi error");
}
} else {
modul = DATEI;
fcode = READFEHLER;
error("load_rdi error");
}
} else {
modul = DATEI;
fcode = READFEHLER;
error("load_rdi error");
}
f.close();
} else {
modul = DATEI;
fcode = OPENFEHLER;
error("load_rdi error");
}
rdi.dptr = tmprdi;
@ -253,12 +249,11 @@ void detail::load_taf_tbl(taf_info *fti) {
load_taf_seq(CurrentTaf, rdi.Ainfo[i].start_ani, (rdi.Ainfo[i].end_ani - rdi.Ainfo[i].start_ani) + 1, fti);
}
} else {
modul = DATEI;
fcode = OPENFEHLER;
error("load_taf_tbl error");
}
}
} else {
ERROR
error("load_taf_tbl error");
}
}
@ -285,8 +280,7 @@ taf_info *detail::init_taf_tbl(const char *fname_) {
if (CurrentTaf) {
load_sprite_pointer(CurrentTaf);
} else {
modul = DATEI;
fcode = OPENFEHLER;
error("init_taf_tbl error");
}
}
}
@ -350,8 +344,7 @@ void detail::load_taf_seq(Stream *stream, int16 spr_nr, int16 spr_anz, taf_info
rs->seek(iheader.next, SEEK_SET);
} else {
fcode = READFEHLER;
modul = DATEI;
error("load_taf_seq error");
}
}
}
@ -729,17 +722,13 @@ void detail::load_room_sounds(Stream *tvp_handle) {
}
if (allsize > SoundBufferSize) {
modul = SPEICHER;
fcode = NOSPEICHER;
err->set_user_msg("SFX-SIZE TOO LARGE");
break_flag = true;
error("load_room_sounds error");
}
}
}
}
} else {
modul = DATEI;
fcode = OPENFEHLER;
error("load_room_sounds error");
}
}
@ -974,18 +963,13 @@ void detail::load_taf_ani_sprite(int16 nr) {
if (taf_load_buffer)
mem->file->load_tafmcga(rs, iheader.komp, size, taf_load_buffer + 4l);
else {
modul = SPEICHER;
fcode = NOSPEICHER;
err->set_user_msg("Taf-Load-Puffer nicht initialisiert");
error("load_taf_ani_sprite error");
}
} else {
fcode = READFEHLER;
modul = DATEI;
error("load_taf_ani_sprite error");
}
} else {
fcode = OPENFEHLER;
modul = DATEI;
err->set_user_msg("Arbeitstaf nicht geöffnet");
error("load_taf_ani_sprite error");
}
}
@ -1004,15 +988,13 @@ void detail::load_sprite_pointer(Stream *stream) {
for (int16 i = 1; i < anzahl && !modul; i++) {
taf_imageheader iheader;
if (!iheader.load(rs)) {
fcode = READFEHLER;
modul = DATEI;
error("load_sprite_pointer error");
}
SpritePos[i] = iheader.next;
rs->seek(iheader.next, SEEK_SET);
}
} else {
modul = DATEI;
fcode = READFEHLER;
error("load_sprite_pointer error");
}
}
}

View File

@ -1,114 +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 3 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, see <http://www.gnu.org/licenses/>.
*
*/
#include "common/system.h"
#include "chewy/fehler.h"
#include "chewy/ngstypes.h"
namespace Chewy {
fehler *err;
fehler::fehler() {
language = ENGL;
memset(err_dat, 0, sizeof(err_dat));
memset(err_txt, 0, sizeof(err_txt));
modul = 0;
user_msg = nullptr;
}
fehler::~fehler() {
}
void fehler::msg() {
bool ok = true;
if (language == GERMAN) {
switch (modul) {
case 1:
warning(" Meldung des Grafikmoduls:");
break;
case 2:
warning("Meldung des Speichermoduls:");
break;
case 3:
warning("Meldung des Dateimoduls:");
break;
case 4:
warning("Meldung des Mausmoduls:");
break;
case 5:
warning("Meldung des Dialogmoduls:");
break;
default:
warning("Modul %d und Meldung %d sind mir nicht bekannt", modul, fcode);
ok = false;
break;
}
} else {
switch (modul) {
case 1:
warning("GRAPHICS ERROR:");
break;
case 2:
warning("ERROR FROM MEMORY MANAGER:");
break;
case 3:
warning("ERROR FROM FILER:");
break;
case 4:
warning("ERROR FROM MOUSE-HANDLER:");
break;
case 5:
warning("ERROR FROM DILOGUE:");
break;
default:
warning("MODUKE %d AND MESSAGE %d NOT KNOWN", modul, fcode);
ok = false;
break;
}
}
if (ok) {
warning("%s", err_txt);
if (user_msg) {
warning("%s", user_msg);
user_msg = nullptr;
}
}
}
void fehler::set_user_msg(const char *msg) {
user_msg = msg;
}
} // namespace Chewy

View File

@ -1,50 +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 3 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, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef CHEWY_FEHLER_H
#define CHEWY_FEHLER_H
namespace Chewy {
#define MAX_MODULE 6
#define GERMAN 1
#define ENGL 2
extern int16 modul;
extern int16 fcode;
class fehler {
public:
fehler();
~fehler();
void msg();
void set_user_msg(const char *msg);
Common::String get_user_msg() const { return user_msg; }
private:
char err_txt[120];
char err_dat[80];
int16 language;
const char *user_msg;
};
} // namespace Chewy
#endif

View File

@ -23,6 +23,7 @@
#include "chewy/events.h"
#include "chewy/file.h"
#include "chewy/global.h"
#include "chewy/resource.h"
namespace Chewy {
@ -151,14 +152,11 @@ int16 file_menue() {
char *tmp;
int16 text_off, active_slot;
int16 rect, line;
taf_info *ti;
taf_info *ti = mem->taf_adr(OPTION_TAF);
//SpriteResource *options = new SpriteResource(OPTION_TAF);
ret = 0;
room->open_handle("back/gbook.tgp", "rb", R_TGPDATEI);
ERROR
room->load_tgp(1, &room_blk, GBOOK_TGP, 0);
ERROR;
ti = mem->taf_adr(OPTION_TAF);
ERROR
out->setze_zeiger(workptr);
out->map_spr2screen(ablage[room_blk.AkAblage], 0, 0);
out->setze_zeiger(screen0);
@ -168,7 +166,6 @@ int16 file_menue() {
fnames = iog->io_init(&ioptr);
fnames += 1;
ERROR
if (!modul) {
x[0] = 1;
x[1] = 1;
@ -186,12 +183,22 @@ int16 file_menue() {
while (key != ESC) {
out->map_spr2screen(ablage[room_blk.AkAblage], 0, 0);
for (i = 28, j = 0; i < 35; i++, j++) {
#if 0
TAFChunk *sprite = options->getSprite(i);
// TODO: korrektur?
if (!mode[j])
out->sprite_set(sprite->data, 16 + /*ti->korrektur[i << 1] + */x[j],
76 + /*ti->korrektur[(i << 1) + 1] + */y[j], 0);
else
out->sprite_set(sprite->data, 16 /* + ti->korrektur[i << 1]*/,
76 /*+ ti->korrektur[(i << 1) + 1]*/, 0);
#endif
if (!mode[j])
out->sprite_set(ti->image[i], 16 + ti->korrektur[i << 1] + x[j],
76 + ti->korrektur[(i << 1) + 1] + y[j], 0);
76 + ti->korrektur[(i << 1) + 1] + y[j], 0);
else
out->sprite_set(ti->image[i], 16 + ti->korrektur[i << 1],
76 + ti->korrektur[(i << 1) + 1], 0);
76 + ti->korrektur[(i << 1) + 1], 0);
}
key = in->get_switch_code();
if (mode[2] || mode[3] || mode[8]) {
@ -342,11 +349,9 @@ int16 file_menue() {
tmp = fnames + ((text_off + active_slot) * 40);
if (tmp[0]) {
room->open_handle(&background[0], "rb", R_TGPDATEI);
ERROR
CurrentSong = -1;
iog->load(text_off + active_slot,
ioptr.save_path);
ERROR
key = ESC;
}
} else if (mode[2]) {
@ -361,7 +366,6 @@ int16 file_menue() {
if (key != 27) {
iog->save_entry(text_off + active_slot,
ioptr.save_path);
ERROR
}
key = 0;
}
@ -394,9 +398,7 @@ int16 file_menue() {
free(ti);
room->open_handle(&background[0], "rb", R_TGPDATEI);
ERROR
room->load_tgp(_G(spieler).PersonRoomNr[P_CHEWY], &room_blk, EPISODE1_TGP, GED_LOAD);
ERROR;
fx_blend = BLEND1;
room->set_ak_pal(&room_blk);
u_index = ged->ged_idx(spieler_vector[P_CHEWY].Xypos[0] + spieler_mi[P_CHEWY].HotX,
@ -423,7 +425,6 @@ void option_menue(taf_info *ti) {
int16 delay_count;
short bar_off;
room->load_tgp(0, &room_blk, GBOOK_TGP, 0);
ERROR;
out->setze_zeiger(workptr);
out->map_spr2screen(ablage[room_blk.AkAblage], 0, 0);
out->setze_zeiger(screen0);
@ -627,7 +628,6 @@ void option_menue(taf_info *ti) {
}
room->load_tgp(1, &room_blk, GBOOK_TGP, 0);
ERROR;
out->setze_zeiger(workptr);
out->map_spr2screen(ablage[room_blk.AkAblage], 0, 0);
out->setze_zeiger(screen0);

View File

@ -81,12 +81,12 @@ inline size_t chewy_ftell(Stream *stream) {
}
inline size_t chewy_fwrite(void *ptr, size_t size, size_t nmemb, Stream *stream) {
::error("TODO: chewy_fwrite");
error("TODO: chewy_fwrite");
return 0;
}
inline int chewy_fputc(byte c, Stream *stream) {
::error("TODO: chewy_fputc");
error("TODO: chewy_fputc");
return 0;
}

View File

@ -106,8 +106,7 @@ void flic::play(const char *fname, byte *vscreen, byte *load_p) {
play(lhandle, vscreen, load_p);
delete lhandle;
} else {
modul = DATEI;
fcode = OPENFEHLER;
error("flic error");
}
}
@ -128,8 +127,7 @@ int16 flic::play(Common::Stream *handle, byte *vscreen, byte *load_p) {
CurrentFrame = 0;
for (uint16 i = 0; (i < flic_header.frames) && (!modul) && (ret >= 0); i++) {
if (!frame_header.load(rs)) {
modul = DATEI;
fcode = READFEHLER;
error("flic error");
} else {
if (frame_header.type != PREFIX) {
size_t tmp_size = ((size_t)frame_header.size) - sizeof(FrameHead);
@ -138,8 +136,7 @@ int16 flic::play(Common::Stream *handle, byte *vscreen, byte *load_p) {
start += flic_header.speed;
if (tmp_size) {
if (rs->read(load_puffer, tmp_size) != tmp_size) {
modul = DATEI;
fcode = READFEHLER;
error("flic error");
} else {
ret = decode_frame();
}
@ -392,15 +389,13 @@ int16 flic::custom_play(CustomInfo *ci) {
for (uint16 i = 0; (i < custom_header.frames) && (!modul) && (ret >= 0); i++) {
if (!custom_frame.load(rs)) {
modul = DATEI;
fcode = READFEHLER;
error("flic error");
} else {
if ((custom_frame.type != PREFIX) && (custom_frame.type != CUSTOM)) {
uint32 start = g_system->getMillis() + custom_header.speed;
if (custom_frame.size) {
if (rs->read(load_puffer, custom_frame.size) != custom_frame.size) {
modul = DATEI;
fcode = READFEHLER;
error("flic error");
} else {
ret = decode_cframe();
}
@ -432,8 +427,7 @@ int16 flic::custom_play(CustomInfo *ci) {
}
}
} else {
modul = DATEI;
fcode = OPENFEHLER;
error("flic error");
}
return ret;
@ -446,8 +440,7 @@ void flic::decode_custom_frame(Common::SeekableReadStream *handle) {
for (uint16 i = 0; (i < custom_frame.chunks) && (!modul); i++) {
ChunkHead chead;
if (!chead.load(handle)) {
modul = DATEI;
fcode = READFEHLER;
error("flic error");
}
switch (chead.type) {
@ -464,16 +457,14 @@ void flic::decode_custom_frame(Common::SeekableReadStream *handle) {
case FADE_OUT:
if (!File::readArray(handle, &para[0], chead.size / 2)) {
modul = DATEI;
fcode = READFEHLER;
error("flic error");
} else
out->ausblenden(para[0]);
break;
case LOAD_MUSIC:
if (handle->read(Music, chead.size) != chead.size) {
modul = DATEI;
fcode = READFEHLER;
error("flic error");
} else {
byte *tmp = Music;
tmp += sizeof(tmf_header);
@ -503,8 +494,7 @@ void flic::decode_custom_frame(Common::SeekableReadStream *handle) {
case LOAD_VOC:
if (!File::readArray(handle, &para[0], 1) ||
handle->read(Sound, chead.size - 2) != (chead.size - 2)) {
modul = DATEI;
fcode = READFEHLER;
error("flic error");
} else {
sounds[para[0]] = Sound;
Ssize[para[0]] = chead.size - 2;
@ -582,8 +572,7 @@ void flic::decode_custom_frame(Common::SeekableReadStream *handle) {
case SET_MVOL:
if (!File::readArray(handle, &para[0], chead.size / 2)) {
modul = DATEI;
fcode = READFEHLER;
error("flic error");
} else
#ifndef AIL
snd->setMusicMasterVol(para[0]);
@ -610,8 +599,7 @@ void flic::decode_custom_frame(Common::SeekableReadStream *handle) {
case PLAY_VOC:
if (!File::readArray(handle, &para[0], chead.size / 2)) {
modul = DATEI;
fcode = READFEHLER;
error("flic error");
} else
#ifndef AIL
snd->playVoc(sounds[para[0]], para[1], para[2], para[3]);
@ -627,8 +615,7 @@ void flic::decode_custom_frame(Common::SeekableReadStream *handle) {
case SET_SVOL:
if (!File::readArray(handle, &para[0], chead.size / 2)) {
modul = DATEI;
fcode = READFEHLER;
error("flic error");
} else
#ifndef AIL
snd->setSoundMasterVol(para[0]);
@ -639,8 +626,7 @@ void flic::decode_custom_frame(Common::SeekableReadStream *handle) {
case SET_CVOL:
if (!File::readArray(handle, &para[0], chead.size / 2)) {
modul = DATEI;
fcode = READFEHLER;
error("flic error");
} else
#ifndef AIL
snd->setChannelVol((byte)para[0], (byte)para[1]);
@ -651,16 +637,14 @@ void flic::decode_custom_frame(Common::SeekableReadStream *handle) {
case FREE_EFFECT:
if (!File::readArray(handle, &para[0], chead.size / 2)) {
modul = DATEI;
fcode = READFEHLER;
error("flic error");
} else
free_sound(para[0]);
break;
case MFADE_IN:
if (!File::readArray(handle, &para[0], chead.size / 2)) {
modul = DATEI;
fcode = READFEHLER;
error("flic error");
} else
#ifndef AIL
snd->fadeIn(para[0]);
@ -671,8 +655,7 @@ void flic::decode_custom_frame(Common::SeekableReadStream *handle) {
case MFADE_OUT:
if (!File::readArray(handle, &para[0], chead.size / 2)) {
modul = DATEI;
fcode = READFEHLER;
error("flic error");
} else
#ifndef AIL
snd->fadeOut(para[0]);
@ -683,8 +666,7 @@ void flic::decode_custom_frame(Common::SeekableReadStream *handle) {
case SET_STEREO:
if (!File::readArray(handle, &para[0], chead.size / 2)) {
modul = DATEI;
fcode = READFEHLER;
error("flic error");
} else
#ifdef AIL
ailsnd->setStereoPos(para[0], para[1]);

View File

@ -22,7 +22,6 @@
#include "common/file.h"
#include "chewy/chewy.h"
#include "chewy/gedclass.h"
#include "chewy/fehler.h"
#include "chewy/ngshext.h"
namespace Chewy {
@ -32,9 +31,7 @@ void gedclass::load_ged_pool(const char *fname, GedChunkHeader *Gh, int16 ch_nr,
if (f.open(fname)) {
load_ged_pool(&f, Gh, ch_nr, speicher);
} else {
modul = 3;
fcode = 0;
err->set_user_msg("GED POOL");
error("load_ged_pool error");
}
}
@ -45,9 +42,7 @@ void gedclass::load_ged_pool(Common::SeekableReadStream *stream, GedChunkHeader
load_ged_chunk(Gh, stream, ch_nr, speicher);
}
} else {
modul = 3;
fcode = 0;
err->set_user_msg("GED POOL");
error("load_ged_pool error");
}
}
@ -72,9 +67,7 @@ void gedclass::load_ged_chunk(GedChunkHeader *Gh, Common::SeekableReadStream *st
}
}
} else {
modul = 3;
fcode = 0;
err->set_user_msg("GED FILE");
error("load_ged_chunk error");
}
}

View File

@ -359,7 +359,6 @@ void standard_init();
void get_detect(char *fname);
void error();
void tidy();
void init_load();

View File

@ -34,7 +34,6 @@ static void font_load();
void standard_init() {
mem = new memory();
out = new mcga_grafik();
err = new fehler();
in = new maus();
fx = new effect();
txt = new text();
@ -193,10 +192,7 @@ void init_room() {
strcpy(room_blk.RoomDir, "room/");
room->open_handle(&background[0], "rb", R_TGPDATEI);
ERROR
room->open_handle(&backged[0], "rb", R_GEPDATEI);
ERROR
}
void init_atds() {
@ -210,33 +206,18 @@ void init_atds() {
// New set up
Stream *handle = atds->pool_handle(ATDS_TXT, "rb");
ERROR
atds->set_handle(ATDS_TXT, ATS_DATEI, handle, ATS_TAP_OFF, ATS_TAP_MAX);
ERROR
atds->init_ats_mode(ATS_DATEI, _G(spieler).Ats);
atds->set_handle(ATDS_TXT, INV_ATS_DATEI, handle, INV_TAP_OFF, INV_TAP_MAX);
ERROR
atds->init_ats_mode(INV_ATS_DATEI, _G(spieler).InvAts);
atds->set_handle(ATDS_TXT, AAD_DATEI, handle, AAD_TAP_OFF, AAD_TAP_MAX);
ERROR
atds->set_handle(ATDS_TXT, ADS_DATEI, handle, ADS_TAP_OFF, ADS_TAP_MAX);
ERROR
atds->set_handle(ATDS_TXT, INV_USE_DATEI, handle, USE_TAP_OFF, USE_TAP_MAX);
ERROR
atds->init_ats_mode(INV_USE_DATEI, _G(spieler).InvUse);
atds->init_ats_mode(INV_USE_DEF, _G(spieler).InvUseDef);
atds->open_handle(INV_USE_IDX, "rb", INV_IDX_DATEI);
ERROR
mem->file->fcopy(ADSH_TMP, "txt/diah.adh");
atds->open_handle(ADSH_TMP, "rb", 3);
ERROR
_G(spieler).AadSilent = 10;
_G(spieler).DelaySpeed = 5;
spieler_vector[P_CHEWY].Delay = _G(spieler).DelaySpeed;
@ -244,7 +225,6 @@ void init_atds() {
for (int16 i = 0; i < AAD_MAX_PERSON; i++)
atds->set_split_win(i, &ssi[i]);
atds->set_string_end_func(&atds_string_start);
ERROR
}
void new_game() {
@ -260,48 +240,36 @@ void new_game() {
_G(spieler).room_e_obj[i].RoomNr = -1;
obj->load(INVENTAR_IIB, &_G(spieler).room_m_obj[0]);
ERROR
obj->load(INVENTAR_SIB, &_G(spieler).room_s_obj[0]);
ERROR
obj->load(EXIT_EIB, &_G(spieler).room_e_obj[0]);
ERROR
byte *tmp = (byte *)MALLOC(ROOM_ATS_MAX);
ERROR
Common::File f;
if (f.open(ROOM_ATS_STEUER)) {
if (!f.read(tmp, ROOM_ATS_MAX)) {
modul = DATEI;
fcode = READFEHLER;
error("new_game error");
}
f.close();
} else {
modul = DATEI;
fcode = OPENFEHLER;
error("new_game error");
}
ERROR
for (int16 i = 0; i < ROOM_ATS_MAX; i++)
_G(spieler).Ats[i * MAX_ATS_STATUS] = (uint8)tmp[i];
free(tmp);
tmp = (byte *)MALLOC(MAX_MOV_OBJ);
ERROR
if (f.open(INV_ATS_STEUER)) {
if (!f.read(tmp, MAX_MOV_OBJ)) {
modul = DATEI;
fcode = READFEHLER;
error("new_game error");
}
f.close();
} else {
modul = DATEI;
fcode = OPENFEHLER;
error("new_game error");
}
ERROR
for (int16 i = 0; i < MAX_MOV_OBJ; i++)
_G(spieler).InvAts[i * MAX_ATS_STATUS] = (uint8)tmp[i];
@ -323,7 +291,6 @@ static void font_load() {
// Load the 8x8 font
mem->tff_adr(FONT8x8, &font8x8);
ERROR
out->set_fontadr(font8x8);
out->get_fontinfo(&vorx, &vory, &fntbr, &fnth);
@ -332,7 +299,6 @@ static void font_load() {
// Load the 6x8 font
mem->tff_adr(FONT6x8, &font6x8);
ERROR
out->set_fontadr(font6x8);
out->get_fontinfo(&vorx, &vory, &fntbr, &fnth);
fvorx6x8 = vorx - 2;
@ -347,23 +313,15 @@ void init_load() {
load_chewy_taf(CHEWY_NORMAL);
spz_taf_handle = room->open_handle(CH_SPZ_FILE, "rb", R_SPEZTAF);
err->set_user_msg("Chewy Spezial Taf");
ERROR
spz_akt_id = -1;
spz_tinfo = nullptr;
set_spz_delay(3);
menutaf = mem->taf_adr(MENUTAF);
ERROR
mem->file->get_tafinfo(MENUTAF, &tafheader);
ERROR
spblende = mem->void_adr("cut/blende.rnd");
ERROR
room->load_room(&room_blk, room_start_nr, &_G(spieler));
ERROR
out->set_palette(pal);
}
@ -373,28 +331,14 @@ void get_detect(char *fname_) {
Stream *handle = chewy_fopen(fname_, "rb");
if (handle) {
if (!chewy_fread(&detect, sizeof(DetectInfo), 1, handle)) {
modul = DATEI;
fcode = READFEHLER;
error("get_detect error");
}
chewy_fclose(handle);
} else {
modul = DATEI;
fcode = OPENFEHLER;
error("get_detect error");
}
}
void error() {
in->alter_kb_handler();
out->rest_palette();
out->restore_mode();
Common::String msg = err->get_user_msg();
err->msg();
tidy();
::error("%s", msg.c_str());
}
void tidy() {
sound_exit();
in->alter_kb_handler();
@ -417,7 +361,6 @@ void tidy() {
delete txt;
delete fx;
delete in;
delete err;
delete out;
delete mem;
@ -436,7 +379,6 @@ void tidy() {
txt = nullptr;
fx = nullptr;
in = nullptr;
err = nullptr;
out = nullptr;
mem = nullptr;
}
@ -467,7 +409,6 @@ void sound_init() {
flags.InitSound = true;
voc_handle = room->open_handle(DETAIL_TVP, "rb", R_VOCDATEI);
ERROR
det->set_sound_area(Ci.SoundSlot, SOUND_SLOT_SIZE);
music_handle = room->get_sound_handle();
@ -478,18 +419,14 @@ void sound_init() {
EndOfPool = 0;
NewPhead Nph;
if (!Nph.load(rs)) {
modul = DATEI;
fcode = READFEHLER;
error("sound_init error");
} else {
EndOfPool = Nph.PoolAnz - 1;
}
ERROR
speech_handle = chewy_fopen(SPEECH_TVP, "rb");
if (!speech_handle) {
modul = DATEI;
fcode = OPENFEHLER;
err->set_user_msg("speech.tvp");
error("Error opening speech.tvp");
} else {
ailsnd->initDoubleBuffer(SpeechBuf[0], SpeechBuf[1], SPEECH_HALF_BUF, 0);
atds->set_speech_handle(speech_handle);

View File

@ -98,23 +98,16 @@ void game_main() {
void alloc_buffers() {
workpage = (byte *)MALLOC(64004l);
ERROR
pal = (byte *)MALLOC(768l);
ERROR
cur_back = (byte *)MALLOC(16 * 16 + 4);
ERROR;
Ci.VirtScreen = workpage;
Ci.TempArea = (byte *)MALLOC(64004l);
ERROR;
det->set_taf_ani_mem(Ci.TempArea);
Ci.MusicSlot = (byte *)MALLOC(MUSIC_SLOT_SIZE);
Ci.MaxMusicSize = MUSIC_SLOT_SIZE;
ERROR;
Ci.SoundSlot = (byte *)MALLOC(SOUND_SLOT_SIZE);
Ci.MaxSoundSize = SOUND_SLOT_SIZE;
ERROR;
SpeechBuf[0] = (byte *)MALLOC(SPEECH_HALF_BUF * 2);
ERROR
SpeechBuf[1] = SpeechBuf[0] + SPEECH_HALF_BUF;
}
@ -1860,7 +1853,6 @@ void calc_ausgang(int16 x, int16 y) {
exit_room(nr);
_G(spieler).PersonRoomNr[P_CHEWY] = _G(spieler).room_e_obj[nr].Exit;
room->load_room(&room_blk, _G(spieler).PersonRoomNr[P_CHEWY], &_G(spieler));
ERROR
set_person_pos(Rdi->AutoMov[_G(spieler).room_e_obj[nr].ExitMov].X -
spieler_mi[_G(auto_p_nr)].HotMovX,
Rdi->AutoMov[_G(spieler).room_e_obj[nr].ExitMov].Y - spieler_mi[_G(auto_p_nr)].HotMovY
@ -2091,7 +2083,7 @@ ChewyFont::ChewyFont(Common::String filename) {
uint32 header = stream.readUint32BE();
if (header != headerFont)
::error("Invalid resource - %s", filename.c_str());
error("Invalid resource - %s", filename.c_str());
stream.skip(4); // total memory
_count = stream.readUint16LE();

View File

@ -105,8 +105,7 @@ taf_seq_info *memory::taf_seq_adr(Stream *stream, int16 image_start,
rs->seek(iheader.next, SEEK_SET);
} else {
modul = DATEI;
fcode = READFEHLER;
error("taf_seq_adr error");
}
}
if (!modul) {
@ -139,16 +138,14 @@ taf_seq_info *memory::taf_seq_adr(Stream *stream, int16 image_start,
rs->seek(iheader.next, SEEK_SET);
sp_ptr += size;
} else {
modul = DATEI;
fcode = READFEHLER;
error("taf_seq_adr error");
}
}
if (!modul) {
rs->seek((-(int)(((header.count * 2) - image_start) * sizeof(uint32))), SEEK_END);
if ((rs->size() - rs->pos()) < (int)image_anz * 4) {
fcode = READFEHLER;
modul = DATEI;
error("taf_seq_adr error");
} else {
int16 *p = ts_info->korrektur;
for (i = 0; i < (int)image_anz * 2; ++i, ++p)
@ -160,16 +157,13 @@ taf_seq_info *memory::taf_seq_adr(Stream *stream, int16 image_start,
}
}
} else {
fcode = NOTTBF;
modul = DATEI;
error("taf_seq_adr error");
}
} else {
fcode = NOTTBF;
modul = DATEI;
error("taf_seq_adr error");
}
} else {
modul = DATEI;
fcode = READFEHLER;
error("taf_seq_adr error");
}
return ts_info;

View File

@ -11,7 +11,6 @@ MODULE_OBJS = \
effect.o \
events.o \
events_base.o \
fehler.o \
file.o \
flic.o \
gedclass.o \

View File

@ -119,16 +119,6 @@ namespace Chewy {
#define GRAFIK 1
#define SPEICHER 2
#define DATEI 3
#define OPENFEHLER 0
#define READFEHLER 1
#define WRITEFEHLER 2
#define CLOSEFEHLER 3
#define ZEIGERFEHLER 3
#define NOTPCX 7
#define PALETTEFEHLER 6
#define NOTTBF 7
#define NOTSBI 8
#define NOTVOC 9
#define MOD15 10
#define TYPE_ANZ 27
#define PCXDATEI 0

View File

@ -24,7 +24,6 @@
#include "chewy/memory.h"
#include "chewy/mcga.h"
#include "chewy/fehler.h"
#include "chewy/mouse.h"
#include "chewy/io_game.h"
@ -42,7 +41,6 @@ class sblaster;
extern mcga_grafik *out;
extern memory *mem;
extern fehler *err;
extern maus *in;
extern sblaster *snd;
extern io_game *iog;

View File

@ -75,8 +75,7 @@ int16 objekt::load(const char *fname_, RoomMovObjekt *rmo) {
if (f.open(fname_)) {
if (!iib_datei_header.load(&f)) {
fcode = READFEHLER;
modul = DATEI;
error("objekt::load error");
} else if (!scumm_strnicmp(iib_datei_header.Id, "IIB", 3)) {
if (iib_datei_header.Size) {
assert(iib_datei_header.Size % RoomMovObjekt::SIZE() == 0);
@ -87,22 +86,19 @@ int16 objekt::load(const char *fname_, RoomMovObjekt *rmo) {
}
if (!valid) {
fcode = READFEHLER;
modul = DATEI;
error("objekt::load error");
} else {
max_inventar_obj = (int16)iib_datei_header.Size / RoomMovObjekt::SIZE();
}
} else
max_inventar_obj = 0;
} else {
fcode = READFEHLER;
modul = DATEI;
error("objekt::load error");
}
f.close();
} else {
fcode = OPENFEHLER;
modul = DATEI;
error("objekt::load error");
}
return max_inventar_obj;
@ -114,8 +110,7 @@ int16 objekt::load(const char *fname_, RoomStaticInventar *rsi) {
if (f.open(fname_)) {
if (!sib_datei_header.load(&f)) {
fcode = READFEHLER;
modul = DATEI;
error("objekt::load error");
} else if (!scumm_strnicmp(sib_datei_header.Id, "SIB", 3)) {
if (sib_datei_header.Anz) {
for (int i = 0; i < sib_datei_header.Anz && valid; ++i, ++rsi) {
@ -123,22 +118,19 @@ int16 objekt::load(const char *fname_, RoomStaticInventar *rsi) {
}
if (!valid) {
fcode = READFEHLER;
modul = DATEI;
error("objekt::load error");
} else {
max_static_inventar = sib_datei_header.Anz;
}
} else
max_static_inventar = 0;
} else {
fcode = READFEHLER;
modul = DATEI;
error("objekt::load error");
}
f.close();
} else {
fcode = OPENFEHLER;
modul = DATEI;
error("objekt::load error");
}
return max_static_inventar;
@ -150,8 +142,7 @@ int16 objekt::load(const char *fname_, RoomExit *RoomEx) {
if (f.open(fname_)) {
if (!eib_datei_header.load(&f)) {
fcode = READFEHLER;
modul = DATEI;
error("objekt::load error");
} else if (!scumm_strnicmp(eib_datei_header.Id, "EIB", 3)) {
if (sib_datei_header.Anz) {
for (int i = 0; i < eib_datei_header.Anz && valid; ++i, ++RoomEx) {
@ -159,22 +150,19 @@ int16 objekt::load(const char *fname_, RoomExit *RoomEx) {
}
if (!valid) {
fcode = READFEHLER;
modul = DATEI;
error("objekt::load error");
} else {
max_exit = eib_datei_header.Anz;
}
} else
max_exit = 0;
} else {
fcode = READFEHLER;
modul = DATEI;
error("objekt::load error");
}
f.close();
} else {
fcode = OPENFEHLER;
modul = DATEI;
error("objekt::load error");
}
return max_exit;
@ -563,7 +551,6 @@ int16 objekt::is_exit(int16 mouse_x, int16 mouse_y) {
int16 ret;
int16 i;
ret = -1;
for (i = 0; i < max_exit && ret == -1; i++) {
if (Re[i].RoomNr == Player->PersonRoomNr[P_CHEWY]) {
if (mouse_x >= Re[i].X &&
@ -574,7 +561,6 @@ int16 objekt::is_exit(int16 mouse_x, int16 mouse_y) {
}
}
}
return ret;
}

View File

@ -312,7 +312,6 @@ void enter_room(int16 eib_nr) {
if ((!modul) && (flags.InitSound))
load_room_music(_G(spieler).PersonRoomNr[P_CHEWY]);
ERROR
load_chewy_taf(_G(spieler).ChewyAni);
atds->stop_aad();
atds->stop_ats();
@ -1085,7 +1084,6 @@ void flic_cut(int16 nr, int16 mode) {
#endif
}
}
ERROR
ailsnd->fadeOut(0);
out->ausblenden(1);
out->cls();
@ -1771,7 +1769,6 @@ void flic_cut(int16 nr, int16 mode) {
break;
}
ERROR
#else
playVideo(nr < 1000 ? nr : nr - 1000);
#endif
@ -1781,12 +1778,9 @@ void flic_cut(int16 nr, int16 mode) {
chewy_fclose(Ci.Handle);
} else {
fcode = OPENFEHLER;
modul = DATEI;
error("flic_cut error");
}
ERROR
ailsnd->endSound();
g_events->delay(50);
ailsnd->setSoundMasterVol(_G(spieler).SoundVol);
@ -1794,9 +1788,7 @@ void flic_cut(int16 nr, int16 mode) {
if (nr < 1000 && nr != 135) {
load_room_music(_G(spieler).PersonRoomNr[0]);
ERROR
room->load_sound();
ERROR
if (_G(spieler).SpeechSwitch)
det->enable_room_sound();

View File

@ -21,6 +21,7 @@
#include "chewy/defines.h"
#include "chewy/global.h"
#include "chewy/resource.h"
#include "chewy/room.h"
#include "chewy/ngshext.h"
@ -53,9 +54,7 @@ Stream *Room::open_handle(const char *fname1, const char *fmode, int16 mode) {
close_handle(mode);
roomhandle[mode] = stream;
} else {
modul = DATEI;
fcode = OPENFEHLER;
err->set_user_msg(fname1);
error("open_handle error");
}
return roomhandle[mode];
@ -72,7 +71,6 @@ void Room::load_room(RaumBlk *Rb, int16 room_nr, Spieler *player) {
clear_prog_ani();
det->load_rdi(Rb->DetFile, room_nr);
ERROR
load_sound();
if (player->SoundSwitch == false)
@ -91,10 +89,7 @@ void Room::load_room(RaumBlk *Rb, int16 room_nr, Spieler *player) {
}
if (!modul) {
obj->calc_all_static_detail();
ERROR
load_tgp(room_info->BildNr, Rb, EPISODE1_TGP, GED_LOAD);
ERROR
set_pal(AblagePal[Rb->AkAblage], Rb->LowPalMem);
calc_invent(Rb, player);
@ -238,6 +233,8 @@ void Room::calc_invent(RaumBlk *Rb, Spieler *player) {
}
int16 Room::load_tgp(int16 nr, RaumBlk *Rb, int16 tgp_idx, int16 mode) {
//BackgroundResource *res = new BackgroundResource();
Common::SeekableReadStream *rs = dynamic_cast<Common::SeekableReadStream *>(roomhandle[R_TGPDATEI]);
tbf_dateiheader tb;
bool ret = false;
@ -246,8 +243,7 @@ int16 Room::load_tgp(int16 nr, RaumBlk *Rb, int16 tgp_idx, int16 mode) {
mem->file->select_pool_item(rs, nr);
if (!tb.load(rs)) {
modul = DATEI;
fcode = READFEHLER;
error("Error reading from room data");
}
if (!modul) {
@ -274,19 +270,16 @@ int16 Room::load_tgp(int16 nr, RaumBlk *Rb, int16 tgp_idx, int16 mode) {
GedXAnz[Rb->AkAblage] = tmp[0] / GedInfo[Rb->AkAblage].X;
GedYAnz[Rb->AkAblage] = tmp[1] / GedInfo[Rb->AkAblage].Y;
} else {
modul = DATEI;
fcode = READFEHLER;
error("load_tgp error");
}
}
} else {
modul = DATEI;
fcode = READFEHLER;
error("load_tgp error");
}
}
}
} else {
modul = DATEI;
fcode = OPENFEHLER;
error("load_tgp error");
}
return ret;
@ -309,7 +302,6 @@ void Room::init_ablage() {
} else {
AkAblage = -1;
Ablage[0] = 0;
ERROR
}
}
@ -498,14 +490,13 @@ void load_chewy_taf(int16 taf_nr) {
_G(spieler).ChewyAni = taf_nr;
AkChewyTaf = taf_nr;
chewy = mem->taf_adr(fname_);
ERROR
taf_dateiheader *tafheader;
mem->file->get_tafinfo(fname_, &tafheader);
if (!modul) {
chewy_kor = chewy->korrektur;
} else {
error();
error("load_chewy_taf error");
}
}
}
@ -516,8 +507,6 @@ void switch_room(int16 nr) {
exit_room(-1);
_G(spieler).PersonRoomNr[P_CHEWY] = nr;
room->load_room(&room_blk, _G(spieler).PersonRoomNr[P_CHEWY], &_G(spieler));
ERROR
enter_room(-1);
set_up_screen(DO_SETUP);
}