| 1538 | } |
| 1539 | |
| 1540 | void SaveLevel() |
| 1541 | { |
| 1542 | int i, j; |
| 1543 | char szName[MAX_PATH]; |
| 1544 | int dwLen; |
| 1545 | BYTE *SaveBuff; |
| 1546 | |
| 1547 | if (!currlevel) |
| 1548 | glSeedTbl[0] = GetRndSeed(); |
| 1549 | |
| 1550 | dwLen = codec_get_encoded_len(FILEBUFF); |
| 1551 | SaveBuff = DiabloAllocPtr(dwLen); |
| 1552 | tbuff = SaveBuff; |
| 1553 | |
| 1554 | if (leveltype != DTYPE_TOWN) { |
| 1555 | for (j = 0; j < MAXDUNY; j++) { |
| 1556 | for (i = 0; i < MAXDUNX; i++) |
| 1557 | BSave(dDead[i][j]); |
| 1558 | } |
| 1559 | } |
| 1560 | |
| 1561 | WSave(nummonsters); |
| 1562 | WSave(numitems); |
| 1563 | WSave(nobjects); |
| 1564 | |
| 1565 | if (leveltype != DTYPE_TOWN) { |
| 1566 | for (i = 0; i < MAXMONSTERS; i++) |
| 1567 | WSave(monstactive[i]); |
| 1568 | for (i = 0; i < nummonsters; i++) |
| 1569 | SaveMonster(monstactive[i]); |
| 1570 | for (i = 0; i < MAXOBJECTS; i++) |
| 1571 | BSave(objectactive[i]); |
| 1572 | for (i = 0; i < MAXOBJECTS; i++) |
| 1573 | BSave(objectavail[i]); |
| 1574 | for (i = 0; i < nobjects; i++) |
| 1575 | SaveObject(objectactive[i]); |
| 1576 | } |
| 1577 | |
| 1578 | for (i = 0; i < MAXITEMS; i++) |
| 1579 | BSave(itemactive[i]); |
| 1580 | for (i = 0; i < MAXITEMS; i++) |
| 1581 | BSave(itemavail[i]); |
| 1582 | for (i = 0; i < numitems; i++) |
| 1583 | SaveItem(&item[itemactive[i]]); |
| 1584 | |
| 1585 | for (j = 0; j < MAXDUNY; j++) { |
| 1586 | for (i = 0; i < MAXDUNX; i++) |
| 1587 | BSave(dFlags[i][j] & ~(BFLAG_MISSILE | BFLAG_VISIBLE | BFLAG_DEAD_PLAYER)); |
| 1588 | } |
| 1589 | for (j = 0; j < MAXDUNY; j++) { |
| 1590 | for (i = 0; i < MAXDUNX; i++) |
| 1591 | BSave(dItem[i][j]); |
| 1592 | } |
| 1593 | |
| 1594 | if (leveltype != DTYPE_TOWN) { |
| 1595 | for (j = 0; j < MAXDUNY; j++) { |
| 1596 | for (i = 0; i < MAXDUNX; i++) |
| 1597 | WSave(dMonster[i][j]); |
no test coverage detected