MCPcopy Create free account
hub / github.com/diasurgical/devilution / SetMapObjects

Function SetMapObjects

Source/objects.cpp:846–904  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

844
845#ifndef SPAWN
846void SetMapObjects(BYTE *pMap, int startx, int starty)
847{
848 int rw, rh;
849 int i, j;
850 BYTE *lm, *h;
851 long mapoff;
852 int fileload[56];
853 char filestr[32];
854
855 ClrAllObjects();
856 for (i = 0; i < 56; i++)
857 fileload[i] = FALSE;
858 InitObjFlag = TRUE;
859
860 for (i = 0; AllObjects[i].oload != -1; i++) {
861 if (AllObjects[i].oload == 1 && leveltype == AllObjects[i].olvltype)
862 fileload[AllObjects[i].ofindex] = TRUE;
863 }
864
865 lm = pMap;
866 rw = *lm;
867 lm += 2;
868 rh = *lm;
869 mapoff = (rw * rh + 1) * 2;
870 rw <<= 1;
871 rh <<= 1;
872 mapoff += 2 * rw * rh * 2;
873 lm += mapoff;
874 h = lm;
875
876 for (j = 0; j < rh; j++) {
877 for (i = 0; i < rw; i++) {
878 if (*lm) {
879 fileload[AllObjects[ObjTypeConv[*lm]].ofindex] = TRUE;
880 }
881 lm += 2;
882 }
883 }
884
885 for (i = 0; i < 56; i++) {
886 if (!fileload[i])
887 continue;
888
889 ObjFileList[numobjfiles] = i;
890 sprintf(filestr, "Objects\\%s.CEL", ObjMasterLoadList[i]);
891 pObjCels[numobjfiles] = LoadFileInMem(filestr, NULL);
892 numobjfiles++;
893 }
894
895 lm = h;
896 for (j = 0; j < rh; j++) {
897 for (i = 0; i < rw; i++) {
898 if (*lm)
899 AddObject(ObjTypeConv[*lm], startx + 16 + i, starty + 16 + j);
900 lm += 2;
901 }
902 }
903 InitObjFlag = FALSE;

Callers 3

LoadL1DungeonFunction · 0.85
LoadL2DungeonFunction · 0.85
LoadL3DungeonFunction · 0.85

Calls 3

ClrAllObjectsFunction · 0.85
LoadFileInMemFunction · 0.85
AddObjectFunction · 0.85

Tested by

no test coverage detected