- Fixed: The alpha property of status bars didn't work anymore.

- Added: alpha command to SBarInfo which allows you to increase the translucency for certain parts of the status bar.
- Added: reverse flag for drawkeybar which reverses the order in which rows are filled with keys.
- Changed a gamemode statement to an else in the Doom hud since the frag count and keys should never be shown at the same time.

SVN r2351 (trunk)
This commit is contained in:
Braden Obrzut 2010-05-31 07:01:04 +00:00
parent eadc539bc6
commit b8cb1f0cfb
3 changed files with 46 additions and 12 deletions

View File

@ -293,17 +293,18 @@ class SBarInfoMainBlock : public SBarInfoCommandFlowControl
{ {
public: public:
SBarInfoMainBlock(SBarInfo *script) : SBarInfoCommandFlowControl(script), SBarInfoMainBlock(SBarInfo *script) : SBarInfoCommandFlowControl(script),
alpha(FRACUNIT), forceScaled(false), fullScreenOffsets(false) alpha(FRACUNIT), currentAlpha(FRACUNIT), forceScaled(false),
fullScreenOffsets(false)
{ {
SetTruth(true, NULL, NULL); SetTruth(true, NULL, NULL);
} }
int Alpha() const { return alpha; } int Alpha() const { return currentAlpha; }
void Draw(const SBarInfoMainBlock *block, const DSBarInfo *statusBar, int xOffset, int yOffset, int alpha) void Draw(const SBarInfoMainBlock *block, const DSBarInfo *statusBar, int xOffset, int yOffset, int alpha)
{ {
this->xOffset = xOffset; this->xOffset = xOffset;
this->yOffset = yOffset; this->yOffset = yOffset;
this->alpha = alpha; this->currentAlpha = fixed_t((((double) this->alpha / (double) FRACUNIT) * ((double) alpha / (double) FRACUNIT)) * FRACUNIT);
SBarInfoCommandFlowControl::Draw(this, statusBar); SBarInfoCommandFlowControl::Draw(this, statusBar);
} }
bool ForceScaled() const { return forceScaled; } bool ForceScaled() const { return forceScaled; }
@ -336,8 +337,9 @@ class SBarInfoMainBlock : public SBarInfoCommandFlowControl
int XOffset() const { return xOffset; } int XOffset() const { return xOffset; }
int YOffset() const { return yOffset; } int YOffset() const { return yOffset; }
private: protected:
int alpha; int alpha;
int currentAlpha;
bool forceScaled; bool forceScaled;
bool fullScreenOffsets; bool fullScreenOffsets;
int xOffset; int xOffset;

View File

@ -1795,8 +1795,8 @@ class CommandDrawKeyBar : public SBarInfoCommand
{ {
public: public:
CommandDrawKeyBar(SBarInfo *script) : SBarInfoCommand(script), CommandDrawKeyBar(SBarInfo *script) : SBarInfoCommand(script),
number(3), vertical(false), reverseRows(false), iconSize(-1), number(3), vertical(false), reverse(false), reverseRows(false),
rowIconSize(-1), keyOffset(0), rowSize(0) iconSize(-1), rowIconSize(-1), keyOffset(0), rowSize(0)
{ {
} }
@ -1833,12 +1833,12 @@ class CommandDrawKeyBar : public SBarInfoCommand
if(iconSize == -1) if(iconSize == -1)
{ {
if(!vertical) if(!vertical)
slotOffset += TexMan[item->Icon]->GetScaledWidth() + 2; slotOffset += (reverse ? -1 : 1) * (TexMan[item->Icon]->GetScaledWidth() + 2);
else else
slotOffset += TexMan[item->Icon]->GetScaledHeight() + 2; slotOffset += (reverse ? -1 : 1) * (TexMan[item->Icon]->GetScaledHeight() + 2);
} }
else else
slotOffset += iconSize; slotOffset += (reverse ? -iconSize : iconSize);
if(rowSize > 0 && (i % rowSize == rowSize-1)) if(rowSize > 0 && (i % rowSize == rowSize-1))
{ {
@ -1871,6 +1871,8 @@ class CommandDrawKeyBar : public SBarInfoCommand
{ {
if(sc.Compare("reverserows")) if(sc.Compare("reverserows"))
reverseRows = true; reverseRows = true;
else if(sc.Compare("reverse"))
reverse = true;
else else
sc.ScriptError("Unknown flag '%s'.", sc.String); sc.ScriptError("Unknown flag '%s'.", sc.String);
if(!sc.CheckToken('|')) if(!sc.CheckToken('|'))
@ -1911,6 +1913,7 @@ class CommandDrawKeyBar : public SBarInfoCommand
protected: protected:
unsigned int number; unsigned int number;
bool vertical; bool vertical;
bool reverse;
bool reverseRows; bool reverseRows;
int iconSize; int iconSize;
int rowIconSize; int rowIconSize;
@ -2757,6 +2760,34 @@ class CommandInInventory : public SBarInfoCommandFlowControl
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
class CommandAlpha : public SBarInfoMainBlock
{
public:
CommandAlpha(SBarInfo *script) : SBarInfoMainBlock(script)
{
}
void Draw(const SBarInfoMainBlock *block, const DSBarInfo *statusBar)
{
forceScaled = block->ForceScaled();
fullScreenOffsets = block->FullScreenOffsets();
SBarInfoMainBlock::Draw(block, statusBar, block->XOffset(), block->YOffset(), block->Alpha());
}
void Parse(FScanner &sc, bool fullScreenOffsets)
{
sc.MustGetToken(TK_FloatConst);
alpha = fixed_t(FRACUNIT * sc.Float);
// We don't want to allow all the options of a regular main block
// so skip to the SBarInfoCommandFlowControl.
SBarInfoCommandFlowControl::Parse(sc, fullScreenOffsets);
}
};
////////////////////////////////////////////////////////////////////////////////
static const char *SBarInfoCommandNames[] = static const char *SBarInfoCommandNames[] =
{ {
"drawimage", "drawnumber", "drawswitchableimage", "drawimage", "drawnumber", "drawswitchableimage",
@ -2766,7 +2797,7 @@ static const char *SBarInfoCommandNames[] =
"gamemode", "playerclass", "aspectratio", "gamemode", "playerclass", "aspectratio",
"isselected", "usesammo", "usessecondaryammo", "isselected", "usesammo", "usessecondaryammo",
"hasweaponpiece", "inventorybarnotvisible", "hasweaponpiece", "inventorybarnotvisible",
"weaponammo", "ininventory", "weaponammo", "ininventory", "alpha",
NULL NULL
}; };
@ -2779,7 +2810,7 @@ enum SBarInfoCommands
SBARINFO_GAMEMODE, SBARINFO_PLAYERCLASS, SBARINFO_ASPECTRATIO, SBARINFO_GAMEMODE, SBARINFO_PLAYERCLASS, SBARINFO_ASPECTRATIO,
SBARINFO_ISSELECTED, SBARINFO_USESAMMO, SBARINFO_USESSECONDARYAMMO, SBARINFO_ISSELECTED, SBARINFO_USESAMMO, SBARINFO_USESSECONDARYAMMO,
SBARINFO_HASWEAPONPIECE, SBARINFO_INVENTORYBARNOTVISIBLE, SBARINFO_HASWEAPONPIECE, SBARINFO_INVENTORYBARNOTVISIBLE,
SBARINFO_WEAPONAMMO, SBARINFO_ININVENTORY, SBARINFO_WEAPONAMMO, SBARINFO_ININVENTORY, SBARINFO_ALPHA,
}; };
SBarInfoCommand *SBarInfoCommandFlowControl::NextCommand(FScanner &sc) SBarInfoCommand *SBarInfoCommandFlowControl::NextCommand(FScanner &sc)
@ -2810,6 +2841,7 @@ SBarInfoCommand *SBarInfoCommandFlowControl::NextCommand(FScanner &sc)
case SBARINFO_HASWEAPONPIECE: return new CommandHasWeaponPiece(script); case SBARINFO_HASWEAPONPIECE: return new CommandHasWeaponPiece(script);
case SBARINFO_WEAPONAMMO: return new CommandWeaponAmmo(script); case SBARINFO_WEAPONAMMO: return new CommandWeaponAmmo(script);
case SBARINFO_ININVENTORY: return new CommandInInventory(script); case SBARINFO_ININVENTORY: return new CommandInInventory(script);
case SBARINFO_ALPHA: return new CommandAlpha(script);
} }
sc.ScriptError("Unknown command '%s'.\n", sc.String); sc.ScriptError("Unknown command '%s'.\n", sc.String);

View File

@ -58,7 +58,7 @@ statusbar fullscreen, fullscreenoffsets // ZDoom HUD
{ {
drawnumber 2147483647, HUDFONT_DOOM, untranslated, frags, drawshadow, -3, 1; drawnumber 2147483647, HUDFONT_DOOM, untranslated, frags, drawshadow, -3, 1;
} }
gamemode singleplayer, cooperative, teamgame else
{ {
// let's hope no mod ever uses 100 keys... // let's hope no mod ever uses 100 keys...
drawkeybar 100, vertical, reverserows, auto, -10, 2, 0, 3, auto; drawkeybar 100, vertical, reverserows, auto, -10, 2, 0, 3, auto;