| 766 | } |
| 767 | |
| 768 | void SetupObject(Object &object, Point position, _object_id ot) |
| 769 | { |
| 770 | const ObjectData &objectData = AllObjects[ot]; |
| 771 | object._otype = ot; |
| 772 | object_graphic_id ofi = objectData.ofindex; |
| 773 | object.position = position; |
| 774 | |
| 775 | if (!HeadlessMode) { |
| 776 | const auto &found = std::find(std::begin(ObjFileList), std::end(ObjFileList), ofi); |
| 777 | if (found == std::end(ObjFileList)) { |
| 778 | LogCritical("Unable to find object_graphic_id {} in list of objects to load, level generation error.", static_cast<int>(ofi)); |
| 779 | return; |
| 780 | } |
| 781 | |
| 782 | const int j = std::distance(std::begin(ObjFileList), found); |
| 783 | |
| 784 | if (pObjCels[j]) { |
| 785 | object._oAnimData.emplace(*pObjCels[j]); |
| 786 | } else { |
| 787 | object._oAnimData = std::nullopt; |
| 788 | } |
| 789 | } |
| 790 | object._oAnimFlag = objectData.isAnimated(); |
| 791 | if (object._oAnimFlag) { |
| 792 | object._oAnimDelay = objectData.animDelay; |
| 793 | object._oAnimCnt = GenerateRnd(object._oAnimDelay); |
| 794 | object._oAnimLen = objectData.animLen; |
| 795 | object._oAnimFrame = GenerateRnd(object._oAnimLen - 1) + 1; |
| 796 | } else { |
| 797 | object._oAnimDelay = 1000; |
| 798 | object._oAnimCnt = 0; |
| 799 | object._oAnimLen = objectData.animLen; |
| 800 | object._oAnimFrame = objectData.animDelay; |
| 801 | } |
| 802 | object._oAnimWidth = objectData.animWidth; |
| 803 | object._oSolidFlag = objectData.isSolid() ? 1 : 0; |
| 804 | object._oMissFlag = objectData.missilesPassThrough() ? 1 : 0; |
| 805 | object.applyLighting = objectData.applyLighting(); |
| 806 | object._oDelFlag = false; |
| 807 | object._oBreak = objectData.isBreakable() ? 1 : 0; |
| 808 | object._oSelFlag = objectData.selFlag; |
| 809 | object._oPreFlag = false; |
| 810 | object._oTrapFlag = false; |
| 811 | object._oDoorFlag = false; |
| 812 | } |
| 813 | |
| 814 | void AddCryptBook(_object_id ot, int v2, Point position) |
| 815 | { |
no test coverage detected