- Added SBARINFO update #5 by blzut3:

- Fixed: Playerclass still didn't work due to comparing of improper numbers.
    - Fixed: The arrows on drawinventorybar had a hard coded location instead of
      relative to the specified coordinates.
    - Added noarrows flag to drawinventorybar to remove the blue arrows drawn when
      there are more items to the left or right of the viewable bar.
    - Added forcescaled flag to the statusbar command.  This is ignored on the
      inventory and inventoryfullscreen types.
- Added obituary fix for Strife peasants by Karate Chris.
- Added fix for loading during demo playback by Karate Chris.


SVN r672 (trunk)
This commit is contained in:
Christoph Oelckers 2008-01-06 19:10:52 +00:00
parent d7add9ce76
commit 1f0fa7c457
5 changed files with 61 additions and 13 deletions

View file

@ -1,4 +1,14 @@
January 6, 2008 (Changes by Graf Zahl)
- Added SBARINFO update #5 by blzut3:
- Fixed: Playerclass still didn't work due to comparing of improper numbers.
- Fixed: The arrows on drawinventorybar had a hard coded location instead of
relative to the specified coordinates.
- Added noarrows flag to drawinventorybar to remove the blue arrows drawn when
there are more items to the left or right of the viewable bar.
- Added forcescaled flag to the statusbar command. This is ignored on the
inventory and inventoryfullscreen types.
- Added obituary fix for Strife peasants by Karate Chris.
- Added fix for loading during demo playback by Karate Chris.
- Added scoreboard fix by Karate Chris.
- Added teamgame fix for menu by Karate Chris.
- Added GZDoom's Sector_Outside sector type which forces outside fog

View file

@ -1689,6 +1689,7 @@ void G_DoLoadGame ()
char *map;
gameaction = ga_nothing;
demoplayback = false;
FILE *stdfile = fopen (savename.GetChars(), "rb");
if (stdfile == NULL)

View file

