mirror of https://github.com/ZDoom/qzdoom.git
SBARINFO update:
- Reorganized the SBarInfo code. - Added interpolate(<speed>) flag to drawnumber, drawbar, and drawgem. The old way of interpolating the health and armor is depreciated. - Added: armortype to drawswitchableimage loosely based on Gez's submission. - As an extension to the previous you can now use comparison operators on inventory items and armortype in drawswitchableimage. SVN r2069 (trunk)
This commit is contained in:
parent
515862636a
commit
3f4f0a8ae4
|
@ -1,3 +1,11 @@
|
||||||
|
January 1, 2010 (SBARINFO update)
|
||||||
|
- Reorganized the SBarInfo code.
|
||||||
|
- Added interpolate(<speed>) flag to drawnumber, drawbar, and drawgem. The old
|
||||||
|
way of interpolating the health and armor is depreciated.
|
||||||
|
- Added: armortype to drawswitchableimage loosely based on Gez's submission.
|
||||||
|
- As an extension to the previous you can now use comparison operators on
|
||||||
|
inventory items and armortype in drawswitchableimage.
|
||||||
|
|
||||||
January 1, 2010 (Changes by Graf Zahl)
|
January 1, 2010 (Changes by Graf Zahl)
|
||||||
- Fixed: Heretic's Weredragon (Beast) should not have a melee state.
|
- Fixed: Heretic's Weredragon (Beast) should not have a melee state.
|
||||||
|
|
||||||
|
|
|
@ -696,8 +696,7 @@ add_executable( zdoom WIN32
|
||||||
g_shared/a_weaponpiece.cpp
|
g_shared/a_weaponpiece.cpp
|
||||||
g_shared/a_weapons.cpp
|
g_shared/a_weapons.cpp
|
||||||
g_shared/hudmessages.cpp
|
g_shared/hudmessages.cpp
|
||||||
g_shared/sbarinfo_display.cpp
|
g_shared/sbarinfo.cpp
|
||||||
g_shared/sbarinfo_parser.cpp
|
|
||||||
g_shared/sbar_mugshot.cpp
|
g_shared/sbar_mugshot.cpp
|
||||||
g_shared/shared_hud.cpp
|
g_shared/shared_hud.cpp
|
||||||
g_shared/shared_sbar.cpp
|
g_shared/shared_sbar.cpp
|
||||||
|
|
|
@ -32,6 +32,9 @@
|
||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef __SBAR_H__
|
||||||
|
#define __SBAR_H__
|
||||||
|
|
||||||
#include "dobject.h"
|
#include "dobject.h"
|
||||||
#include "v_collection.h"
|
#include "v_collection.h"
|
||||||
#include "v_text.h"
|
#include "v_text.h"
|
||||||
|
@ -195,22 +198,37 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
class player_t;
|
class player_t;
|
||||||
struct FMugShot
|
class FMugShot
|
||||||
{
|
{
|
||||||
FMugShot();
|
public:
|
||||||
void Tick(player_t *player);
|
enum StateFlags
|
||||||
bool SetState(const char *state_name, bool wait_till_done=false, bool reset=false);
|
{
|
||||||
int UpdateState(player_t *player, int stateflags=0);
|
STANDARD = 0x0,
|
||||||
FTexture *GetFace(player_t *player, const char *default_face, int accuracy, int stateflags=0);
|
|
||||||
|
|
||||||
FMugShotState *CurrentState;
|
XDEATHFACE = 0x1,
|
||||||
int RampageTimer;
|
ANIMATEDGODMODE = 0x2,
|
||||||
int LastDamageAngle;
|
DISABLEGRIN = 0x4,
|
||||||
int FaceHealth;
|
DISABLEOUCH = 0x8,
|
||||||
bool bEvilGrin;
|
DISABLEPAIN = 0x10,
|
||||||
bool bDamageFaceActive;
|
DISABLERAMPAGE = 0x20,
|
||||||
bool bNormal;
|
};
|
||||||
bool bOuchActive;
|
|
||||||
|
FMugShot();
|
||||||
|
void Grin(bool grin=true) { bEvilGrin = grin; }
|
||||||
|
void Tick(player_t *player);
|
||||||
|
bool SetState(const char *state_name, bool wait_till_done=false, bool reset=false);
|
||||||
|
int UpdateState(player_t *player, StateFlags stateflags=STANDARD);
|
||||||
|
FTexture *GetFace(player_t *player, const char *default_face, int accuracy, StateFlags stateflags=STANDARD);
|
||||||
|
|
||||||
|
private:
|
||||||
|
FMugShotState *CurrentState;
|
||||||
|
int RampageTimer;
|
||||||
|
int LastDamageAngle;
|
||||||
|
int FaceHealth;
|
||||||
|
bool bEvilGrin;
|
||||||
|
bool bDamageFaceActive;
|
||||||
|
bool bNormal;
|
||||||
|
bool bOuchActive;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern TArray<FMugShotState> MugShotStates;
|
extern TArray<FMugShotState> MugShotStates;
|
||||||
|
@ -369,3 +387,5 @@ DBaseStatusBar *CreateCustomStatusBar(int script=0);
|
||||||
|
|
||||||
void ST_LoadCrosshair(bool alwaysload=false);
|
void ST_LoadCrosshair(bool alwaysload=false);
|
||||||
extern FTexture *CrosshairImage;
|
extern FTexture *CrosshairImage;
|
||||||
|
|
||||||
|
#endif /* __SBAR_H__ */
|
||||||
|
|
|
@ -324,7 +324,7 @@ bool FMugShot::SetState(const char *state_name, bool wait_till_done, bool reset)
|
||||||
//
|
//
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|
||||||
int FMugShot::UpdateState(player_t *player, int stateflags)
|
int FMugShot::UpdateState(player_t *player, StateFlags stateflags)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
angle_t badguyangle;
|
angle_t badguyangle;
|
||||||
|
@ -333,7 +333,7 @@ int FMugShot::UpdateState(player_t *player, int stateflags)
|
||||||
|
|
||||||
if (player->health > 0)
|
if (player->health > 0)
|
||||||
{
|
{
|
||||||
if (bEvilGrin && !(stateflags & DRAWMUGSHOT_DISABLEGRIN))
|
if (bEvilGrin && !(stateflags & DISABLEGRIN))
|
||||||
{
|
{
|
||||||
if (player->bonuscount)
|
if (player->bonuscount)
|
||||||
{
|
{
|
||||||
|
@ -348,7 +348,7 @@ int FMugShot::UpdateState(player_t *player, int stateflags)
|
||||||
|
|
||||||
if (player->damagecount &&
|
if (player->damagecount &&
|
||||||
// Now go in if pain is disabled but we think ouch will be shown (and ouch is not disabled!)
|
// Now go in if pain is disabled but we think ouch will be shown (and ouch is not disabled!)
|
||||||
(!(stateflags & DRAWMUGSHOT_DISABLEPAIN) || (((FaceHealth != -1 && FaceHealth - player->health > ST_MUCHPAIN) || bOuchActive) && !(stateflags & DRAWMUGSHOT_DISABLEOUCH))))
|
(!(stateflags & DISABLEPAIN) || (((FaceHealth != -1 && FaceHealth - player->health > ST_MUCHPAIN) || bOuchActive) && !(stateflags & DISABLEOUCH))))
|
||||||
{
|
{
|
||||||
int damage_angle = 1;
|
int damage_angle = 1;
|
||||||
if (player->attacker && player->attacker != player->mo)
|
if (player->attacker && player->attacker != player->mo)
|
||||||
|
@ -380,7 +380,7 @@ int FMugShot::UpdateState(player_t *player, int stateflags)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool use_ouch = false;
|
bool use_ouch = false;
|
||||||
if (((FaceHealth != -1 && FaceHealth - player->health > ST_MUCHPAIN) || bOuchActive) && !(stateflags & DRAWMUGSHOT_DISABLEOUCH))
|
if (((FaceHealth != -1 && FaceHealth - player->health > ST_MUCHPAIN) || bOuchActive) && !(stateflags & DISABLEOUCH))
|
||||||
{
|
{
|
||||||
use_ouch = true;
|
use_ouch = true;
|
||||||
full_state_name = "ouch.";
|
full_state_name = "ouch.";
|
||||||
|
@ -407,7 +407,7 @@ int FMugShot::UpdateState(player_t *player, int stateflags)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bool use_ouch = false;
|
bool use_ouch = false;
|
||||||
if (((FaceHealth != -1 && player->health - FaceHealth > ST_MUCHPAIN) || bOuchActive) && !(stateflags & DRAWMUGSHOT_DISABLEOUCH))
|
if (((FaceHealth != -1 && player->health - FaceHealth > ST_MUCHPAIN) || bOuchActive) && !(stateflags & DISABLEOUCH))
|
||||||
{
|
{
|
||||||
use_ouch = true;
|
use_ouch = true;
|
||||||
full_state_name = "ouch.";
|
full_state_name = "ouch.";
|
||||||
|
@ -425,7 +425,7 @@ int FMugShot::UpdateState(player_t *player, int stateflags)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RampageTimer == ST_RAMPAGEDELAY && !(stateflags & DRAWMUGSHOT_DISABLERAMPAGE))
|
if (RampageTimer == ST_RAMPAGEDELAY && !(stateflags & DISABLERAMPAGE))
|
||||||
{
|
{
|
||||||
SetState("rampage", !bNormal); //If we have nothing better to show, use the rampage face.
|
SetState("rampage", !bNormal); //If we have nothing better to show, use the rampage face.
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -436,7 +436,7 @@ int FMugShot::UpdateState(player_t *player, int stateflags)
|
||||||
bool good;
|
bool good;
|
||||||
if ((player->cheats & CF_GODMODE) || (player->mo != NULL && player->mo->flags2 & MF2_INVULNERABLE))
|
if ((player->cheats & CF_GODMODE) || (player->mo != NULL && player->mo->flags2 & MF2_INVULNERABLE))
|
||||||
{
|
{
|
||||||
good = SetState((stateflags & DRAWMUGSHOT_ANIMATEDGODMODE) ? "godanimated" : "god");
|
good = SetState((stateflags & ANIMATEDGODMODE) ? "godanimated" : "god");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -450,7 +450,7 @@ int FMugShot::UpdateState(player_t *player, int stateflags)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!(stateflags & DRAWMUGSHOT_XDEATHFACE) || !(player->cheats & CF_EXTREMELYDEAD))
|
if (!(stateflags & XDEATHFACE) || !(player->cheats & CF_EXTREMELYDEAD))
|
||||||
{
|
{
|
||||||
full_state_name = "death.";
|
full_state_name = "death.";
|
||||||
}
|
}
|
||||||
|
@ -473,7 +473,7 @@ int FMugShot::UpdateState(player_t *player, int stateflags)
|
||||||
//
|
//
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|
||||||
FTexture *FMugShot::GetFace(player_t *player, const char *default_face, int accuracy, int stateflags)
|
FTexture *FMugShot::GetFace(player_t *player, const char *default_face, int accuracy, StateFlags stateflags)
|
||||||
{
|
{
|
||||||
int angle = UpdateState(player, stateflags);
|
int angle = UpdateState(player, stateflags);
|
||||||
int level = 0;
|
int level = 0;
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -37,57 +37,24 @@
|
||||||
#define __SBarInfo_SBAR_H__
|
#define __SBarInfo_SBAR_H__
|
||||||
|
|
||||||
#include "tarray.h"
|
#include "tarray.h"
|
||||||
#include "v_collection.h"
|
|
||||||
|
|
||||||
#define NUMHUDS 9
|
#define NUMHUDS 9
|
||||||
#define NUMPOPUPS 3
|
#define NUMPOPUPS 3
|
||||||
|
|
||||||
class FBarTexture;
|
|
||||||
class FScanner;
|
class FScanner;
|
||||||
|
|
||||||
/**
|
class SBarInfoMainBlock;
|
||||||
* This class is used to help prevent errors that may occur from adding or
|
|
||||||
* subtracting from coordinates.
|
|
||||||
*
|
|
||||||
* In order to provide the maximum flexibility, coordinates are packed into
|
|
||||||
* an int with one bit reserved for relCenter.
|
|
||||||
*/
|
|
||||||
class SBarInfoCoordinate
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
SBarInfoCoordinate &Add(int add);
|
|
||||||
int Coordinate() const { return value; }
|
|
||||||
bool RelCenter() const { return relCenter; }
|
|
||||||
void Set(int coord, bool center) { value = coord; relCenter = center; }
|
|
||||||
void SetCoord(int coord) { value = coord; }
|
|
||||||
void SetRelCenter(bool center) { relCenter = center; }
|
|
||||||
|
|
||||||
int operator* () const { return Coordinate(); }
|
|
||||||
SBarInfoCoordinate operator+ (int add) const { return SBarInfoCoordinate(*this).Add(add); }
|
|
||||||
SBarInfoCoordinate operator+ (const SBarInfoCoordinate &other) const { return SBarInfoCoordinate(*this).Add(other.Coordinate()); }
|
|
||||||
SBarInfoCoordinate operator- (int sub) const { return SBarInfoCoordinate(*this).Add(-sub); }
|
|
||||||
SBarInfoCoordinate operator- (const SBarInfoCoordinate &other) const { return SBarInfoCoordinate(*this).Add(-other.Coordinate()); }
|
|
||||||
void operator+= (int add) { Add(add); }
|
|
||||||
void operator-= (int sub) { Add(-sub); }
|
|
||||||
|
|
||||||
protected:
|
|
||||||
unsigned relCenter:1;
|
|
||||||
int value:31;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct SBarInfoCommand; //we need to be able to use this before it is defined.
|
|
||||||
struct MugShotState;
|
|
||||||
|
|
||||||
//Popups!
|
//Popups!
|
||||||
enum PopupTransition
|
|
||||||
{
|
|
||||||
TRANSITION_NONE,
|
|
||||||
TRANSITION_SLIDEINBOTTOM,
|
|
||||||
TRANSITION_FADE,
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Popup
|
struct Popup
|
||||||
{
|
{
|
||||||
|
enum PopupTransition
|
||||||
|
{
|
||||||
|
TRANSITION_NONE,
|
||||||
|
TRANSITION_SLIDEINBOTTOM,
|
||||||
|
TRANSITION_FADE,
|
||||||
|
};
|
||||||
|
|
||||||
PopupTransition transition;
|
PopupTransition transition;
|
||||||
bool opened;
|
bool opened;
|
||||||
bool moving;
|
bool moving;
|
||||||
|
@ -110,54 +77,10 @@ struct Popup
|
||||||
int getAlpha(int maxAlpha=FRACUNIT);
|
int getAlpha(int maxAlpha=FRACUNIT);
|
||||||
};
|
};
|
||||||
|
|
||||||
//SBarInfo
|
|
||||||
struct SBarInfoBlock
|
|
||||||
{
|
|
||||||
TArray<SBarInfoCommand> commands;
|
|
||||||
bool forceScaled;
|
|
||||||
bool fullScreenOffsets;
|
|
||||||
int alpha;
|
|
||||||
|
|
||||||
SBarInfoBlock();
|
|
||||||
};
|
|
||||||
|
|
||||||
struct SBarInfoCommand
|
|
||||||
{
|
|
||||||
SBarInfoCommand();
|
|
||||||
~SBarInfoCommand();
|
|
||||||
void setString(FScanner &sc, const char* source, int strnum, int maxlength=-1, bool exact=false);
|
|
||||||
|
|
||||||
int type;
|
|
||||||
int special;
|
|
||||||
union
|
|
||||||
{
|
|
||||||
int special2;
|
|
||||||
SBarInfoCoordinate sbcoord2;
|
|
||||||
};
|
|
||||||
union
|
|
||||||
{
|
|
||||||
int special3;
|
|
||||||
SBarInfoCoordinate sbcoord3;
|
|
||||||
};
|
|
||||||
int special4;
|
|
||||||
int flags;
|
|
||||||
SBarInfoCoordinate x;
|
|
||||||
SBarInfoCoordinate y;
|
|
||||||
int value;
|
|
||||||
int image_index;
|
|
||||||
FTextureID sprite_index;
|
|
||||||
FString string[2];
|
|
||||||
FFont *font;
|
|
||||||
EColorRange translation;
|
|
||||||
EColorRange translation2;
|
|
||||||
EColorRange translation3;
|
|
||||||
SBarInfoBlock subBlock; //for type SBarInfo_CMD_GAMEMODE
|
|
||||||
};
|
|
||||||
|
|
||||||
struct SBarInfo
|
struct SBarInfo
|
||||||
{
|
{
|
||||||
TArray<FString> Images;
|
TArray<FString> Images;
|
||||||
SBarInfoBlock huds[NUMHUDS];
|
SBarInfoMainBlock *huds[NUMHUDS];
|
||||||
Popup popups[NUMPOPUPS];
|
Popup popups[NUMPOPUPS];
|
||||||
bool automapbar;
|
bool automapbar;
|
||||||
bool interpolateHealth;
|
bool interpolateHealth;
|
||||||
|
@ -169,16 +92,13 @@ struct SBarInfo
|
||||||
int armorInterpolationSpeed;
|
int armorInterpolationSpeed;
|
||||||
int height;
|
int height;
|
||||||
int gameType;
|
int gameType;
|
||||||
|
FMugShot MugShot;
|
||||||
|
|
||||||
int GetGameType() { return gameType; }
|
int GetGameType() { return gameType; }
|
||||||
void ParseSBarInfo(int lump);
|
void ParseSBarInfo(int lump);
|
||||||
void ParseSBarInfoBlock(FScanner &sc, SBarInfoBlock &block);
|
|
||||||
void ParseMugShotBlock(FScanner &sc, FMugShotState &state);
|
void ParseMugShotBlock(FScanner &sc, FMugShotState &state);
|
||||||
void getCoordinates(FScanner &sc, bool fullScreenOffsets, SBarInfoCoordinate &x, SBarInfoCoordinate &y); //retrieves the next two arguments as x and y.
|
|
||||||
int getSignedInteger(FScanner &sc); //returns a signed integer.
|
|
||||||
int newImage(const char* patchname);
|
int newImage(const char* patchname);
|
||||||
void Init();
|
void Init();
|
||||||
EColorRange GetTranslation(FScanner &sc, const char* translation);
|
|
||||||
SBarInfo();
|
SBarInfo();
|
||||||
SBarInfo(int lumpnum);
|
SBarInfo(int lumpnum);
|
||||||
~SBarInfo();
|
~SBarInfo();
|
||||||
|
@ -190,243 +110,4 @@ struct SBarInfo
|
||||||
#define SCRIPT_DEFAULT 1
|
#define SCRIPT_DEFAULT 1
|
||||||
extern SBarInfo *SBarInfoScript[2];
|
extern SBarInfo *SBarInfoScript[2];
|
||||||
|
|
||||||
// Enums used between the parser and the display
|
|
||||||
enum //gametype flags
|
|
||||||
{
|
|
||||||
GAMETYPE_SINGLEPLAYER = 1,
|
|
||||||
GAMETYPE_COOPERATIVE = 2,
|
|
||||||
GAMETYPE_DEATHMATCH = 4,
|
|
||||||
GAMETYPE_TEAMGAME = 8,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum //drawimage flags
|
|
||||||
{
|
|
||||||
DRAWIMAGE_PLAYERICON = 0x1,
|
|
||||||
DRAWIMAGE_AMMO1 = 0x2,
|
|
||||||
DRAWIMAGE_AMMO2 = 0x4,
|
|
||||||
DRAWIMAGE_INVENTORYICON = 0x8,
|
|
||||||
DRAWIMAGE_TRANSLATABLE = 0x10,
|
|
||||||
DRAWIMAGE_WEAPONSLOT = 0x20,
|
|
||||||
DRAWIMAGE_SWITCHABLE_AND = 0x40,
|
|
||||||
DRAWIMAGE_INVULNERABILITY = 0x80,
|
|
||||||
DRAWIMAGE_OFFSET_CENTER = 0x100,
|
|
||||||
DRAWIMAGE_OFFSET_CENTERBOTTOM = 0x200,
|
|
||||||
DRAWIMAGE_ARMOR = 0x800,
|
|
||||||
DRAWIMAGE_WEAPONICON = 0x1000,
|
|
||||||
DRAWIMAGE_SIGIL = 0x2000,
|
|
||||||
DRAWIMAGE_KEYSLOT = 0x4000,
|
|
||||||
DRAWIMAGE_HEXENARMOR = 0x8000,
|
|
||||||
|
|
||||||
DRAWIMAGE_OFFSET = DRAWIMAGE_OFFSET_CENTER|DRAWIMAGE_OFFSET_CENTERBOTTOM,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum //drawnumber flags
|
|
||||||
{
|
|
||||||
DRAWNUMBER_HEALTH = 0x1,
|
|
||||||
DRAWNUMBER_ARMOR = 0x2,
|
|
||||||
DRAWNUMBER_AMMO1 = 0x4,
|
|
||||||
DRAWNUMBER_AMMO2 = 0x8,
|
|
||||||
DRAWNUMBER_AMMO = 0x10,
|
|
||||||
DRAWNUMBER_AMMOCAPACITY = 0x20,
|
|
||||||
DRAWNUMBER_FRAGS = 0x40,
|
|
||||||
DRAWNUMBER_INVENTORY = 0x80,
|
|
||||||
DRAWNUMBER_KILLS = 0x100,
|
|
||||||
DRAWNUMBER_MONSTERS = 0x200,
|
|
||||||
DRAWNUMBER_ITEMS = 0x400,
|
|
||||||
DRAWNUMBER_TOTALITEMS = 0x800,
|
|
||||||
DRAWNUMBER_SECRETS = 0x1000,
|
|
||||||
DRAWNUMBER_TOTALSECRETS = 0x2000,
|
|
||||||
DRAWNUMBER_ARMORCLASS = 0x4000,
|
|
||||||
DRAWNUMBER_GLOBALVAR = 0x8000,
|
|
||||||
DRAWNUMBER_GLOBALARRAY = 0x10000,
|
|
||||||
DRAWNUMBER_FILLZEROS = 0x20000,
|
|
||||||
DRAWNUMBER_WHENNOTZERO = 0x40000,
|
|
||||||
DRAWNUMBER_POWERUPTIME = 0x80000,
|
|
||||||
DRAWNUMBER_DRAWSHADOW = 0x100000,
|
|
||||||
DRAWNUMBER_AIRTIME = 0x200000,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum //drawbar flags (will go into special2)
|
|
||||||
{
|
|
||||||
DRAWBAR_HORIZONTAL = 1,
|
|
||||||
DRAWBAR_REVERSE = 2,
|
|
||||||
DRAWBAR_COMPAREDEFAULTS = 4,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum //drawselectedinventory flags
|
|
||||||
{
|
|
||||||
DRAWSELECTEDINVENTORY_ALTERNATEONEMPTY = 0x1,
|
|
||||||
DRAWSELECTEDINVENTORY_ARTIFLASH = 0x2,
|
|
||||||
DRAWSELECTEDINVENTORY_ALWAYSSHOWCOUNTER = 0x4,
|
|
||||||
DRAWSELECTEDINVENTORY_CENTER = 0x8,
|
|
||||||
DRAWSELECTEDINVENTORY_CENTERBOTTOM = 0x10,
|
|
||||||
DRAWSELECTEDINVENTORY_DRAWSHADOW = 0x20,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum //drawinventorybar flags
|
|
||||||
{
|
|
||||||
DRAWINVENTORYBAR_ALWAYSSHOW = 0x1,
|
|
||||||
DRAWINVENTORYBAR_NOARTIBOX = 0x2,
|
|
||||||
DRAWINVENTORYBAR_NOARROWS = 0x4,
|
|
||||||
DRAWINVENTORYBAR_ALWAYSSHOWCOUNTER = 0x8,
|
|
||||||
DRAWINVENTORYBAR_TRANSLUCENT = 0x10,
|
|
||||||
DRAWINVENTORYBAR_VERTICAL = 0x20,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum //drawgem flags
|
|
||||||
{
|
|
||||||
DRAWGEM_WIGGLE = 1,
|
|
||||||
DRAWGEM_TRANSLATABLE = 2,
|
|
||||||
DRAWGEM_ARMOR = 4,
|
|
||||||
DRAWGEM_REVERSE = 8,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum //drawshader flags
|
|
||||||
{
|
|
||||||
DRAWSHADER_VERTICAL = 1,
|
|
||||||
DRAWSHADER_REVERSE = 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum //drawmugshot flags
|
|
||||||
{
|
|
||||||
DRAWMUGSHOT_XDEATHFACE = 0x1,
|
|
||||||
DRAWMUGSHOT_ANIMATEDGODMODE = 0x2,
|
|
||||||
DRAWMUGSHOT_DISABLEGRIN = 0x4,
|
|
||||||
DRAWMUGSHOT_DISABLEOUCH = 0x8,
|
|
||||||
DRAWMUGSHOT_DISABLEPAIN = 0x10,
|
|
||||||
DRAWMUGSHOT_DISABLERAMPAGE = 0x20,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum //drawkeybar flags
|
|
||||||
{
|
|
||||||
DRAWKEYBAR_VERTICAL = 0x1,
|
|
||||||
DRAWKEYBAR_REVERSEROWS = 0x2,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum //event flags
|
|
||||||
{
|
|
||||||
SBARINFOEVENT_NOT = 1,
|
|
||||||
SBARINFOEVENT_OR = 2,
|
|
||||||
SBARINFOEVENT_AND = 4,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum //aspect ratios
|
|
||||||
{
|
|
||||||
ASPECTRATIO_4_3 = 0,
|
|
||||||
ASPECTRATIO_16_9 = 1,
|
|
||||||
ASPECTRATIO_16_10 = 2,
|
|
||||||
ASPECTRATIO_5_4 = 4,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum //Key words
|
|
||||||
{
|
|
||||||
SBARINFO_BASE,
|
|
||||||
SBARINFO_HEIGHT,
|
|
||||||
SBARINFO_INTERPOLATEHEALTH,
|
|
||||||
SBARINFO_INTERPOLATEARMOR,
|
|
||||||
SBARINFO_COMPLETEBORDER,
|
|
||||||
SBARINFO_MONOSPACEFONTS,
|
|
||||||
SBARINFO_LOWERHEALTHCAP,
|
|
||||||
SBARINFO_STATUSBAR,
|
|
||||||
SBARINFO_MUGSHOT,
|
|
||||||
SBARINFO_CREATEPOPUP,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum //Bar types
|
|
||||||
{
|
|
||||||
STBAR_NONE,
|
|
||||||
STBAR_FULLSCREEN,
|
|
||||||
STBAR_NORMAL,
|
|
||||||
STBAR_AUTOMAP,
|
|
||||||
STBAR_INVENTORY,
|
|
||||||
STBAR_INVENTORYFULLSCREEN,
|
|
||||||
STBAR_POPUPLOG,
|
|
||||||
STBAR_POPUPKEYS,
|
|
||||||
STBAR_POPUPSTATUS,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum //Bar key words
|
|
||||||
{
|
|
||||||
SBARINFO_DRAWIMAGE,
|
|
||||||
SBARINFO_DRAWNUMBER,
|
|
||||||
SBARINFO_DRAWSWITCHABLEIMAGE,
|
|
||||||
SBARINFO_DRAWMUGSHOT,
|
|
||||||
SBARINFO_DRAWSELECTEDINVENTORY,
|
|
||||||
SBARINFO_DRAWINVENTORYBAR,
|
|
||||||
SBARINFO_DRAWBAR,
|
|
||||||
SBARINFO_DRAWGEM,
|
|
||||||
SBARINFO_DRAWSHADER,
|
|
||||||
SBARINFO_DRAWSTRING,
|
|
||||||
SBARINFO_DRAWKEYBAR,
|
|
||||||
SBARINFO_GAMEMODE,
|
|
||||||
SBARINFO_PLAYERCLASS,
|
|
||||||
SBARINFO_ASPECTRATIO,
|
|
||||||
SBARINFO_ISSELECTED,
|
|
||||||
SBARINFO_USESAMMO,
|
|
||||||
SBARINFO_USESSECONDARYAMMO,
|
|
||||||
SBARINFO_HASWEAPONPIECE,
|
|
||||||
SBARINFO_INVENTORYBARNOTVISIBLE,
|
|
||||||
SBARINFO_WEAPONAMMO,
|
|
||||||
SBARINFO_ININVENTORY,
|
|
||||||
};
|
|
||||||
|
|
||||||
//All this so I can change the mugshot state in ACS...
|
|
||||||
class FBarShader : public FTexture
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
FBarShader(bool vertical, bool reverse);
|
|
||||||
const BYTE *GetColumn(unsigned int column, const Span **spans_out);
|
|
||||||
const BYTE *GetPixels();
|
|
||||||
void Unload();
|
|
||||||
private:
|
|
||||||
BYTE Pixels[512];
|
|
||||||
Span DummySpan[2];
|
|
||||||
};
|
|
||||||
|
|
||||||
class DSBarInfo : public DBaseStatusBar
|
|
||||||
{
|
|
||||||
DECLARE_CLASS(DSBarInfo, DBaseStatusBar)
|
|
||||||
public:
|
|
||||||
DSBarInfo(SBarInfo *script=NULL);
|
|
||||||
~DSBarInfo();
|
|
||||||
void Draw(EHudState state);
|
|
||||||
void NewGame();
|
|
||||||
void AttachToPlayer(player_t *player);
|
|
||||||
void Tick();
|
|
||||||
void ReceivedWeapon (AWeapon *weapon);
|
|
||||||
void FlashItem(const PClass *itemtype);
|
|
||||||
void ShowPop(int popnum);
|
|
||||||
void SetMugShotState(const char* stateName, bool waitTillDone=false, bool reset=false);
|
|
||||||
private:
|
|
||||||
void doCommands(SBarInfoBlock &block, int xOffset=0, int yOffset=0, int alpha=FRACUNIT);
|
|
||||||
void DrawGraphic(FTexture* texture, SBarInfoCoordinate x, SBarInfoCoordinate y, int xOffset, int yOffset, int alpha, bool fullScreenOffsets, bool translate=false, bool dim=false, int offsetflags=0);
|
|
||||||
void DrawString(const char* str, SBarInfoCoordinate x, SBarInfoCoordinate y, int xOffset, int yOffset, int alpha, bool fullScreenOffsets, EColorRange translation, int spacing=0, bool drawshadow=false);
|
|
||||||
void DrawNumber(int num, int len, SBarInfoCoordinate x, SBarInfoCoordinate y, int xOffset, int yOffset, int alpha, bool fullScreenOffsets, EColorRange translation, int spacing=0, bool fillzeros=false, bool drawshadow=false);
|
|
||||||
void DrawFace(const char *defaultFace, int accuracy, int stateflags, SBarInfoCoordinate x, SBarInfoCoordinate y, int xOffset, int yOffset, int alpha, bool fullScreenOffsets);
|
|
||||||
int updateState(bool xdth, bool animatedgodmode);
|
|
||||||
void DrawInventoryBar(int type, int num, SBarInfoCoordinate x, SBarInfoCoordinate y, int xOffset, int yOffset, int alpha, bool fullScreenOffsets, bool alwaysshow,
|
|
||||||
SBarInfoCoordinate counterx, SBarInfoCoordinate countery, EColorRange translation, bool drawArtiboxes, bool noArrows, bool alwaysshowcounter, int bgalpha, bool vertical);
|
|
||||||
void DrawGem(FTexture* chain, FTexture* gem, int value, SBarInfoCoordinate x, SBarInfoCoordinate y, int xOffset, int yOffset, int alpha, bool fullScreenOffsets, int padleft, int padright, int chainsize,
|
|
||||||
bool wiggle, bool translate);
|
|
||||||
FRemapTable* getTranslation();
|
|
||||||
|
|
||||||
SBarInfo *script;
|
|
||||||
FImageCollection Images;
|
|
||||||
FPlayerSkin *oldSkin;
|
|
||||||
FFont *drawingFont;
|
|
||||||
int oldHealth;
|
|
||||||
int oldArmor;
|
|
||||||
int mugshotHealth;
|
|
||||||
int chainWiggle;
|
|
||||||
int artiflash;
|
|
||||||
int pendingPopup;
|
|
||||||
int currentPopup;
|
|
||||||
unsigned int invBarOffset;
|
|
||||||
FBarShader shader_horz_normal;
|
|
||||||
FBarShader shader_horz_reverse;
|
|
||||||
FBarShader shader_vert_normal;
|
|
||||||
FBarShader shader_vert_reverse;
|
|
||||||
FMugShot MugShot;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif //__SBarInfo_SBAR_H__
|
#endif //__SBarInfo_SBAR_H__
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -67,7 +67,6 @@
|
||||||
#include "c_bind.h"
|
#include "c_bind.h"
|
||||||
#include "info.h"
|
#include "info.h"
|
||||||
#include "r_translate.h"
|
#include "r_translate.h"
|
||||||
#include "sbarinfo.h"
|
|
||||||
#include "cmdlib.h"
|
#include "cmdlib.h"
|
||||||
#include "m_png.h"
|
#include "m_png.h"
|
||||||
#include "p_setup.h"
|
#include "p_setup.h"
|
||||||
|
|
772
zdoom.vcproj
772
zdoom.vcproj
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue