mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-12 15:44:10 +00:00
d1e27e533f
- 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)
70 lines
1.5 KiB
C++
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__
|