Browse Source

Draw Reflect Icon similiar to Manashield

pull/2032/head
obligaron 5 years ago committed by Anders Jenbo
parent
commit
86e1d488e6
  1. 4
      Source/misdat.cpp
  2. 40
      Source/scrollrt.cpp

4
Source/misdat.cpp

@ -92,7 +92,7 @@ MissileData missiledata[] = {
{ &AddCboltArrow, &MI_Cbolt, MIS_CBOLTARROW, true, 1, MISR_LIGHTNING, MFILE_MINILTNG, LS_CBOLT, SFX_NONE },
{ &AddHbolt, &MI_Hbolt, MIS_HBOLTARROW, true, 1, MISR_NONE, MFILE_HOLY, LS_HOLYBOLT, LS_ELECIMP1 },
{ &AddWarp, &MI_Teleport, MIS_WARP, false, 1, MISR_NONE, MFILE_NONE, LS_ETHEREAL, SFX_NONE },
{ &AddReflection, &MI_Reflect, MIS_REFLECT, true, 1, MISR_NONE, MFILE_REFLECT, LS_MSHIELD, SFX_NONE },
{ &AddReflection, &MI_Reflect, MIS_REFLECT, false, 1, MISR_NONE, MFILE_REFLECT, LS_MSHIELD, SFX_NONE },
{ &AddBerserk, &MI_Dummy, MIS_BERSERK, false, 1, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE },
{ &AddRing, &MI_FireRing, MIS_FIRERING, false, 1, MISR_FIRE, MFILE_FIREWAL, SFX_NONE, SFX_NONE },
{ &AddStealPotions, &MI_Dummy, MIS_STEALPOTS, false, 1, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE },
@ -175,7 +175,7 @@ MisFileData misfiledata[] = {
{ "Scubmisd", MFILE_SCUBMISD, 1, 1, { nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
{ "Scbsexpd", MFILE_SCBSEXPD, 1, 1, { nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
{ "spawns", MFILE_SPAWNS, 8, 1, { nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0 }, { 96, 96, 96, 96, 96, 96, 96, 96, 0, 0, 0, 0, 0, 0, 0, 0 }, { 16, 16, 16, 16, 16, 16, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0 } },
{ "reflect", MFILE_REFLECT, 1, 2, { nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
{ "reflect", MFILE_REFLECT, 1, 2, { nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
{ "ms_ora", MFILE_LICH, 16, 1, { nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 }, { 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96 }, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 } },
{ "ms_bla", MFILE_MSBLA, 16, 1, { nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 }, { 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96 }, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 } },
{ "ms_reb", MFILE_NECROMORB, 16, 1, { nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 }, { 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96 }, { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 } },

40
Source/scrollrt.cpp

@ -351,22 +351,14 @@ static void DrawMonster(const CelOutputBuffer &out, int x, int y, int mx, int my
}
/**
* @brief Helper for rendering player a Mana Shield
* @param out Output buffer
* @param pnum Player id
* @param sx Output buffer coordinate
* @param sy Output buffer coordinate
* @param lighting Should lighting be applied
* @brief Helper for rendering a specific player icon (Mana Shield or Reflect)
*/
static void DrawManaShield(const CelOutputBuffer &out, int pnum, int x, int y, bool lighting)
static void DrawPlayerIconHelper(const CelOutputBuffer &out, int pnum, missile_graphic_id missileGraphicId, int x, int y, bool lighting)
{
if (!plr[pnum].pManaShield)
return;
x += CalculateWidth2(plr[pnum]._pAnimWidth) - misfiledata[MFILE_MANASHLD].mAnimWidth2[0];
x += CalculateWidth2(plr[pnum]._pAnimWidth) - misfiledata[missileGraphicId].mAnimWidth2[0];
int width = misfiledata[MFILE_MANASHLD].mAnimWidth[0];
byte *pCelBuff = misfiledata[MFILE_MANASHLD].mAnimData[0];
int width = misfiledata[missileGraphicId].mAnimWidth[0];
byte *pCelBuff = misfiledata[missileGraphicId].mAnimData[0];
CelSprite cel { pCelBuff, width };
@ -383,6 +375,22 @@ static void DrawManaShield(const CelOutputBuffer &out, int pnum, int x, int y, b
Cl2DrawLight(out, x, y, cel, 1);
}
/**
* @brief Helper for rendering player icons (Mana Shield and Reflect)
* @param out Output buffer
* @param pnum Player id
* @param sx Output buffer coordinate
* @param sy Output buffer coordinate
* @param lighting Should lighting be applied
*/
static void DrawPlayerIcons(const CelOutputBuffer &out, int pnum, int x, int y, bool lighting)
{
if (plr[pnum].pManaShield)
DrawPlayerIconHelper(out, pnum, MFILE_MANASHLD, x, y, lighting);
if (plr[pnum].wReflections > 0)
DrawPlayerIconHelper(out, pnum, MFILE_REFLECT, x, y + 16, lighting);
}
/**
* @brief Render a player sprite
* @param out Output buffer
@ -433,13 +441,13 @@ static void DrawPlayer(const CelOutputBuffer &out, int pnum, int x, int y, int p
if (pnum == myplr) {
Cl2Draw(out, px, py, cel, nCel);
DrawManaShield(out, pnum, px, py, true);
DrawPlayerIcons(out, pnum, px, py, true);
return;
}
if (!(dFlags[x][y] & BFLAG_LIT) || (plr[myplr]._pInfraFlag && light_table_index > 8)) {
Cl2DrawLightTbl(out, px, py, cel, nCel, 1);
DrawManaShield(out, pnum, px, py, true);
DrawPlayerIcons(out, pnum, px, py, true);
return;
}
@ -450,7 +458,7 @@ static void DrawPlayer(const CelOutputBuffer &out, int pnum, int x, int y, int p
light_table_index -= 5;
Cl2DrawLight(out, px, py, cel, nCel);
DrawManaShield(out, pnum, px, py, false);
DrawPlayerIcons(out, pnum, px, py, false);
light_table_index = l;
}

Loading…
Cancel
Save