qzdoom/src/g_shared/sbarinfo.h
Randy Heit d1e27e533f - Applied a modified version of Karate Chris's screenshot naming patch.
- Sbarinfo optimization: Creating and destroying bar textures every frame is
  a relatively expensive operation. We can skip the custom texture entirely
  and just draw the bars directly to the screen, using the clipping parameters
  for DrawTexture(). This also means bars are no longer limited to the game
  palette, and the bar itself has the same resolution as the screen.


SVN r731 (trunk)
2008-02-05 05:29:31 +00:00

70 lines
1.5 KiB
C++

#ifndef __SBarInfo_SBAR_H__
#define __SBarInfo_SBAR_H__
#include "tarray.h"
#include "v_collection.h"
class FBarTexture;
class FScanner;
struct SBarInfoCommand; //we need to be able to use this before it is defined.
struct SBarInfoBlock
{
TArray<SBarInfoCommand> commands;
bool forceScaled;
SBarInfoBlock();
};
struct SBarInfoCommand
{
SBarInfoCommand();
~SBarInfoCommand();
void setString(FScanner &sc, const char* source, int strnum, int maxlength=-1, bool exact=false);
int type;
int special;
int special2;
int special3;
int special4;
int flags;
int x;
int y;
int value;
int sprite;
FString string[2];
FFont *font;
EColorRange translation;
EColorRange translation2;
EColorRange translation3;
SBarInfoBlock subBlock; //for type SBarInfo_CMD_GAMEMODE
};
struct SBarInfo
{
TArray<FString> Images;
SBarInfoBlock huds[6];
bool automapbar;
bool interpolateHealth;
int interpolationSpeed;
int height;
int gameType;
int GetGameType() { return gameType; }
void ParseSBarInfo(int lump);
void ParseSBarInfoBlock(FScanner &sc, SBarInfoBlock &block);
void getCoordinates(FScanner &sc, SBarInfoCommand &cmd); //retrieves the next two arguments as x and y.
int getSignedInteger(FScanner &sc); //returns a signed integer.
int newImage(const char* patchname);
void Init();
EColorRange GetTranslation(FScanner &sc, char* translation);
SBarInfo();
SBarInfo(int lumpnum);
~SBarInfo();
};
extern SBarInfo *SBarInfoScript;
void FreeSBarInfoScript();
#endif //__SBarInfo_SBAR_H__