diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2009-06-15 13:16:33 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2009-06-15 13:16:33 +0000 |
| commit | 57b2c49d571ac160d03b9bc30b6eb72976bfe82a (patch) | |
| tree | 9e39336ac1976472b2a6a4fd69fa8e3b7f41bd9e /src/engine | |
| parent | feade98dae813a1cdff48c4f15b3c01fb1fd3e8d (diff) | |
| download | zcatch-57b2c49d571ac160d03b9bc30b6eb72976bfe82a.tar.gz zcatch-57b2c49d571ac160d03b9bc30b6eb72976bfe82a.zip | |
fixed so that the demo player doesn't crash when the map isn't found
Diffstat (limited to 'src/engine')
| -rw-r--r-- | src/engine/client/ec_client.c | 15 | ||||
| -rw-r--r-- | src/engine/e_if_client.h | 2 |
2 files changed, 13 insertions, 4 deletions
diff --git a/src/engine/client/ec_client.c b/src/engine/client/ec_client.c index 07117b37..e741958f 100644 --- a/src/engine/client/ec_client.c +++ b/src/engine/client/ec_client.c @@ -1902,9 +1902,10 @@ static void con_addfavorite(void *result, void *user_data) client_serverbrowse_addfavorite(addr); } -void client_demoplayer_play(const char *filename) +const char *client_demoplayer_play(const char *filename) { int crc; + const char *error; client_disconnect(); netclient_error_string_reset(net); @@ -1912,14 +1913,20 @@ void client_demoplayer_play(const char *filename) demorec_playback_registercallbacks(client_democallback_snapshot, client_democallback_message); if(demorec_playback_load(filename)) - return; + return "error loading demo"; /* load map */ crc = (demorec_playback_info()->header.crc[0]<<24)| (demorec_playback_info()->header.crc[1]<<16)| (demorec_playback_info()->header.crc[2]<<8)| (demorec_playback_info()->header.crc[3]); - client_load_map_search(demorec_playback_info()->header.map, crc); + error = client_load_map_search(demorec_playback_info()->header.map, crc); + if(error) + { + client_disconnect_with_reason(error); + return error; + } + modc_connected(); /* setup buffers */ @@ -1943,6 +1950,8 @@ void client_demoplayer_play(const char *filename) demorec_playback_play(); modc_entergame(); + + return 0; } static void con_play(void *result, void *user_data) diff --git a/src/engine/e_if_client.h b/src/engine/e_if_client.h index 319c3dea..86c6f5fc 100644 --- a/src/engine/e_if_client.h +++ b/src/engine/e_if_client.h @@ -567,7 +567,7 @@ typedef struct DEMOPLAYBACK_INFO float speed; } DEMOPLAYBACK_INFO; -void client_demoplayer_play(const char *filename); +const char *client_demoplayer_play(const char *filename); const DEMOPLAYBACK_INFO *client_demoplayer_getinfo(); void client_demoplayer_setpos(float percent); void client_demoplayer_setpause(int paused); |