NS/main/source/cl_dll/health.h

118 lines
3.4 KiB
C++

/***
*
* Copyright (c) 1999, Valve LLC. All rights reserved.
*
* This product contains software technology licensed from Id
* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc.
* All Rights Reserved.
*
* Use, distribution, and modification of this source code and/or resulting
* object code is restricted to non-commercial enhancements to products from
* Valve LLC. All other use, distribution, or modification is prohibited
* without written permission from Valve LLC.
*
****/
#ifndef HEALTH_H
#define HEALTH_H
#define DMG_IMAGE_LIFE 2 // seconds that image is up
#define DMG_IMAGE_POISON 0
#define DMG_IMAGE_ACID 1
#define DMG_IMAGE_COLD 2
#define DMG_IMAGE_DROWN 3
#define DMG_IMAGE_BURN 4
#define DMG_IMAGE_NERVE 5
#define DMG_IMAGE_RAD 6
#define DMG_IMAGE_SHOCK 7
//tf defines
#define DMG_IMAGE_CALTROP 8
#define DMG_IMAGE_TRANQ 9
#define DMG_IMAGE_CONCUSS 10
#define DMG_IMAGE_HALLUC 11
#define NUM_DMG_TYPES 12
// instant damage
//// time-based damage
////mask off TF-specific stuff too
//#define DMG_TIMEBASED (~(0xff003fff)) // mask for time-based damage
//
//
//#define DMG_DROWN (1 << 14) // Drowning
//#define DMG_FIRSTTIMEBASED DMG_DROWN
//
//#define DMG_PARALYZE (1 << 15) // slows affected creature down
//#define DMG_NERVEGAS (1 << 16) // nerve toxins, very bad
//#define DMG_POISON (1 << 17) // blood poisioning
//#define DMG_RADIATION (1 << 18) // radiation exposure
//#define DMG_DROWNRECOVER (1 << 19) // drowning recovery
//#define DMG_ACID (1 << 20) // toxic chemicals or acid burns
//#define DMG_SLOWBURN (1 << 21) // in an oven
//#define DMG_SLOWFREEZE (1 << 22) // in a subzero freezer
//#define DMG_MORTAR (1 << 23) // Hit by air raid (done to distinguish grenade from mortar)
//
////TF ADDITIONS
//#define DMG_IGNITE (1 << 24) // Players hit by this begin to burn
//#define DMG_RADIUS_MAX (1 << 25) // Radius damage with this flag doesn't decrease over distance
//#define DMG_RADIUS_QUAKE (1 << 26) // Radius damage is done like Quake. 1/2 damage at 1/2 radius.
//#define DMG_IGNOREARMOR (1 << 27) // Damage ignores target's armor
//#define DMG_AIMED (1 << 28) // Does Hit location damage
//#define DMG_WALLPIERCING (1 << 29) // Blast Damages ents through walls
//
//#define DMG_CALTROP (1<<30)
//#define DMG_HALLUC (1<<31)
#include "damagetypes.h"
// TF Healing Additions for TakeHealth
#define DMG_IGNORE_MAXHEALTH DMG_IGNITE
// TF Redefines since we never use the originals
#define DMG_NAIL DMG_SLASH
#define DMG_NOT_SELF DMG_FREEZE
#define DMG_TRANQ DMG_MORTAR
#define DMG_CONCUSS DMG_SONIC
typedef struct
{
float fExpire;
float fBaseline;
int x, y;
} DAMAGE_IMAGE;
//
//-----------------------------------------------------
//
class CHudHealth: public CHudBase
{
public:
virtual int Init( void );
virtual int VidInit( void );
virtual int Draw(float fTime);
virtual void Reset( void );
int MsgFunc_Health(const char *pszName, int iSize, void *pbuf);
int MsgFunc_Damage(const char *pszName, int iSize, void *pbuf);
int m_iHealth;
int m_HUD_dmg_bio;
int m_HUD_cross;
float m_fAttackFront, m_fAttackRear, m_fAttackLeft, m_fAttackRight;
void GetPainColor( int &r, int &g, int &b );
float m_fFade;
private:
HSPRITE m_hSprite;
HSPRITE m_hDamage;
DAMAGE_IMAGE m_dmg[NUM_DMG_TYPES];
int m_bitsDamage;
int DrawPain(float fTime);
int DrawDamage(float fTime);
void CalcDamageDirection(vec3_t vecFrom);
void UpdateTiles(float fTime, long bits);
};
#endif