@ -32,6 +32,11 @@ EXTERN_CVAR(Int, fraglimit)
SBarInfo *SBarInfoScript;
enum //statusbar flags
{
STATUSBARFLAG_FORCESCALED = 1,
};
enum //gametype flags
{
GAMETYPE_SINGLEPLAYER = 1,
@ -82,6 +87,7 @@ enum //drawinventorybar flags
{
DRAWINVENTORYBAR_ALWAYSSHOW = 1,
DRAWINVENTORYBAR_NOARTIBOX = 2,
DRAWINVENTORYBAR_NOARROWS = 4,
};
enum //drawgem flags
@ -228,6 +234,18 @@ int SBarInfo::ParseSBarInfo(int lump)
{
SC_MustGetToken(TK_Identifier);
int barNum = SC_MustMatchString(StatusBars);
while(SC_CheckToken(','))
{
SC_MustGetToken(TK_Identifier);
if(SC_Compare("forcescaled"))
{
this->huds[barNum].forceScaled = true;
}
else
{
SC_ScriptError("Unkown flag '%s'.", sc_String);
}
}
SC_MustGetToken('{');
if(barNum == STBAR_AUTOMAP)
{
@ -526,6 +544,10 @@ void SBarInfo::ParseSBarInfoBlock(SBarInfoBlock &block)
{
cmd.flags += DRAWINVENTORYBAR_NOARTIBOX;
}
else if(SC_Compare("noarrows"))
{
cmd.flags += DRAWINVENTORYBAR_NOARROWS;
}
else
{
SC_ScriptError("Unknown flag '%s'.", sc_String);
@ -763,11 +785,11 @@ void SBarInfo::ParseSBarInfoBlock(SBarInfoBlock &block)
{
foundClass = true;
if(i == 0)
cmd.special = c;
cmd.special = PlayerClasses[c].Type->ClassIndex;
else if(i == 1)
cmd.special2 = c;
cmd.special2 = PlayerClasses[c].Type->ClassIndex;
else //should be 2
cmd.special3 = c;
cmd.special3 = PlayerClasses[c].Type->ClassIndex;
break;
}
}
@ -868,6 +890,11 @@ SBarInfoCommand::SBarInfoCommand() //sets the default values for more predicable
font = V_GetFont("CONFONT");
}
SBarInfoBlock::SBarInfoBlock()
{
forceScaled = false;
}
enum
{
ST_FACENORMALRIGHT,
@ -1144,6 +1171,11 @@ public:
{
hud = 0;
}
if(SBarInfoScript->huds[hud].forceScaled) //scale the statusbar
{
SetScaled(true);
setsizeneeded = true;
}
doCommands(SBarInfoScript->huds[hud]);
if(CPlayer->inventorytics > 0 && !(level.flags & LEVEL_NOINVENTORYBAR))
{
@ -1491,15 +1523,18 @@ private:
{
bool alwaysshow = false;
bool artibox = true;
bool noarrows = false;
if((cmd.flags & DRAWINVENTORYBAR_ALWAYSSHOW))
alwaysshow = true;
if((cmd.flags & DRAWINVENTORYBAR_NOARTIBOX))
artibox = false;
if((cmd.flags & DRAWINVENTORYBAR_NOARROWS))
noarrows = true;
if(drawingFont != cmd.font)
{
drawingFont = cmd.font;
}
DrawInventoryBar(cmd.special, cmd.value, cmd.x, cmd.y, alwaysshow, cmd.special2, cmd.special3, cmd.translation, artibox);
DrawInventoryBar(cmd.special, cmd.value, cmd.x, cmd.y, alwaysshow, cmd.special2, cmd.special3, cmd.translation, artibox, noarrows);
break;
}
case SBARINFO_DRAWBAR:
@ -1677,7 +1712,7 @@ private:
}
break;
case SBARINFO_PLAYERCLASS:
int spawnClass = CPlayer->GetSpawnClass();
int spawnClass = CPlayer->cls->ClassIndex;
if(cmd.special == spawnClass || cmd.special2 == spawnClass || cmd.special3 == spawnClass)
{
doCommands(cmd.subBlock);
@ -1855,8 +1890,8 @@ private:
}
void DrawInventoryBar(int type, int num, int x, int y, bool alwaysshow,
int counterx, int countery, EColorRange translation, bool drawArtiboxes) //yes, there is some Copy & Paste here too
{
int counterx, int countery, EColorRange translation, bool drawArtiboxes, bool noArrows)
{ //yes, there is some Copy & Paste here too
const AInventory *item;
int i;
@ -1892,16 +1927,16 @@ private:
DrawImage (Images[invBarOffset + imgARTIBOX], x+i*31, y);
}
// Is there something to the left?
if (CPlayer->mo->FirstInv() != CPlayer->mo->InvFirst)
if (!noArrows && CPlayer->mo->FirstInv() != CPlayer->mo->InvFirst)
{
DrawImage (Images[!(gametic & 4) ?
invBarOffset + imgINVLFGEM1 : invBarOffset + imgINVLFGEM2], 38, 2);
invBarOffset + imgINVLFGEM1 : invBarOffset + imgINVLFGEM2], x-12, y);
}
// Is there something to the right?
if (item != NULL)
if (!noArrows && item != NULL)
{
DrawImage (Images[!(gametic & 4) ?
invBarOffset + imgINVRTGEM1 : invBarOffset + imgINVRTGEM2], 269, 2);
invBarOffset + imgINVRTGEM1 : invBarOffset + imgINVRTGEM2], x+num*31+2, y);
}
}
}

View file

@ -9,6 +9,8 @@ struct SBarInfoCommand; //we need to be able to use this before it is defined.
struct SBarInfoBlock
{
TArray<SBarInfoCommand> commands;
bool forceScaled;
SBarInfoBlock();
};
struct SBarInfoCommand

View file

@ -654,8 +654,8 @@ OB_ACOLYTE = "%o was zealously shot down by an Acolyte.";
OB_MACIL = "%o should have never rebelled against Macil.";
OB_REBEL = "%o was gunned down by a Rebel.";
OB_BEGGAR = "%o was beaten to death by the poor.";
OB_PEASANT = "%o should have never picked fights with civilians."
OB_ALIENSPECTE = "%o was struck down by the Spectre";
OB_PEASANT = "%o should have never picked a fight with a civilian.";
OB_ALIENSPECTE = "%o was struck down by the Spectre.";
OB_ENTITY = "%o felt the wrath of The One God.";
OB_LOREMASTER = "%o couldn't escape from the Lore Master's grasp.";
OB_PROGRAMMER = "%o was deleted by the Programmer.";