| 1606 | } |
| 1607 | |
| 1608 | void DemoWritePlayerInfo(void) { |
| 1609 | int i; |
| 1610 | for (int a = 0; a < MAX_OBJECTS; a++) { |
| 1611 | if (Demo_turretchanged[a]) { |
| 1612 | object *obj = &Objects[a]; |
| 1613 | multi_turret multi_turret_info; |
| 1614 | polyobj_info *p_info = &obj->rtype.pobj_info; |
| 1615 | int i; |
| 1616 | |
| 1617 | if ((a >= 0) && (obj->type != OBJ_NONE) && (obj->type != OBJ_WEAPON) && (obj->flags & OF_POLYGON_OBJECT) && |
| 1618 | (p_info->multi_turret_info.num_turrets)) { |
| 1619 | mprintf(0, "Turret %d updated!\n", a); |
| 1620 | multi_turret_info.keyframes = (float *)&turret_holder; |
| 1621 | ObjGetTurretUpdate(a, &multi_turret_info); |
| 1622 | |
| 1623 | cf_WriteByte(Demo_cfp, DT_OBJ_TURRET); |
| 1624 | cf_WriteFloat(Demo_cfp, Gametime); |
| 1625 | cf_WriteShort(Demo_cfp, a); // objnum |
| 1626 | cf_WriteFloat(Demo_cfp, multi_turret_info.time); |
| 1627 | cf_WriteShort(Demo_cfp, multi_turret_info.num_turrets); |
| 1628 | |
| 1629 | for (i = 0; i < multi_turret_info.num_turrets; i++) { |
| 1630 | cf_WriteFloat(Demo_cfp, multi_turret_info.keyframes[i]); |
| 1631 | } |
| 1632 | } |
| 1633 | } |
| 1634 | } |
| 1635 | for (i = 0; i < MAX_OBJECTS; i++) { |
| 1636 | Demo_turretchanged[i] = false; |
| 1637 | } |
| 1638 | cf_WriteByte(Demo_cfp, DT_PLAYER_INFO); |
| 1639 | // cf_WriteFloat(Demo_cfp,Players[Player_num].energy); |
| 1640 | cf_WriteShort(Demo_cfp, Players[Player_num].energy); |
| 1641 | // cf_WriteFloat(Demo_cfp,Objects[Players[Player_num].objnum].shields); |
| 1642 | cf_WriteShort(Demo_cfp, Objects[Players[Player_num].objnum].shields); |
| 1643 | for (i = 0; i < MAX_PLAYER_WEAPONS; i++) { |
| 1644 | cf_WriteShort(Demo_cfp, Players[Player_num].weapon_ammo[i]); |
| 1645 | } |
| 1646 | // cf_WriteFloat(Demo_cfp,Players[Player_num].weapon[0].firing_time); |
| 1647 | cf_WriteInt(Demo_cfp, Players[Player_num].weapon[0].index); |
| 1648 | // cf_WriteInt(Demo_cfp,Players[Player_num].weapon[0].sound_handle); |
| 1649 | // cf_WriteFloat(Demo_cfp,Players[Player_num].weapon[1].firing_time); |
| 1650 | cf_WriteInt(Demo_cfp, Players[Player_num].weapon[1].index); |
| 1651 | // cf_WriteInt(Demo_cfp,Players[Player_num].weapon[1].sound_handle); |
| 1652 | cf_WriteInt(Demo_cfp, Players[Player_num].weapon_flags); |
| 1653 | cf_WriteFloat(Demo_cfp, Players[Player_num].afterburn_time_left); |
| 1654 | cf_WriteFloat(Demo_cfp, Render_FOV); |
| 1655 | } |
| 1656 | |
| 1657 | void DemoReadPlayerInfo(void) { |
| 1658 | int i; |
no test coverage detected