Browse Source

Implement loading of hellfire object files

pull/888/head
Anders Jenbo 6 years ago
parent
commit
749cda49f1
  1. 124
      Source/objdat.cpp
  2. 8
      Source/objdat.h
  3. 18
      Source/objects.cpp

124
Source/objdat.cpp

@ -123,7 +123,7 @@ int ObjTypeConv[] = {
};
/** Contains the data related to each object ID. */
ObjDataStruct AllObjects[99] = {
ObjDataStruct AllObjects[] = {
// clang-format off
// oload, ofindex, ominlvl, omaxlvl, olvltype, otheme, oquest, oAnimFlag, oAnimDelay, oAnimLen, oAnimWidth, oSolidFlag, oMissFlag, oLightFlag, oBreak, oSelFlag, oTrapFlag
{ 1, OFILE_L1BRAZ, 1, 4, DTYPE_CATHEDRAL, THEME_NONE, -1, 1, 1, 26, 64, TRUE, TRUE, FALSE, 0, 0, FALSE },
@ -233,7 +233,7 @@ ObjDataStruct AllObjects[99] = {
};
/** Maps from object_graphic_id to object CEL name. */
char *ObjMasterLoadList[56] = { // might be const
char *ObjMasterLoadList[] = { // might be const
"L1Braz",
"L1Doors",
"Lever",
@ -291,3 +291,123 @@ char *ObjMasterLoadList[56] = { // might be const
"Mushptch",
"LzStand"
};
#ifdef HELLFIRE
/** Maps from object_graphic_id to object CEL name (Hellfire Crypt overwrite). */
char *ObjCryptLoadList[] = {
"L1Braz",
"L5Door",
"L5Lever",
"Chest1",
"Chest2",
"Banner",
"SkulPile",
"SkulFire",
"SkulStik",
"CruxSk1",
"CruxSk2",
"CruxSk3",
"Book1",
"Book2",
"Rockstan",
"Angel",
"Chest3",
"Burncros",
"L5Light",
"Nude2",
"Switch4",
"TNudeM",
"TNudeW",
"TSoul",
"L2Doors",
"WTorch4",
"WTorch3",
"L5Sarco",
"Flame1",
"Prsrplt1",
"Traphole",
"MiniWatr",
"WTorch2",
"WTorch1",
"BCase",
"BShelf",
"WeapStnd",
"Urn",
"Urnexpld",
"LShrineG",
"RShrineG",
"Bloodfnt",
"Decap",
"Pedistl",
"L3Doors",
"PFountn",
"Armstand",
"Goatshrn",
"Cauldren",
"MFountn",
"TFountn",
"Altboy",
"Mcirl",
"L5Books",
"Mushptch",
"LzStand",
};
/** Maps from object_graphic_id to object CEL name (Hellfire Hive overwrite). */
char *ObjHiveLoadList[] = {
"L1Braz",
"L1Doors",
"Lever",
"Chest1",
"Chest2",
"Banner",
"SkulPile",
"SkulFire",
"SkulStik",
"CruxSk1",
"CruxSk2",
"CruxSk3",
"Book1",
"Book2",
"Rockstan",
"Angel",
"Chest3",
"Burncros",
"Candle2",
"Nude2",
"Switch4",
"TNudeM",
"TNudeW",
"TSoul",
"L2Doors",
"WTorch4",
"WTorch3",
"Sarc",
"Flame1",
"Prsrplt1",
"Traphole",
"MiniWatr",
"WTorch2",
"WTorch1",
"BCase",
"BShelf",
"WeapStnd",
"L6Pod1",
"L6Pod2",
"LShrineG",
"RShrineG",
"Bloodfnt",
"Decap",
"Pedistl",
"L3Doors",
"PFountn",
"Armstand",
"Goatshrn",
"Cauldren",
"MFountn",
"TFountn",
"Altboy",
"Mcirl",
"Bkslbrnt",
"Mushptch",
"LzStand",
};
#endif

8
Source/objdat.h

@ -7,7 +7,11 @@
#define __OBJDAT_H__
extern int ObjTypeConv[];
extern ObjDataStruct AllObjects[99];
extern char *ObjMasterLoadList[56];
extern ObjDataStruct AllObjects[];
extern char *ObjMasterLoadList[];
#ifdef HELLFIRE
extern char *ObjCryptLoadList[];
extern char *ObjHiveLoadList[];
#endif
#endif /* __OBJDAT_H__ */

18
Source/objects.cpp

@ -223,10 +223,22 @@ void InitObjectGFX()
memset(fileload, FALSE, sizeof(fileload));
#ifdef HELLFIRE
int lvl = currlevel;
if (currlevel >= 17 && currlevel <= 20)
lvl -= 8;
else if (currlevel >= 21 && currlevel <= 24)
lvl -= 20;
#endif
for (i = 0; AllObjects[i].oload != -1; i++) {
if (AllObjects[i].oload == 1
#ifdef HELLFIRE
&& (int)lvl >= AllObjects[i].ominlvl
&& (int)lvl <= AllObjects[i].omaxlvl) {
#else
&& (int)currlevel >= AllObjects[i].ominlvl
&& (int)currlevel <= AllObjects[i].omaxlvl) {
#endif
fileload[AllObjects[i].ofindex] = TRUE;
}
if (AllObjects[i].otheme != THEME_NONE) {
@ -246,6 +258,12 @@ void InitObjectGFX()
if (fileload[i]) {
ObjFileList[numobjfiles] = i;
sprintf(filestr, "Objects\\%s.CEL", ObjMasterLoadList[i]);
#ifdef HELLFIRE
if (currlevel >= 17 && currlevel < 21)
sprintf(filestr, "Objects\\%s.CEL", ObjHiveLoadList[i]);
else if (currlevel >= 21)
sprintf(filestr, "Objects\\%s.CEL", ObjCryptLoadList[i]);
#endif
pObjCels[numobjfiles] = LoadFileInMem(filestr, NULL);
numobjfiles++;
}

Loading…
Cancel
Save