enable loading player files of either byte order

This commit is contained in:
Bradley Bell 2003-02-21 12:30:21 +00:00
parent 3fb2d45083
commit faa57772d5
2 changed files with 27 additions and 0 deletions

View file

@ -1,3 +1,7 @@
2003-02-21 Bradley Bell <btb@icculus.org>
* main/playsave.c: enable loading player files of either byte
order
2003-02-20 Bradley Bell <btb@icculus.org>
* main/bm.c, main/bm.h, main/endlevel.c: fixed up endlevel stuff

View file

@ -529,6 +529,7 @@ int read_player_file()
int errno_ret = EZERO;
int id,player_file_version,i;
int rewrite_it=0;
int swap;
Assert(Player_num>=0 && Player_num<MAX_PLAYERS);
@ -565,6 +566,9 @@ int read_player_file()
player_file_version = file_read_short(file);
if (player_file_version > 255) // bigendian file?
swap = 1;
if (player_file_version<COMPATIBLE_PLAYER_FILE_VERSION) {
nm_messagebox(TXT_ERROR, 1, TXT_OK, TXT_ERROR_PLR_VERSION);
fclose(file);
@ -574,6 +578,12 @@ int read_player_file()
Game_window_w = file_read_short(file);
Game_window_h = file_read_short(file);
if (swap) {
player_file_version = SWAPSHORT(player_file_version);
Game_window_w = SWAPSHORT(Game_window_w);
Game_window_h = SWAPSHORT(Game_window_h);
}
Player_default_difficulty = file_read_byte(file);
Default_leveling_on = file_read_byte(file);
Reticle_on = file_read_byte(file);
@ -602,6 +612,9 @@ int read_player_file()
//read new highest level info
n_highest_levels = file_read_short(file);
if (swap)
n_highest_levels = SWAPSHORT(n_highest_levels);
if (fread(highest_levels,sizeof(hli),n_highest_levels,file) != n_highest_levels) {
errno_ret = errno;
fclose(file);
@ -658,6 +671,10 @@ int read_player_file()
{
Cockpit_3d_view[0]=file_read_int(file);
Cockpit_3d_view[1]=file_read_int(file);
if (swap) {
Cockpit_3d_view[0] = SWAPINT(Cockpit_3d_view[0]);
Cockpit_3d_view[1] = SWAPINT(Cockpit_3d_view[1]);
}
}
@ -672,6 +689,10 @@ int read_player_file()
#ifdef NETWORK
Netlife_kills=file_read_int (file);
Netlife_killed=file_read_int (file);
if (swap) {
Netlife_kills = SWAPINT(Netlife_kills);
Netlife_killed = SWAPINT(Netlife_killed);
}
#else
file_read_int(file); file_read_int(file);
#endif
@ -686,6 +707,8 @@ int read_player_file()
if (player_file_version>=23)
{
i=file_read_int (file);
if (swap)
i = SWAPINT(i);
#ifdef NETWORK
mprintf ((0,"Reading: lifetime checksum is %d\n",i));
if (i!=get_lifetime_checksum (Netlife_kills,Netlife_killed))