mirror of
https://github.com/DrBeef/Raze.git
synced 2024-11-15 08:52:00 +00:00
feature: option to show voxels instead of sprites for showing weapon (#233)
# Conflicts: # source/blood/src/controls.cpp # source/blood/src/menu.cpp # source/blood/src/osdcmd.cpp
This commit is contained in:
parent
c0d5ca8ab8
commit
441bd25ca5
3 changed files with 51 additions and 32 deletions
|
@ -266,7 +266,7 @@ void ctrlGetInput(void)
|
|||
if (BUTTON(gamefunc_Show_Opponents_Weapon))
|
||||
{
|
||||
CONTROL_ClearButton(gamefunc_Show_Opponents_Weapon);
|
||||
cl_showweapon = !cl_showweapon;
|
||||
cl_showweapon = (cl_showweapon + 1) & 3;
|
||||
}
|
||||
|
||||
if (BUTTON(gamefunc_Jump))
|
||||
|
|
|
@ -59,7 +59,7 @@ void SetCDVol(CGameMenuItemSlider *);
|
|||
void SetDoppler(CGameMenuItemZBool *);
|
||||
void SetCrosshair(CGameMenuItemZBool *);
|
||||
void SetCenterHoriz(CGameMenuItemZBool *);
|
||||
void SetShowWeapons(CGameMenuItemZBool *);
|
||||
void SetShowWeapons(CGameMenuItemZCycle *);
|
||||
void SetSlopeTilting(CGameMenuItemZBool *);
|
||||
void SetViewBobbing(CGameMenuItemZBool *);
|
||||
void SetViewSwaying(CGameMenuItemZBool *);
|
||||
|
@ -146,6 +146,12 @@ const char *zDiffStrings[] =
|
|||
"EXTRA CRISPY",
|
||||
};
|
||||
|
||||
const char *pzShowWeaponStrings[] = {
|
||||
"OFF",
|
||||
"SPRITE",
|
||||
"VOXEL"
|
||||
};
|
||||
|
||||
char zUserMapName[16];
|
||||
const char *zEpisodeNames[6];
|
||||
const char *zLevelNames[6][16];
|
||||
|
@ -229,7 +235,7 @@ CGameMenuItemSlider sliderSound("SOUND:", 3, 66, 80, 180, snd_fxvolume, 0, 256,
|
|||
//CGameMenuItemSlider sliderCDAudio("CD AUDIO:", 3, 66, 90, 180, CDVolume, 0, 256, 48, SetCDVol, -1, -1);
|
||||
CGameMenuItemZBool bool3DAudio("3D AUDIO:", 3, 66, 100, 180, snd_doppler, SetDoppler, NULL, NULL);
|
||||
CGameMenuItemZBool boolCrosshair("CROSSHAIR:", 3, 66, 110, 180, cl_crosshair, SetCrosshair, NULL, NULL);
|
||||
CGameMenuItemZBool boolShowWeapons("SHOW WEAPONS:", 3, 66, 120, 180, cl_showweapon, SetShowWeapons, NULL, NULL);
|
||||
CGameMenuItemZCycle itemCycleShowWeapons("SHOW WEAPONS:", 3, 66, 120, 180, 0, SetShowWeapons, pzShowWeaponStrings, ARRAY_SSIZE(pzShowWeaponStrings), 0);
|
||||
CGameMenuItemZBool boolSlopeTilting("SLOPE TILTING:", 3, 66, 130, 180, cl_slopetilting, SetSlopeTilting, NULL, NULL);
|
||||
CGameMenuItemZBool boolViewBobbing("VIEW BOBBING:", 3, 66, 140, 180, cl_viewvbob, SetViewBobbing, NULL, NULL);
|
||||
CGameMenuItemZBool boolViewSwaying("VIEW SWAYING:", 3, 66, 150, 180, cl_viewhbob, SetViewSwaying, NULL, NULL);
|
||||
|
@ -404,7 +410,7 @@ CGameMenuItemTitle itemOptionsGameTitle("GAME SETUP", 1, 160, 20, 2038);
|
|||
CGameMenuItemZBool itemOptionsGameBoolWeaponsV10X("V1.0x WEAPONS BALANCE:", 3, 66, 130, 180, gWeaponsV10x, SetWeaponsV10X, NULL, NULL);
|
||||
///////////////////
|
||||
|
||||
CGameMenuItemZBool itemOptionsGameBoolShowWeapons("SHOW WEAPONS:", 3, 66, 70, 180, cl_showweapon, SetShowWeapons, NULL, NULL);
|
||||
CGameMenuItemZCycle itemOptionsGameShowWeapons("SHOW WEAPONS:", 3, 66, 70, 180, 0, SetShowWeapons, pzShowWeaponStrings, ARRAY_SSIZE(pzShowWeaponStrings), 0);
|
||||
CGameMenuItemZBool itemOptionsGameBoolSlopeTilting("SLOPE TILTING:", 3, 66, 80, 180, cl_slopetilting, SetSlopeTilting, NULL, NULL);
|
||||
CGameMenuItemZBool itemOptionsGameBoolViewBobbing("VIEW BOBBING:", 3, 66, 90, 180, cl_viewvbob, SetViewBobbing, NULL, NULL);
|
||||
CGameMenuItemZBool itemOptionsGameBoolViewSwaying("VIEW SWAYING:", 3, 66, 100, 180, cl_viewhbob, SetViewSwaying, NULL, NULL);
|
||||
|
@ -760,7 +766,7 @@ void SetupOptionsOldMenu(void)
|
|||
sliderSound.nValue = ClipRange(snd_fxvolume, sliderSound.nRangeLow, sliderSound.nRangeHigh);
|
||||
bool3DAudio.at20 = snd_doppler;
|
||||
boolCrosshair.at20 = cl_crosshair;
|
||||
boolShowWeapons.at20 = cl_showweapon;
|
||||
itemCycleShowWeapons.m_nFocus = cl_showweapon;
|
||||
boolSlopeTilting.at20 = cl_slopetilting;
|
||||
boolViewBobbing.at20 = cl_viewvbob;
|
||||
boolViewSwaying.at20 = cl_viewhbob;
|
||||
|
@ -774,7 +780,7 @@ void SetupOptionsOldMenu(void)
|
|||
//menuOptionsOld.Add(&sliderCDAudio, false);
|
||||
menuOptionsOld.Add(&bool3DAudio, false);
|
||||
menuOptionsOld.Add(&boolCrosshair, false);
|
||||
menuOptionsOld.Add(&boolShowWeapons, false);
|
||||
menuOptionsOld.Add(&itemCycleShowWeapons, false);
|
||||
menuOptionsOld.Add(&boolSlopeTilting, false);
|
||||
menuOptionsOld.Add(&boolViewBobbing, false);
|
||||
menuOptionsOld.Add(&boolViewSwaying, false);
|
||||
|
@ -1111,7 +1117,7 @@ void SetupOptionsMenu(void)
|
|||
menuOptions.Add(&itemBloodQAV, false);
|
||||
|
||||
menuOptionsGame.Add(&itemOptionsGameTitle, false);
|
||||
menuOptionsGame.Add(&itemOptionsGameBoolShowWeapons, true);
|
||||
menuOptionsGame.Add(&itemOptionsGameShowWeapons, true);
|
||||
menuOptionsGame.Add(&itemOptionsGameBoolSlopeTilting, false);
|
||||
menuOptionsGame.Add(&itemOptionsGameBoolViewBobbing, false);
|
||||
menuOptionsGame.Add(&itemOptionsGameBoolViewSwaying, false);
|
||||
|
@ -1126,7 +1132,7 @@ void SetupOptionsMenu(void)
|
|||
|
||||
//menuOptionsGame.Add(&itemOptionsGameChainParentalLock, false);
|
||||
menuOptionsGame.Add(&itemBloodQAV, false);
|
||||
itemOptionsGameBoolShowWeapons.at20 = cl_showweapon;
|
||||
itemOptionsGameShowWeapons.m_nFocus = cl_showweapon;
|
||||
itemOptionsGameBoolSlopeTilting.at20 = cl_slopetilting;
|
||||
itemOptionsGameBoolViewBobbing.at20 = cl_viewvbob;
|
||||
itemOptionsGameBoolViewSwaying.at20 = cl_viewhbob;
|
||||
|
@ -1401,9 +1407,9 @@ void SetWeaponsV10X(CGameMenuItemZBool* pItem)
|
|||
}
|
||||
////
|
||||
|
||||
void SetShowWeapons(CGameMenuItemZBool *pItem)
|
||||
void SetShowWeapons(CGameMenuItemZCycle *pItem)
|
||||
{
|
||||
cl_showweapon = pItem->at20;
|
||||
cl_showweapon = pItem->m_nFocus;
|
||||
}
|
||||
|
||||
void SetSlopeTilting(CGameMenuItemZBool *pItem)
|
||||
|
|
|
@ -1151,25 +1151,24 @@ AMMOICON gAmmoIcons[] = {
|
|||
|
||||
struct WEAPONICON {
|
||||
short nTile;
|
||||
char xRepeat;
|
||||
char yRepeat;
|
||||
char zOffset;
|
||||
};
|
||||
|
||||
WEAPONICON gWeaponIcon[] = {
|
||||
{ -1, 0, 0 },
|
||||
{ -1, 0, 0 },
|
||||
{ 524, 32, 32 },
|
||||
{ 559, 32, 32 },
|
||||
{ 558, 32, 32 },
|
||||
{ 526, 32, 32 },
|
||||
{ 589, 32, 32 },
|
||||
{ 618, 32, 32 },
|
||||
{ 539, 32, 32 },
|
||||
{ 800, 32, 32 },
|
||||
{ 525, 32, 32 },
|
||||
{ 811, 32, 32 },
|
||||
{ 810, 32, 32 },
|
||||
{ -1, 0, 0 },
|
||||
{ -1, 0 },
|
||||
{ -1, 0 }, // 1: pitchfork
|
||||
{ 524, 6 }, // 2: flare gun
|
||||
{ 559, 6 }, // 3: shotgun
|
||||
{ 558, 8 }, // 4: tommy gun
|
||||
{ 526, 6 }, // 5: napalm launcher
|
||||
{ 589, 11 }, // 6: dynamite
|
||||
{ 618, 11 }, // 7: spray can
|
||||
{ 539, 6 }, // 8: tesla gun
|
||||
{ 800, 0 }, // 9: life leech
|
||||
{ 525, 11 }, // 10: voodoo doll
|
||||
{ 811, 11 }, // 11: proxy bomb
|
||||
{ 810, 11 }, // 12: remote bomb
|
||||
{ -1, 0 },
|
||||
};
|
||||
|
||||
int dword_14C508;
|
||||
|
@ -2156,17 +2155,31 @@ uspritetype *viewAddEffect(int nTSprite, VIEW_EFFECT nViewEffect)
|
|||
{
|
||||
dassert(pTSprite->type >= kDudePlayer1 && pTSprite->type <= kDudePlayer8);
|
||||
PLAYER *pPlayer = &gPlayer[pTSprite->type-kDudePlayer1];
|
||||
if (gWeaponIcon[pPlayer->curWeapon].nTile < 0) break;
|
||||
WEAPONICON weaponIcon = gWeaponIcon[pPlayer->curWeapon];
|
||||
const int nTile = weaponIcon.nTile;
|
||||
if (nTile < 0) break;
|
||||
uspritetype *pNSprite = viewInsertTSprite(pTSprite->sectnum, 32767, pTSprite);
|
||||
int top, bottom;
|
||||
GetSpriteExtents((spritetype *)pTSprite, &top, &bottom);
|
||||
pNSprite->x = pTSprite->x;
|
||||
pNSprite->y = pTSprite->y;
|
||||
pNSprite->z = pTSprite->z-(32<<8);
|
||||
pNSprite->picnum = gWeaponIcon[pPlayer->curWeapon].nTile;
|
||||
pNSprite->picnum = nTile;
|
||||
pNSprite->shade = pTSprite->shade;
|
||||
pNSprite->xrepeat = gWeaponIcon[pPlayer->curWeapon].xRepeat;
|
||||
pNSprite->yrepeat = gWeaponIcon[pPlayer->curWeapon].yRepeat;
|
||||
pNSprite->xrepeat = 32;
|
||||
pNSprite->yrepeat = 32;
|
||||
const int nVoxel = voxelIndex[nTile];
|
||||
if (gShowWeapon == 2 && usevoxels && gDetail >= 4 && videoGetRenderMode() != REND_POLYMER && nVoxel != -1)
|
||||
{
|
||||
pNSprite->cstat |= 48;
|
||||
pNSprite->cstat &= ~8;
|
||||
pNSprite->picnum = nVoxel;
|
||||
pNSprite->z -= weaponIcon.zOffset<<8;
|
||||
const int lifeLeech = 9;
|
||||
if (pPlayer->curWeapon == lifeLeech)
|
||||
{
|
||||
pNSprite->x -= mulscale30(128, Cos(pNSprite->ang));
|
||||
pNSprite->y -= mulscale30(128, Sin(pNSprite->ang));
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue