MCPcopy Create free account
hub / github.com/diasurgical/DevilutionX / SaveObject

Function SaveObject

Source/loadsave.cpp:1585–1643  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1583}
1584
1585void SaveObject(SaveHelper &file, const Object &object)
1586{
1587 file.WriteLE<int32_t>(ConvertToHellfireObject(object._otype));
1588 file.WriteLE<int32_t>(object.position.x);
1589 file.WriteLE<int32_t>(object.position.y);
1590 file.WriteLE<uint32_t>(object.applyLighting ? 1 : 0);
1591 file.WriteLE<uint32_t>(object._oAnimFlag ? 1 : 0);
1592 file.Skip(4); // Skip pointer _oAnimData
1593 file.WriteLE<int32_t>(object._oAnimDelay);
1594 file.WriteLE<int32_t>(object._oAnimCnt);
1595 file.WriteLE<uint32_t>(object._oAnimLen);
1596 file.WriteLE<uint32_t>(object._oAnimFrame);
1597 file.WriteLE<int32_t>(object._oAnimWidth);
1598 file.WriteLE<int32_t>(CalculateWidth2(static_cast<int>(object._oAnimWidth))); // Write _oAnimWidth2 for vanilla compatibility
1599 file.WriteLE<uint32_t>(object._oDelFlag ? 1 : 0);
1600 file.WriteLE<int8_t>(object._oBreak);
1601 file.Skip(3); // Alignment
1602 file.WriteLE<uint32_t>(object._oSolidFlag ? 1 : 0);
1603 file.WriteLE<uint32_t>(object._oMissFlag ? 1 : 0);
1604
1605 file.WriteLE<int8_t>(object._oSelFlag);
1606 file.Skip(3); // Alignment
1607 file.WriteLE<uint32_t>(object._oPreFlag ? 1 : 0);
1608 file.WriteLE<uint32_t>(object._oTrapFlag ? 1 : 0);
1609 file.WriteLE<uint32_t>(object._oDoorFlag ? 1 : 0);
1610 file.WriteLE<int32_t>(object._olid);
1611 file.WriteLE<uint32_t>(object._oRndSeed);
1612
1613 /* Make dynamic light sources unseen when saving level data for level change */
1614 int32_t var1 = object._oVar1;
1615 switch (object._otype) {
1616 case OBJ_L1LIGHT:
1617 case OBJ_SKFIRE:
1618 case OBJ_CANDLE1:
1619 case OBJ_CANDLE2:
1620 case OBJ_BOOKCANDLE:
1621 case OBJ_STORYCANDLE:
1622 case OBJ_L5CANDLE:
1623 case OBJ_TORCHL:
1624 case OBJ_TORCHR:
1625 case OBJ_TORCHL2:
1626 case OBJ_TORCHR2:
1627 case OBJ_BCROSS:
1628 case OBJ_TBCROSS:
1629 if (var1 != -1)
1630 var1 = 0;
1631 break;
1632 default:
1633 break;
1634 }
1635 file.WriteLE<int32_t>(var1);
1636 file.WriteLE<int32_t>(object._oVar2);
1637 file.WriteLE<int32_t>(object._oVar3);
1638 file.WriteLE<int32_t>(object._oVar4);
1639 file.WriteLE<int32_t>(object._oVar5);
1640 file.WriteLE<uint32_t>(object._oVar6);
1641 file.WriteLE<int32_t>(object.bookMessage);
1642 file.WriteLE<int32_t>(object._oVar8);

Callers 2

SaveLevelFunction · 0.85
SaveGameDataFunction · 0.85

Calls 3

ConvertToHellfireObjectFunction · 0.85
CalculateWidth2Function · 0.85
SkipMethod · 0.45

Tested by

no test coverage detected