Don't crash if sound effect file doesn't exist

svn-id: r6327
This commit is contained in:
Travis Howell 2003-01-03 12:33:53 +00:00
parent 3a4782f166
commit 5111eede5e
3 changed files with 12 additions and 9 deletions

View File

@ -94,7 +94,7 @@ static const char *const opcode_arg_table_simon2dos[256] = {
" ", " ", "BT ", " ", "B " " ", " ", "BT ", " ", "B "
}; };
bool SimonState::loadGamePcFile(const char *filename) void SimonState::loadGamePcFile(const char *filename)
{ {
File * in = new File(); File * in = new File();
int num_inited_objects; int num_inited_objects;
@ -159,8 +159,6 @@ bool SimonState::loadGamePcFile(const char *filename)
error("Out of memory for strip text list"); error("Out of memory for strip text list");
in->read(_stripped_txt_mem, file_size); in->read(_stripped_txt_mem, file_size);
in->close(); in->close();
return true;
} }
void SimonState::readGamePcText(File *in) void SimonState::readGamePcText(File *in)

View File

@ -828,7 +828,7 @@ void SimonState::loadTablesIntoMem(uint subr_id)
warning("loadTablesIntoMem: didn't find %d", subr_id); warning("loadTablesIntoMem: didn't find %d", subr_id);
} }
void SimonState::readSting(uint a) bool SimonState::readSting(uint a)
{ {
char filename[11]; char filename[11];
uint16 size; uint16 size;
@ -839,8 +839,10 @@ void SimonState::readSting(uint a)
_mus_file->open(filename, _gameDataPath); _mus_file->open(filename, _gameDataPath);
if (!_mus_file->isOpen()) if (!_mus_file->isOpen()) {
return; warning("Can't load sound effect from '%s'", filename);
return false;
}
size = _mus_file->readUint16LE(); size = _mus_file->readUint16LE();
@ -850,6 +852,8 @@ void SimonState::readSting(uint a)
if (_mus_file->read(_mus_offsets, size) != size) if (_mus_file->read(_mus_offsets, size) != size)
error("Cannot read offsets"); error("Cannot read offsets");
return true;
} }
void SimonState::playSting(uint a) void SimonState::playSting(uint a)
@ -857,7 +861,8 @@ void SimonState::playSting(uint a)
if (!midi._midi_sfx_toggle) if (!midi._midi_sfx_toggle)
return; return;
readSting(_midi_sfx); if (!readSting(_midi_sfx))
return;
midi.shutdown(); midi.shutdown();
_mus_file->seek(_mus_offsets[a], SEEK_SET); _mus_file->seek(_mus_offsets[a], SEEK_SET);

View File

@ -103,7 +103,7 @@ public:
File *_mus_file; File *_mus_file;
uint16 *_mus_offsets; uint16 *_mus_offsets;
void SimonState::readSting(uint a); bool SimonState::readSting(uint a);
void SimonState::playSting(uint a); void SimonState::playSting(uint a);
byte *_vc_ptr; /* video code ptr */ byte *_vc_ptr; /* video code ptr */
@ -363,7 +363,7 @@ public:
void readGamePcText(File *in); void readGamePcText(File *in);
void readItemChildren(File *in, Item *item, uint tmp); void readItemChildren(File *in, Item *item, uint tmp);
void readItemFromGamePc(File *in, Item *item); void readItemFromGamePc(File *in, Item *item);
bool loadGamePcFile(const char *filename); void loadGamePcFile(const char *filename);
byte *allocateItem(uint size); byte *allocateItem(uint size);
byte *allocateTable(uint size); byte *allocateTable(uint size);