raze/source/games/blood/src/misc.h
Christoph Oelckers a6db974a62 - refactored Blood's tile property arrays to texture IDs.
The data structure here can be optimized later when the other games get to the same point, but this allows to rid Blood of all references to wallpicnunm, floorpicnum and ceilingpicnum except one place in the precacher.
2022-12-11 19:44:00 +01:00

132 lines
3.1 KiB
C++

//-------------------------------------------------------------------------
/*
Copyright (C) 2010-2019 EDuke32 developers and contributors
Copyright (C) 2019 Nuke.YKT
This file is part of NBlood.
NBlood is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
//-------------------------------------------------------------------------
#pragma once
#include "m_fixed.h"
#include "filesystem.h"
BEGIN_BLD_NS
class DBloodActor;
using HitInfo = THitInfo<DBloodActor>;
using Collision = TCollision<DBloodActor>;
void playlogos();
unsigned int qrand(void);
int wrand(void);
void wsrand(int);
void FireInit(void);
void FireProcess(void);
void UpdateNetworkMenus(void);
void InitMirrors(void);
void setPortalFlags(int mode);
void processSpritesOnOtherSideOfPortal(int x, int y, int interpolation);
void DrawMirrors(int x, int y, int z, fixed_t a, fixed_t horiz, int smooth, int viewPlayer);
int qanimateoffs(int a1, int a2);
struct PLAYER;
bool checkLitSprayOrTNT(PLAYER* pPlayer);
void WeaponInit(void);
void WeaponDraw(PLAYER* pPlayer, int shade, double xpos, double ypos, int palnum, DAngle angle);
void WeaponRaise(PLAYER* pPlayer);
void WeaponLower(PLAYER* pPlayer);
int WeaponUpgrade(PLAYER* pPlayer, int newWeapon);
void WeaponProcess(PLAYER* pPlayer);
void WeaponUpdateState(PLAYER* pPlayer);
void teslaHit(DBloodActor* pMissile, int a2);
void WeaponPrecache();
struct ZONE {
DVector3 pos;
sectortype* sector;
DAngle angle;
};
extern ZONE gStartZone[8];
void warpInit(TArray<DBloodActor*>& actors);
int CheckLink(DBloodActor* pSprite);
int CheckLink(DVector3& cPos, sectortype** pSector);
#include "m_fixed.h"
enum SurfaceType {
kSurfNone = 0,
kSurfStone,
kSurfMetal,
kSurfWood,
kSurfFlesh,
kSurfWater,
kSurfDirt,
kSurfClay,
kSurfSnow,
kSurfIce,
kSurfLeaves,
kSurfCloth,
kSurfPlant,
kSurfGoo,
kSurfLava,
kSurfMax
};
extern short voxelIndex[MAXTILES];
extern int nPrecacheCount;
inline FTextureID mirrortile;
void tilePrecacheTile(int nTile, int nType, int palette);
int tileGetSurfType(CollisionBase& hit);
struct TextureAttr
{
uint8_t surfType = kSurfNone;
int8_t tileShade = 0;
int16_t voxelIndex = -1;
};
class FTextureAttrArray
{
TextureAttr defaultattr;
public:
TArray<TextureAttr> Types;
TextureAttr operator [](FTextureID tex) const
{
if ((unsigned)tex.GetIndex() >= Types.Size()) return defaultattr;
return Types[tex.GetIndex()];
}
void Set(int index, const TextureAttr& value)
{
if ((unsigned)index >= Types.Size())
{
Types.Resize(index + 1);
}
Types[index] = value;
}
};
inline FTextureAttrArray tprops;
END_BLD_NS