Browse Source

🐛 Fix loading of sorceror graphics

This also detangles some of the hellfire wip classes and duplicate
tables
pull/1231/head
Anders Jenbo 5 years ago
parent
commit
ac9ae2e062
  1. 14
      Source/control.cpp
  2. 46
      Source/player.cpp
  3. 2
      Source/player.h

14
Source/control.cpp

@ -66,6 +66,16 @@ BYTE *pSpellCels;
BOOL panbtndown;
BOOL spselflag;
/** Map of hero class names */
const char *const ClassStrTbl[] = {
"Warrior",
"Rogue",
"Sorcerer",
"Monk",
"Bard",
"Barbarian",
};
/** Maps from font index to smaltext.cel frame number. */
const BYTE fontframe[128] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -1303,7 +1313,7 @@ void DrawInfoBox(CelOutputBuffer out)
infoclr = COL_GOLD;
strcpy(infostr, plr[pcursplr]._pName);
ClearPanel();
sprintf(tempstr, "%s, Level: %i", ClassStrTblOld[plr[pcursplr]._pClass], plr[pcursplr]._pLevel);
sprintf(tempstr, "%s, Level: %i", ClassStrTbl[plr[pcursplr]._pClass], plr[pcursplr]._pLevel);
AddPanelString(tempstr, TRUE);
sprintf(tempstr, "Hit Points %i of %i", plr[pcursplr]._pHitPoints >> 6, plr[pcursplr]._pMaxHP >> 6);
AddPanelString(tempstr, TRUE);
@ -1374,7 +1384,7 @@ void DrawChr(CelOutputBuffer out)
CelDrawTo(out, 0, 351, pChrPanel, 1, SPANEL_WIDTH);
ADD_PlrStringXY(out, 20, 32, 151, plr[myplr]._pName, COL_WHITE);
ADD_PlrStringXY(out, 168, 32, 299, ClassStrTblOld[plr[myplr]._pClass], COL_WHITE);
ADD_PlrStringXY(out, 168, 32, 299, ClassStrTbl[plr[myplr]._pClass], COL_WHITE);
sprintf(chrstr, "%i", plr[myplr]._pLevel);
ADD_PlrStringXY(out, 66, 69, 109, chrstr, COL_WHITE);

46
Source/player.cpp

@ -32,15 +32,6 @@ const char ArmourChar[4] = { 'L', 'M', 'H', 0 };
const char WepChar[10] = { 'N', 'U', 'S', 'D', 'B', 'A', 'M', 'H', 'T', 0 };
/** Maps from player class to letter used in graphic files. */
const char CharChar[] = {
'W',
'R',
'S',
'M',
'R',
'W',
0
};
const char CharCharHF[] = {
'W',
'R',
'S',
@ -134,14 +125,6 @@ int ToBlkTbl[NUM_CLASSES] = {
25,
30,
};
const char *const ClassStrTblOld[] = {
"Warrior",
"Rogue",
"Sorcerer",
"Monk",
"Bard",
"Barbarian",
};
/** Maps from player_class to maximum stats. */
int MaxStats[NUM_CLASSES][4] = {
// clang-format off
@ -207,10 +190,10 @@ int ExpLvlsTbl[MAXCHARLEVEL] = {
1310707109,
1583495809
};
const char *const ClassStrTbl[] = {
const char *const ClassPathTbl[] = {
"Warrior",
"Rogue",
"Sorcerer",
"Sorceror",
"Monk",
"Rogue",
"Warrior",
@ -231,7 +214,6 @@ void LoadPlrGFX(int pnum, player_graphic gfxflag)
char pszName[256];
const char *szCel;
PlayerStruct *p;
const char *cs;
BYTE *pData, *pAnim;
DWORD i;
@ -240,14 +222,17 @@ void LoadPlrGFX(int pnum, player_graphic gfxflag)
}
p = &plr[pnum];
if ((p->_pClass != PC_BARD || hfbard_mpq == NULL) && (p->_pClass != PC_BARBARIAN || hfbarb_mpq == NULL)) {
sprintf(prefix, "%c%c%c", CharChar[p->_pClass], ArmourChar[p->_pgfxnum >> 4], WepChar[p->_pgfxnum & 0xF]);
cs = ClassStrTbl[p->_pClass];
} else {
sprintf(prefix, "%c%c%c", CharCharHF[p->_pClass], ArmourChar[p->_pgfxnum >> 4], WepChar[p->_pgfxnum & 0xF]);
cs = ClassStrTblOld[p->_pClass];
plr_class c = p->_pClass;
if (c == PC_BARD && hfbard_mpq == NULL) {
c = PC_ROGUE;
} else if (c == PC_BARBARIAN && hfbarb_mpq == NULL) {
c = PC_WARRIOR;
}
sprintf(prefix, "%c%c%c", CharChar[c], ArmourChar[p->_pgfxnum >> 4], WepChar[p->_pgfxnum & 0xF]);
const char *cs = ClassPathTbl[c];
for (i = 1; i <= PFILE_NONDEATH; i <<= 1) {
if (!(i & gfxflag)) {
continue;
@ -385,13 +370,8 @@ static DWORD GetPlrGFXSize(const char *szCel)
if (szCel[0] == 'B' && szCel[1] == 'L' && (*w != 'U' && *w != 'D' && *w != 'H')) {
continue; //No block without weapon
}
if ((c == PC_BARD && hfbard_mpq == NULL) || (c == PC_BARBARIAN && hfbarb_mpq == NULL)) {
sprintf(Type, "%c%c%c", CharChar[c], *a, *w);
sprintf(pszName, "PlrGFX\\%s\\%s\\%s%s.CL2", ClassStrTbl[c], Type, Type, szCel);
} else {
sprintf(Type, "%c%c%c", CharCharHF[c], *a, *w);
sprintf(pszName, "PlrGFX\\%s\\%s\\%s%s.CL2", ClassStrTblOld[c], Type, Type, szCel);
}
sprintf(Type, "%c%c%c", CharChar[c], *a, *w);
sprintf(pszName, "PlrGFX\\%s\\%s\\%s%s.CL2", ClassPathTbl[c], Type, Type, szCel);
if (SFileOpenFile(pszName, &hsFile)) {
/// ASSERT: assert(hsFile);
dwSize = SFileGetFileSize(hsFile, NULL);

2
Source/player.h

@ -306,8 +306,6 @@ extern int DexterityTbl[NUM_CLASSES];
extern int VitalityTbl[NUM_CLASSES];
extern int MaxStats[NUM_CLASSES][4];
extern int ExpLvlsTbl[MAXCHARLEVEL];
extern const char *const ClassStrTblOld[];
extern const char *const ClassStrTbl[];
#ifdef __cplusplus
}

Loading…
Cancel
Save