fixed demo playback Afterburner gauge and Primary weapon ammo info

This commit is contained in:
zicodxx 2007-02-08 02:43:55 +00:00
parent 068c023f3b
commit 1423ebb324
2 changed files with 35 additions and 25 deletions

View file

@ -1,5 +1,9 @@
D2X-Rebirth Changelog D2X-Rebirth Changelog
20070208
--------
main/newdemo.c: fixed demo playback Afterburner gauge and Primary weapon ammo info
20070207 20070207
-------- --------
main/movie.c: close EXTRA_ROBOT_LIB correctly main/movie.c: close EXTRA_ROBOT_LIB correctly

View file

@ -1893,48 +1893,50 @@ int newdemo_read_frame_information()
} }
case ND_EVENT_PLAYER_ENERGY: { case ND_EVENT_PLAYER_ENERGY: {
sbyte energy; ubyte energy;
sbyte old_energy; ubyte old_energy;
nd_read_byte((sbyte *)&old_energy);
nd_read_byte((sbyte *)&energy);
nd_read_byte(&old_energy);
nd_read_byte(&energy);
if (nd_bad_read) {done = -1; break; } if (nd_bad_read) {done = -1; break; }
if ((Newdemo_vcr_state == ND_STATE_PLAYBACK) || (Newdemo_vcr_state == ND_STATE_FASTFORWARD) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEFORWARD)) { if ((Newdemo_vcr_state == ND_STATE_PLAYBACK) || (Newdemo_vcr_state == ND_STATE_FASTFORWARD) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEFORWARD)) {
Players[Player_num].energy = i2f(energy); Players[Player_num].energy = i2f(energy);
} else if ((Newdemo_vcr_state == ND_STATE_REWINDING) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEBACKWARD)) { } else if ((Newdemo_vcr_state == ND_STATE_REWINDING) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEBACKWARD)) {
if (old_energy != -128) if (old_energy != 255)
Players[Player_num].energy = i2f(old_energy); Players[Player_num].energy = i2f(old_energy);
} }
break; break;
} }
case ND_EVENT_PLAYER_AFTERBURNER: { case ND_EVENT_PLAYER_AFTERBURNER: {
sbyte afterburner; ubyte afterburner;
sbyte old_afterburner; ubyte old_afterburner;
nd_read_byte(&old_afterburner); nd_read_byte((sbyte *)&old_afterburner);
nd_read_byte(&afterburner); nd_read_byte((sbyte *)&afterburner);
if (nd_bad_read) {done = -1; break; } if (nd_bad_read) {done = -1; break; }
if ((Newdemo_vcr_state == ND_STATE_PLAYBACK) || (Newdemo_vcr_state == ND_STATE_FASTFORWARD) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEFORWARD)) { if ((Newdemo_vcr_state == ND_STATE_PLAYBACK) || (Newdemo_vcr_state == ND_STATE_FASTFORWARD) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEFORWARD)) {
Afterburner_charge = afterburner<<9; Afterburner_charge = afterburner<<9;
// if (Afterburner_charge < 0) Afterburner_charge=f1_0;
} else if ((Newdemo_vcr_state == ND_STATE_REWINDING) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEBACKWARD)) { } else if ((Newdemo_vcr_state == ND_STATE_REWINDING) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEBACKWARD)) {
if (old_afterburner != -128) if (old_afterburner != 255)
Afterburner_charge = old_afterburner<<9; Afterburner_charge = old_afterburner<<9;
} }
break; break;
} }
case ND_EVENT_PLAYER_SHIELD: { case ND_EVENT_PLAYER_SHIELD: {
sbyte shield; ubyte shield;
sbyte old_shield; ubyte old_shield;
nd_read_byte(&old_shield); nd_read_byte((sbyte *)&old_shield);
nd_read_byte(&shield); nd_read_byte((sbyte *)&shield);
if (nd_bad_read) {done = -1; break; } if (nd_bad_read) {done = -1; break; }
if ((Newdemo_vcr_state == ND_STATE_PLAYBACK) || (Newdemo_vcr_state == ND_STATE_FASTFORWARD) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEFORWARD)) { if ((Newdemo_vcr_state == ND_STATE_PLAYBACK) || (Newdemo_vcr_state == ND_STATE_FASTFORWARD) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEFORWARD)) {
Players[Player_num].shields = i2f(shield); Players[Player_num].shields = i2f(shield);
} else if ((Newdemo_vcr_state == ND_STATE_REWINDING) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEBACKWARD)) { } else if ((Newdemo_vcr_state == ND_STATE_REWINDING) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEBACKWARD)) {
if (old_shield != -128) if (old_shield != 255)
Players[Player_num].shields = i2f(old_shield); Players[Player_num].shields = i2f(old_shield);
} }
break; break;
@ -1982,12 +1984,12 @@ int newdemo_read_frame_information()
} }
case ND_EVENT_PLAYER_WEAPON: { case ND_EVENT_PLAYER_WEAPON: {
sbyte weapon_type, weapon_num; ubyte weapon_type, weapon_num;
sbyte old_weapon; ubyte old_weapon;
nd_read_byte(&weapon_type); nd_read_byte((sbyte *)&weapon_type);
nd_read_byte(&weapon_num); nd_read_byte((sbyte *)&weapon_num);
nd_read_byte(&old_weapon); nd_read_byte((sbyte *)&old_weapon);
if ((Newdemo_vcr_state == ND_STATE_PLAYBACK) || (Newdemo_vcr_state == ND_STATE_FASTFORWARD) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEFORWARD)) { if ((Newdemo_vcr_state == ND_STATE_PLAYBACK) || (Newdemo_vcr_state == ND_STATE_FASTFORWARD) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEFORWARD)) {
if (weapon_type == 0) if (weapon_type == 0)
Primary_weapon = (int)weapon_num; Primary_weapon = (int)weapon_num;
@ -2263,15 +2265,19 @@ int newdemo_read_frame_information()
case ND_EVENT_PRIMARY_AMMO: { case ND_EVENT_PRIMARY_AMMO: {
short old_ammo, new_ammo; unsigned short old_ammo, new_ammo;
nd_read_short(&old_ammo); nd_read_short((short *)&old_ammo);
nd_read_short(&new_ammo); nd_read_short((short *)&new_ammo);
// NOTE: Used (Primary_weapon==GAUSS_INDEX?VULCAN_INDEX:Primary_weapon) because game needs VULCAN_INDEX updated to show Gauss ammo
if ((Newdemo_vcr_state == ND_STATE_REWINDING) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEBACKWARD)) if ((Newdemo_vcr_state == ND_STATE_REWINDING) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEBACKWARD))
Players[Player_num].primary_ammo[Primary_weapon] = old_ammo; Players[Player_num].primary_ammo[(Primary_weapon==GAUSS_INDEX?VULCAN_INDEX:Primary_weapon)] = old_ammo;
else if ((Newdemo_vcr_state == ND_STATE_PLAYBACK) || (Newdemo_vcr_state == ND_STATE_FASTFORWARD) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEFORWARD)) else if ((Newdemo_vcr_state == ND_STATE_PLAYBACK) || (Newdemo_vcr_state == ND_STATE_FASTFORWARD) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEFORWARD))
Players[Player_num].primary_ammo[Primary_weapon] = new_ammo; Players[Player_num].primary_ammo[(Primary_weapon==GAUSS_INDEX?VULCAN_INDEX:Primary_weapon)] = new_ammo;
if (Primary_weapon == OMEGA_INDEX) // If Omega cannon, we need to update Omega_charge - not stored in primary_ammo
Omega_charge = (Players[Player_num].primary_ammo[Primary_weapon]<=0?f1_0:Players[Player_num].primary_ammo[Primary_weapon]);
break; break;
} }