2007-12-20 22:35:02 +00:00
|
|
|
#ifndef __SBarInfo_SBAR_H__
|
|
|
|
#define __SBarInfo_SBAR_H__
|
|
|
|
|
|
|
|
#include "tarray.h"
|
|
|
|
#include "v_collection.h"
|
|
|
|
|
2008-01-16 04:43:50 +00:00
|
|
|
class FBarTexture;
|
- Updated lempar.c to v1.31.
- Added .txt files to the list of types (wad, zip, and pk3) that can be
loaded without listing them after -file.
- Fonts that are created by the ACS setfont command to wrap a texture now
support animated textures.
- FON2 fonts can now use their full palette for CR_UNTRANSLATED when drawn
with the hardware 2D path instead of being restricted to the game palette.
- Fixed: Toggling vid_vsync would reset the displayed fullscreen gamma to 1
on a Radeon 9000.
- Added back the off-by-one palette handling, but in a much more limited
scope than before. The skipped entry is assumed to always be at 248, and
it is assumed that all Shader Model 1.4 cards suffer from this. That's
because all SM1.4 cards are based on variants of the ATI R200 core, and the
RV250 in a Radeon 9000 craps up like this. I see no reason to assume that
other flavors of the R200 are any different. (Interesting note: With the
Radeon 9000, D3DTADDRESS_CLAMP is an invalid address mode when using the
debug Direct3D 9 runtime, but it works perfectly fine with the retail
Direct3D 9 runtime.) (Insight: The R200 probably uses bytes for all its
math inside pixel shaders. That would explain perfectly why I can't use
constants greater than 1 with PS1.4 and why it can't do an exact mapping to
every entry in the color palette.
- Fixed: The software shaded drawer did not work for 2D, because its selected
"color"map was replaced with the identitymap before being used.
- Fixed: I cannot use Printf to output messages before the framebuffer was
completely setup, meaning that Shader Model 1.4 cards could not change
resolution.
- I have decided to let remap palettes specify variable alpha values for
their colors. D3DFB no longer forces them to 255.
- Updated re2c to version 0.12.3.
- Fixed: A_Wander used threshold as a timer, when it should have used
reactiontime.
- Fixed: A_CustomRailgun would not fire at all for actors without a target
when the aim parameter was disabled.
- Made the warp command work in multiplayer, again courtesy of Karate Chris.
- Fixed: Trying to spawn a bot while not in a game made for a crashing time.
(Patch courtesy of Karate Chris.)
- Removed some floating point math from hu_scores.cpp that somebody's GCC
gave warnings for (not mine, though).
- Fixed: The SBarInfo drawbar command crashed if the sprite image was
unavailable.
- Fixed: FString::operator=(const char *) did not release its old buffer when
being assigned to the null string.
- The scanner no longer has an upper limit on the length of strings it
accepts, though short strings will be faster than long ones.
- Moved all the text scanning functions into a class. Mainly, this means that
multiple script scanner states can be stored without being forced to do so
recursively. I think I might be taking advantage of that in the near
future. Possibly. Maybe.
- Removed some potential buffer overflows from the decal parser.
- Applied Blzut3's SBARINFO update #9:
* Fixed: When using even length values in drawnumber it would cap to a 98
value instead of a 99 as intended.
* The SBarInfo parser can now accept negatives for coordinates. This
doesn't allow much right now, but later I plan to add better fullscreen
hud support in which the negatives will be more useful. This also cleans
up the source a bit since all calls for (x, y) coordinates are with the
function getCoordinates().
- Added support for stencilling actors.
- Added support for non-black colors specified with DTA_ColorOverlay to the
software renderer.
- Fixed: The inverse, gold, red, and green fixed colormaps each allocated
space for 32 different colormaps, even though each only used the first one.
- Added two new blending flags to make reverse subtract blending more useful:
STYLEF_InvertSource and STYLEF_InvertOverlay. These invert the color that
gets blended with the background, since that seems like a good idea for
reverse subtraction. They also work with the other two blending operations.
- Added subtract and reverse subtract blending operations to the renderer.
Since the ERenderStyle enumeration was getting rather unwieldy, I converted
it into a new FRenderStyle structure that lets each parameter of the
blending equation be set separately. This simplified the set up for the
blend quite a bit, and it means a number of new combinations are available
by setting the parameters properly.
SVN r710 (trunk)
2008-01-25 23:57:44 +00:00
|
|
|
class FScanner;
|
2008-01-16 04:43:50 +00:00
|
|
|
|
2007-12-20 22:35:02 +00:00
|
|
|
struct SBarInfoCommand; //we need to be able to use this before it is defined.
|
2008-03-19 09:53:23 +00:00
|
|
|
struct MugShotState;
|
2007-12-20 22:35:02 +00:00
|
|
|
|
|
|
|
struct SBarInfoBlock
|
|
|
|
{
|
|
|
|
TArray<SBarInfoCommand> commands;
|
2008-01-06 19:10:52 +00:00
|
|
|
bool forceScaled;
|
|
|
|
SBarInfoBlock();
|
2007-12-20 22:35:02 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct SBarInfoCommand
|
|
|
|
{
|
2008-01-16 04:43:50 +00:00
|
|
|
SBarInfoCommand();
|
|
|
|
~SBarInfoCommand();
|
- Updated lempar.c to v1.31.
- Added .txt files to the list of types (wad, zip, and pk3) that can be
loaded without listing them after -file.
- Fonts that are created by the ACS setfont command to wrap a texture now
support animated textures.
- FON2 fonts can now use their full palette for CR_UNTRANSLATED when drawn
with the hardware 2D path instead of being restricted to the game palette.
- Fixed: Toggling vid_vsync would reset the displayed fullscreen gamma to 1
on a Radeon 9000.
- Added back the off-by-one palette handling, but in a much more limited
scope than before. The skipped entry is assumed to always be at 248, and
it is assumed that all Shader Model 1.4 cards suffer from this. That's
because all SM1.4 cards are based on variants of the ATI R200 core, and the
RV250 in a Radeon 9000 craps up like this. I see no reason to assume that
other flavors of the R200 are any different. (Interesting note: With the
Radeon 9000, D3DTADDRESS_CLAMP is an invalid address mode when using the
debug Direct3D 9 runtime, but it works perfectly fine with the retail
Direct3D 9 runtime.) (Insight: The R200 probably uses bytes for all its
math inside pixel shaders. That would explain perfectly why I can't use
constants greater than 1 with PS1.4 and why it can't do an exact mapping to
every entry in the color palette.
- Fixed: The software shaded drawer did not work for 2D, because its selected
"color"map was replaced with the identitymap before being used.
- Fixed: I cannot use Printf to output messages before the framebuffer was
completely setup, meaning that Shader Model 1.4 cards could not change
resolution.
- I have decided to let remap palettes specify variable alpha values for
their colors. D3DFB no longer forces them to 255.
- Updated re2c to version 0.12.3.
- Fixed: A_Wander used threshold as a timer, when it should have used
reactiontime.
- Fixed: A_CustomRailgun would not fire at all for actors without a target
when the aim parameter was disabled.
- Made the warp command work in multiplayer, again courtesy of Karate Chris.
- Fixed: Trying to spawn a bot while not in a game made for a crashing time.
(Patch courtesy of Karate Chris.)
- Removed some floating point math from hu_scores.cpp that somebody's GCC
gave warnings for (not mine, though).
- Fixed: The SBarInfo drawbar command crashed if the sprite image was
unavailable.
- Fixed: FString::operator=(const char *) did not release its old buffer when
being assigned to the null string.
- The scanner no longer has an upper limit on the length of strings it
accepts, though short strings will be faster than long ones.
- Moved all the text scanning functions into a class. Mainly, this means that
multiple script scanner states can be stored without being forced to do so
recursively. I think I might be taking advantage of that in the near
future. Possibly. Maybe.
- Removed some potential buffer overflows from the decal parser.
- Applied Blzut3's SBARINFO update #9:
* Fixed: When using even length values in drawnumber it would cap to a 98
value instead of a 99 as intended.
* The SBarInfo parser can now accept negatives for coordinates. This
doesn't allow much right now, but later I plan to add better fullscreen
hud support in which the negatives will be more useful. This also cleans
up the source a bit since all calls for (x, y) coordinates are with the
function getCoordinates().
- Added support for stencilling actors.
- Added support for non-black colors specified with DTA_ColorOverlay to the
software renderer.
- Fixed: The inverse, gold, red, and green fixed colormaps each allocated
space for 32 different colormaps, even though each only used the first one.
- Added two new blending flags to make reverse subtract blending more useful:
STYLEF_InvertSource and STYLEF_InvertOverlay. These invert the color that
gets blended with the background, since that seems like a good idea for
reverse subtraction. They also work with the other two blending operations.
- Added subtract and reverse subtract blending operations to the renderer.
Since the ERenderStyle enumeration was getting rather unwieldy, I converted
it into a new FRenderStyle structure that lets each parameter of the
blending equation be set separately. This simplified the set up for the
blend quite a bit, and it means a number of new combinations are available
by setting the parameters properly.
SVN r710 (trunk)
2008-01-25 23:57:44 +00:00
|
|
|
void setString(FScanner &sc, const char* source, int strnum, int maxlength=-1, bool exact=false);
|
2008-01-16 04:43:50 +00:00
|
|
|
|
2007-12-20 22:35:02 +00:00
|
|
|
int type;
|
|
|
|
int special;
|
|
|
|
int special2;
|
|
|
|
int special3;
|
|
|
|
int special4;
|
|
|
|
int flags;
|
|
|
|
int x;
|
|
|
|
int y;
|
|
|
|
int value;
|
|
|
|
int sprite;
|
2007-12-22 23:19:08 +00:00
|
|
|
FString string[2];
|
2007-12-20 22:35:02 +00:00
|
|
|
FFont *font;
|
|
|
|
EColorRange translation;
|
2008-01-10 04:22:48 +00:00
|
|
|
EColorRange translation2;
|
|
|
|
EColorRange translation3;
|
2007-12-20 22:35:02 +00:00
|
|
|
SBarInfoBlock subBlock; //for type SBarInfo_CMD_GAMEMODE
|
|
|
|
};
|
|
|
|
|
|
|
|
struct SBarInfo
|
|
|
|
{
|
2007-12-22 23:19:08 +00:00
|
|
|
TArray<FString> Images;
|
2007-12-20 22:35:02 +00:00
|
|
|
SBarInfoBlock huds[6];
|
|
|
|
bool automapbar;
|
|
|
|
bool interpolateHealth;
|
2008-02-18 22:40:39 +00:00
|
|
|
bool interpolateArmor;
|
2008-02-09 03:55:41 +00:00
|
|
|
bool completeBorder;
|
2007-12-20 22:35:02 +00:00
|
|
|
int interpolationSpeed;
|
2008-02-18 22:40:39 +00:00
|
|
|
int armorInterpolationSpeed;
|
2007-12-20 22:35:02 +00:00
|
|
|
int height;
|
2008-01-16 04:43:50 +00:00
|
|
|
int gameType;
|
|
|
|
|
|
|
|
int GetGameType() { return gameType; }
|
|
|
|
void ParseSBarInfo(int lump);
|
- Updated lempar.c to v1.31.
- Added .txt files to the list of types (wad, zip, and pk3) that can be
loaded without listing them after -file.
- Fonts that are created by the ACS setfont command to wrap a texture now
support animated textures.
- FON2 fonts can now use their full palette for CR_UNTRANSLATED when drawn
with the hardware 2D path instead of being restricted to the game palette.
- Fixed: Toggling vid_vsync would reset the displayed fullscreen gamma to 1
on a Radeon 9000.
- Added back the off-by-one palette handling, but in a much more limited
scope than before. The skipped entry is assumed to always be at 248, and
it is assumed that all Shader Model 1.4 cards suffer from this. That's
because all SM1.4 cards are based on variants of the ATI R200 core, and the
RV250 in a Radeon 9000 craps up like this. I see no reason to assume that
other flavors of the R200 are any different. (Interesting note: With the
Radeon 9000, D3DTADDRESS_CLAMP is an invalid address mode when using the
debug Direct3D 9 runtime, but it works perfectly fine with the retail
Direct3D 9 runtime.) (Insight: The R200 probably uses bytes for all its
math inside pixel shaders. That would explain perfectly why I can't use
constants greater than 1 with PS1.4 and why it can't do an exact mapping to
every entry in the color palette.
- Fixed: The software shaded drawer did not work for 2D, because its selected
"color"map was replaced with the identitymap before being used.
- Fixed: I cannot use Printf to output messages before the framebuffer was
completely setup, meaning that Shader Model 1.4 cards could not change
resolution.
- I have decided to let remap palettes specify variable alpha values for
their colors. D3DFB no longer forces them to 255.
- Updated re2c to version 0.12.3.
- Fixed: A_Wander used threshold as a timer, when it should have used
reactiontime.
- Fixed: A_CustomRailgun would not fire at all for actors without a target
when the aim parameter was disabled.
- Made the warp command work in multiplayer, again courtesy of Karate Chris.
- Fixed: Trying to spawn a bot while not in a game made for a crashing time.
(Patch courtesy of Karate Chris.)
- Removed some floating point math from hu_scores.cpp that somebody's GCC
gave warnings for (not mine, though).
- Fixed: The SBarInfo drawbar command crashed if the sprite image was
unavailable.
- Fixed: FString::operator=(const char *) did not release its old buffer when
being assigned to the null string.
- The scanner no longer has an upper limit on the length of strings it
accepts, though short strings will be faster than long ones.
- Moved all the text scanning functions into a class. Mainly, this means that
multiple script scanner states can be stored without being forced to do so
recursively. I think I might be taking advantage of that in the near
future. Possibly. Maybe.
- Removed some potential buffer overflows from the decal parser.
- Applied Blzut3's SBARINFO update #9:
* Fixed: When using even length values in drawnumber it would cap to a 98
value instead of a 99 as intended.
* The SBarInfo parser can now accept negatives for coordinates. This
doesn't allow much right now, but later I plan to add better fullscreen
hud support in which the negatives will be more useful. This also cleans
up the source a bit since all calls for (x, y) coordinates are with the
function getCoordinates().
- Added support for stencilling actors.
- Added support for non-black colors specified with DTA_ColorOverlay to the
software renderer.
- Fixed: The inverse, gold, red, and green fixed colormaps each allocated
space for 32 different colormaps, even though each only used the first one.
- Added two new blending flags to make reverse subtract blending more useful:
STYLEF_InvertSource and STYLEF_InvertOverlay. These invert the color that
gets blended with the background, since that seems like a good idea for
reverse subtraction. They also work with the other two blending operations.
- Added subtract and reverse subtract blending operations to the renderer.
Since the ERenderStyle enumeration was getting rather unwieldy, I converted
it into a new FRenderStyle structure that lets each parameter of the
blending equation be set separately. This simplified the set up for the
blend quite a bit, and it means a number of new combinations are available
by setting the parameters properly.
SVN r710 (trunk)
2008-01-25 23:57:44 +00:00
|
|
|
void ParseSBarInfoBlock(FScanner &sc, SBarInfoBlock &block);
|
2008-03-19 09:53:23 +00:00
|
|
|
void ParseMugShotBlock(FScanner &sc, MugShotState &state);
|
- Updated lempar.c to v1.31.
- Added .txt files to the list of types (wad, zip, and pk3) that can be
loaded without listing them after -file.
- Fonts that are created by the ACS setfont command to wrap a texture now
support animated textures.
- FON2 fonts can now use their full palette for CR_UNTRANSLATED when drawn
with the hardware 2D path instead of being restricted to the game palette.
- Fixed: Toggling vid_vsync would reset the displayed fullscreen gamma to 1
on a Radeon 9000.
- Added back the off-by-one palette handling, but in a much more limited
scope than before. The skipped entry is assumed to always be at 248, and
it is assumed that all Shader Model 1.4 cards suffer from this. That's
because all SM1.4 cards are based on variants of the ATI R200 core, and the
RV250 in a Radeon 9000 craps up like this. I see no reason to assume that
other flavors of the R200 are any different. (Interesting note: With the
Radeon 9000, D3DTADDRESS_CLAMP is an invalid address mode when using the
debug Direct3D 9 runtime, but it works perfectly fine with the retail
Direct3D 9 runtime.) (Insight: The R200 probably uses bytes for all its
math inside pixel shaders. That would explain perfectly why I can't use
constants greater than 1 with PS1.4 and why it can't do an exact mapping to
every entry in the color palette.
- Fixed: The software shaded drawer did not work for 2D, because its selected
"color"map was replaced with the identitymap before being used.
- Fixed: I cannot use Printf to output messages before the framebuffer was
completely setup, meaning that Shader Model 1.4 cards could not change
resolution.
- I have decided to let remap palettes specify variable alpha values for
their colors. D3DFB no longer forces them to 255.
- Updated re2c to version 0.12.3.
- Fixed: A_Wander used threshold as a timer, when it should have used
reactiontime.
- Fixed: A_CustomRailgun would not fire at all for actors without a target
when the aim parameter was disabled.
- Made the warp command work in multiplayer, again courtesy of Karate Chris.
- Fixed: Trying to spawn a bot while not in a game made for a crashing time.
(Patch courtesy of Karate Chris.)
- Removed some floating point math from hu_scores.cpp that somebody's GCC
gave warnings for (not mine, though).
- Fixed: The SBarInfo drawbar command crashed if the sprite image was
unavailable.
- Fixed: FString::operator=(const char *) did not release its old buffer when
being assigned to the null string.
- The scanner no longer has an upper limit on the length of strings it
accepts, though short strings will be faster than long ones.
- Moved all the text scanning functions into a class. Mainly, this means that
multiple script scanner states can be stored without being forced to do so
recursively. I think I might be taking advantage of that in the near
future. Possibly. Maybe.
- Removed some potential buffer overflows from the decal parser.
- Applied Blzut3's SBARINFO update #9:
* Fixed: When using even length values in drawnumber it would cap to a 98
value instead of a 99 as intended.
* The SBarInfo parser can now accept negatives for coordinates. This
doesn't allow much right now, but later I plan to add better fullscreen
hud support in which the negatives will be more useful. This also cleans
up the source a bit since all calls for (x, y) coordinates are with the
function getCoordinates().
- Added support for stencilling actors.
- Added support for non-black colors specified with DTA_ColorOverlay to the
software renderer.
- Fixed: The inverse, gold, red, and green fixed colormaps each allocated
space for 32 different colormaps, even though each only used the first one.
- Added two new blending flags to make reverse subtract blending more useful:
STYLEF_InvertSource and STYLEF_InvertOverlay. These invert the color that
gets blended with the background, since that seems like a good idea for
reverse subtraction. They also work with the other two blending operations.
- Added subtract and reverse subtract blending operations to the renderer.
Since the ERenderStyle enumeration was getting rather unwieldy, I converted
it into a new FRenderStyle structure that lets each parameter of the
blending equation be set separately. This simplified the set up for the
blend quite a bit, and it means a number of new combinations are available
by setting the parameters properly.
SVN r710 (trunk)
2008-01-25 23:57:44 +00:00
|
|
|
void getCoordinates(FScanner &sc, SBarInfoCommand &cmd); //retrieves the next two arguments as x and y.
|
2008-02-03 05:17:42 +00:00
|
|
|
int getSignedInteger(FScanner &sc); //returns a signed integer.
|
2007-12-20 22:35:02 +00:00
|
|
|
int newImage(const char* patchname);
|
2008-01-16 04:43:50 +00:00
|
|
|
void Init();
|
- Updated lempar.c to v1.31.
- Added .txt files to the list of types (wad, zip, and pk3) that can be
loaded without listing them after -file.
- Fonts that are created by the ACS setfont command to wrap a texture now
support animated textures.
- FON2 fonts can now use their full palette for CR_UNTRANSLATED when drawn
with the hardware 2D path instead of being restricted to the game palette.
- Fixed: Toggling vid_vsync would reset the displayed fullscreen gamma to 1
on a Radeon 9000.
- Added back the off-by-one palette handling, but in a much more limited
scope than before. The skipped entry is assumed to always be at 248, and
it is assumed that all Shader Model 1.4 cards suffer from this. That's
because all SM1.4 cards are based on variants of the ATI R200 core, and the
RV250 in a Radeon 9000 craps up like this. I see no reason to assume that
other flavors of the R200 are any different. (Interesting note: With the
Radeon 9000, D3DTADDRESS_CLAMP is an invalid address mode when using the
debug Direct3D 9 runtime, but it works perfectly fine with the retail
Direct3D 9 runtime.) (Insight: The R200 probably uses bytes for all its
math inside pixel shaders. That would explain perfectly why I can't use
constants greater than 1 with PS1.4 and why it can't do an exact mapping to
every entry in the color palette.
- Fixed: The software shaded drawer did not work for 2D, because its selected
"color"map was replaced with the identitymap before being used.
- Fixed: I cannot use Printf to output messages before the framebuffer was
completely setup, meaning that Shader Model 1.4 cards could not change
resolution.
- I have decided to let remap palettes specify variable alpha values for
their colors. D3DFB no longer forces them to 255.
- Updated re2c to version 0.12.3.
- Fixed: A_Wander used threshold as a timer, when it should have used
reactiontime.
- Fixed: A_CustomRailgun would not fire at all for actors without a target
when the aim parameter was disabled.
- Made the warp command work in multiplayer, again courtesy of Karate Chris.
- Fixed: Trying to spawn a bot while not in a game made for a crashing time.
(Patch courtesy of Karate Chris.)
- Removed some floating point math from hu_scores.cpp that somebody's GCC
gave warnings for (not mine, though).
- Fixed: The SBarInfo drawbar command crashed if the sprite image was
unavailable.
- Fixed: FString::operator=(const char *) did not release its old buffer when
being assigned to the null string.
- The scanner no longer has an upper limit on the length of strings it
accepts, though short strings will be faster than long ones.
- Moved all the text scanning functions into a class. Mainly, this means that
multiple script scanner states can be stored without being forced to do so
recursively. I think I might be taking advantage of that in the near
future. Possibly. Maybe.
- Removed some potential buffer overflows from the decal parser.
- Applied Blzut3's SBARINFO update #9:
* Fixed: When using even length values in drawnumber it would cap to a 98
value instead of a 99 as intended.
* The SBarInfo parser can now accept negatives for coordinates. This
doesn't allow much right now, but later I plan to add better fullscreen
hud support in which the negatives will be more useful. This also cleans
up the source a bit since all calls for (x, y) coordinates are with the
function getCoordinates().
- Added support for stencilling actors.
- Added support for non-black colors specified with DTA_ColorOverlay to the
software renderer.
- Fixed: The inverse, gold, red, and green fixed colormaps each allocated
space for 32 different colormaps, even though each only used the first one.
- Added two new blending flags to make reverse subtract blending more useful:
STYLEF_InvertSource and STYLEF_InvertOverlay. These invert the color that
gets blended with the background, since that seems like a good idea for
reverse subtraction. They also work with the other two blending operations.
- Added subtract and reverse subtract blending operations to the renderer.
Since the ERenderStyle enumeration was getting rather unwieldy, I converted
it into a new FRenderStyle structure that lets each parameter of the
blending equation be set separately. This simplified the set up for the
blend quite a bit, and it means a number of new combinations are available
by setting the parameters properly.
SVN r710 (trunk)
2008-01-25 23:57:44 +00:00
|
|
|
EColorRange GetTranslation(FScanner &sc, char* translation);
|
2007-12-20 22:35:02 +00:00
|
|
|
SBarInfo();
|
2008-01-16 04:43:50 +00:00
|
|
|
SBarInfo(int lumpnum);
|
|
|
|
~SBarInfo();
|
2008-03-19 09:53:23 +00:00
|
|
|
static void Load();
|
2007-12-20 22:35:02 +00:00
|
|
|
};
|
|
|
|
|
2008-01-05 04:23:34 +00:00
|
|
|
extern SBarInfo *SBarInfoScript;
|
2007-12-20 22:35:02 +00:00
|
|
|
|
2008-03-19 09:53:23 +00:00
|
|
|
//Mug Shot scripting structs. All functions are defined in sbarinfo_parser.cpp
|
|
|
|
struct MugShotState;
|
|
|
|
|
|
|
|
struct MugShotFrame
|
|
|
|
{
|
|
|
|
TArray<FString> graphic;
|
|
|
|
int delay;
|
|
|
|
|
|
|
|
MugShotFrame();
|
|
|
|
~MugShotFrame();
|
|
|
|
FTexture *getTexture(FPlayerSkin *skn, int random, int level=0, int direction=0, bool usesLevels=false, bool health2=false, bool healthspecial=false, bool directional=false);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
struct MugShotState
|
|
|
|
{
|
|
|
|
bool usesLevels;
|
|
|
|
bool health2; //health level is the 2nd character from the end.
|
|
|
|
bool healthspecial; //like health2 only the 2nd frame gets the normal health type.
|
|
|
|
bool directional; //faces direction of damage.
|
|
|
|
|
|
|
|
unsigned int position;
|
|
|
|
int time;
|
|
|
|
int random;
|
|
|
|
bool finished;
|
|
|
|
FName state;
|
|
|
|
TArray<MugShotFrame> frames;
|
|
|
|
|
|
|
|
MugShotState();
|
|
|
|
MugShotState(FString name);
|
|
|
|
~MugShotState();
|
|
|
|
void tick();
|
|
|
|
void reset();
|
|
|
|
MugShotFrame getCurrentFrame() { return frames[position]; }
|
|
|
|
FTexture *getCurrentFrameTexture(FPlayerSkin *skn, int level=0, int direction=0) { return getCurrentFrame().getTexture(skn, random, level, direction, usesLevels, health2, healthspecial, directional); }
|
|
|
|
};
|
|
|
|
|
|
|
|
extern TArray<MugShotState> MugShotStates;
|
|
|
|
|
|
|
|
const MugShotState *FindMugShotState(FString state);
|
|
|
|
int FindMugShotStateIndex(FName state);
|
|
|
|
|
|
|
|
// Enums used between the parser and the display
|
|
|
|
enum //statusbar flags
|
|
|
|
{
|
|
|
|
STATUSBARFLAG_FORCESCALED = 1,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum //gametype flags
|
|
|
|
{
|
|
|
|
GAMETYPE_SINGLEPLAYER = 1,
|
|
|
|
GAMETYPE_COOPERATIVE = 2,
|
|
|
|
GAMETYPE_DEATHMATCH = 4,
|
|
|
|
GAMETYPE_TEAMGAME = 8,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum //drawimage flags
|
|
|
|
{
|
|
|
|
DRAWIMAGE_PLAYERICON = 1,
|
|
|
|
DRAWIMAGE_AMMO1 = 2,
|
|
|
|
DRAWIMAGE_AMMO2 = 4,
|
|
|
|
DRAWIMAGE_INVENTORYICON = 8,
|
|
|
|
DRAWIMAGE_TRANSLATABLE = 16,
|
|
|
|
DRAWIMAGE_WEAPONSLOT = 32,
|
|
|
|
DRAWIMAGE_SWITCHABLE_AND = 64,
|
|
|
|
DRAWIMAGE_INVULNERABILITY = 128,
|
|
|
|
DRAWIMAGE_OFFSET_CENTER = 256,
|
|
|
|
DRAWIMAGE_ARMOR = 512,
|
|
|
|
DRAWIMAGE_WEAPONICON = 1024,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum //drawnumber flags
|
|
|
|
{
|
|
|
|
DRAWNUMBER_HEALTH = 1,
|
|
|
|
DRAWNUMBER_ARMOR = 2,
|
|
|
|
DRAWNUMBER_AMMO1 = 4,
|
|
|
|
DRAWNUMBER_AMMO2 = 8,
|
|
|
|
DRAWNUMBER_AMMO = 16,
|
|
|
|
DRAWNUMBER_AMMOCAPACITY = 32,
|
|
|
|
DRAWNUMBER_FRAGS = 64,
|
|
|
|
DRAWNUMBER_INVENTORY = 128,
|
|
|
|
DRAWNUMBER_KILLS = 256,
|
|
|
|
DRAWNUMBER_MONSTERS = 512,
|
|
|
|
DRAWNUMBER_ITEMS = 1024,
|
|
|
|
DRAWNUMBER_TOTALITEMS = 2048,
|
|
|
|
DRAWNUMBER_SECRETS = 4096,
|
|
|
|
DRAWNUMBER_TOTALSECRETS = 8192,
|
|
|
|
DRAWNUMBER_ARMORCLASS = 16384,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum //drawbar flags (will go into special2)
|
|
|
|
{
|
|
|
|
DRAWBAR_HORIZONTAL = 1,
|
|
|
|
DRAWBAR_REVERSE = 2,
|
|
|
|
DRAWBAR_COMPAREDEFAULTS = 4,
|
|
|
|
DRAWBAR_KEEPOFFSETS = 8,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum //drawselectedinventory flags
|
|
|
|
{
|
|
|
|
DRAWSELECTEDINVENTORY_ALTERNATEONEMPTY = 1,
|
|
|
|
DRAWSELECTEDINVENTORY_ARTIFLASH = 2,
|
|
|
|
DRAWSELECTEDINVENTORY_ALWAYSSHOWCOUNTER = 4,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum //drawinventorybar flags
|
|
|
|
{
|
|
|
|
DRAWINVENTORYBAR_ALWAYSSHOW = 1,
|
|
|
|
DRAWINVENTORYBAR_NOARTIBOX = 2,
|
|
|
|
DRAWINVENTORYBAR_NOARROWS = 4,
|
|
|
|
DRAWINVENTORYBAR_ALWAYSSHOWCOUNTER = 8,
|
|
|
|
};
|
|
|
|
|
|
|
|
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 = 1,
|
|
|
|
DRAWMUGSHOT_ANIMATEDGODMODE = 2,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum //drawkeybar flags
|
|
|
|
{
|
|
|
|
DRAWKEYBAR_VERTICAL = 1,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum //event flags
|
|
|
|
{
|
|
|
|
SBARINFOEVENT_NOT = 1,
|
|
|
|
SBARINFOEVENT_OR = 2,
|
|
|
|
SBARINFOEVENT_AND = 4,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum //Key words
|
|
|
|
{
|
|
|
|
SBARINFO_BASE,
|
|
|
|
SBARINFO_HEIGHT,
|
|
|
|
SBARINFO_INTERPOLATEHEALTH,
|
|
|
|
SBARINFO_INTERPOLATEARMOR,
|
|
|
|
SBARINFO_COMPLETEBORDER,
|
|
|
|
SBARINFO_STATUSBAR,
|
|
|
|
SBARINFO_MUGSHOT,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum //Bar types
|
|
|
|
{
|
|
|
|
STBAR_NONE,
|
|
|
|
STBAR_FULLSCREEN,
|
|
|
|
STBAR_NORMAL,
|
|
|
|
STBAR_AUTOMAP,
|
|
|
|
STBAR_INVENTORY,
|
|
|
|
STBAR_INVENTORYFULLSCREEN,
|
|
|
|
};
|
|
|
|
|
|
|
|
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_WEAPONAMMO,
|
|
|
|
};
|
|
|
|
|
|
|
|
//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();
|
|
|
|
~DSBarInfo();
|
|
|
|
void Draw(EHudState state);
|
|
|
|
void NewGame();
|
|
|
|
void AttachToPlayer(player_t *player);
|
|
|
|
void Tick();
|
|
|
|
void ReceivedWeapon (AWeapon *weapon);
|
|
|
|
void FlashItem(const PClass *itemtype);
|
|
|
|
void SetMugShotState(const char* stateName, bool waitTillDone=false);
|
|
|
|
private:
|
|
|
|
void doCommands(SBarInfoBlock &block);
|
|
|
|
void DrawGraphic(FTexture* texture, int x, int y, int flags);
|
|
|
|
void DrawString(const char* str, int x, int y, EColorRange translation, int spacing=0);
|
|
|
|
void DrawNumber(int num, int len, int x, int y, EColorRange translation, int spacing=0);
|
|
|
|
void DrawFace(int accuracy, bool xdth, bool animatedgodmode, int x, int y);
|
|
|
|
int updateState(bool xdth, bool animatedgodmode);
|
|
|
|
void DrawInventoryBar(int type, int num, int x, int y, bool alwaysshow,
|
|
|
|
int counterx, int countery, EColorRange translation, bool drawArtiboxes, bool noArrows, bool alwaysshowcounter);
|
|
|
|
void DrawGem(FTexture* chain, FTexture* gem, int value, int x, int y, int padleft, int padright, int chainsize,
|
|
|
|
bool wiggle, bool translate);
|
|
|
|
FRemapTable* getTranslation();
|
|
|
|
|
|
|
|
FImageCollection Images;
|
|
|
|
FPlayerSkin *oldSkin;
|
|
|
|
FFont *drawingFont;
|
|
|
|
FString lastPrefix;
|
|
|
|
MugShotState *currentState;
|
|
|
|
bool weaponGrin;
|
|
|
|
bool damageFaceActive;
|
|
|
|
int lastDamageAngle;
|
|
|
|
int rampageTimer;
|
|
|
|
int oldHealth;
|
|
|
|
int oldArmor;
|
|
|
|
int mugshotHealth;
|
|
|
|
int chainWiggle;
|
|
|
|
int artiflash;
|
|
|
|
unsigned int invBarOffset;
|
|
|
|
FBarShader shader_horz_normal;
|
|
|
|
FBarShader shader_horz_reverse;
|
|
|
|
FBarShader shader_vert_normal;
|
|
|
|
FBarShader shader_vert_reverse;
|
|
|
|
};
|
|
|
|
|
2007-12-20 22:35:02 +00:00
|
|
|
#endif //__SBarInfo_SBAR_H__
|