mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2025-02-26 21:20:57 +00:00
- Fixed: drawstring didn't properly align itself when variable strings were used.
SVN r2360 (trunk)
This commit is contained in:
parent
ed81b4718b
commit
afd9bcb59a
1 changed files with 23 additions and 14 deletions
|
@ -582,7 +582,7 @@ class CommandDrawString : public SBarInfoCommand
|
||||||
str = sc.String;
|
str = sc.String;
|
||||||
}
|
}
|
||||||
sc.MustGetToken(',');
|
sc.MustGetToken(',');
|
||||||
GetCoordinates(sc, fullScreenOffsets, x, y);
|
GetCoordinates(sc, fullScreenOffsets, startX, y);
|
||||||
if(sc.CheckToken(',')) //spacing
|
if(sc.CheckToken(',')) //spacing
|
||||||
{
|
{
|
||||||
sc.MustGetToken(TK_IntConst);
|
sc.MustGetToken(TK_IntConst);
|
||||||
|
@ -590,10 +590,7 @@ class CommandDrawString : public SBarInfoCommand
|
||||||
}
|
}
|
||||||
sc.MustGetToken(';');
|
sc.MustGetToken(';');
|
||||||
|
|
||||||
if(script->spacingCharacter == '\0')
|
RealignString();
|
||||||
x -= static_cast<int> (font->StringWidth(str)+(spacing * str.Len()));
|
|
||||||
else //monospaced, so just multiplay the character size
|
|
||||||
x -= static_cast<int> ((font->GetCharWidth((int) script->spacingCharacter) + spacing) * str.Len());
|
|
||||||
}
|
}
|
||||||
void Reset()
|
void Reset()
|
||||||
{
|
{
|
||||||
|
@ -619,6 +616,7 @@ class CommandDrawString : public SBarInfoCommand
|
||||||
{
|
{
|
||||||
cache = level.lumpnum;
|
cache = level.lumpnum;
|
||||||
str = level.LevelName;
|
str = level.LevelName;
|
||||||
|
RealignString();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LEVELLUMP:
|
case LEVELLUMP:
|
||||||
|
@ -626,6 +624,7 @@ class CommandDrawString : public SBarInfoCommand
|
||||||
{
|
{
|
||||||
cache = level.lumpnum;
|
cache = level.lumpnum;
|
||||||
str = level.mapname;
|
str = level.mapname;
|
||||||
|
RealignString();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SKILLNAME:
|
case SKILLNAME:
|
||||||
|
@ -633,6 +632,7 @@ class CommandDrawString : public SBarInfoCommand
|
||||||
{
|
{
|
||||||
cache = level.lumpnum;
|
cache = level.lumpnum;
|
||||||
str = G_SkillName();
|
str = G_SkillName();
|
||||||
|
RealignString();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PLAYERCLASS:
|
case PLAYERCLASS:
|
||||||
|
@ -640,6 +640,7 @@ class CommandDrawString : public SBarInfoCommand
|
||||||
{
|
{
|
||||||
cache = statusBar->CPlayer->userinfo.PlayerClass;
|
cache = statusBar->CPlayer->userinfo.PlayerClass;
|
||||||
str = statusBar->CPlayer->cls->Meta.GetMetaString(APMETA_DisplayName);
|
str = statusBar->CPlayer->cls->Meta.GetMetaString(APMETA_DisplayName);
|
||||||
|
RealignString();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case AMMO1TAG:
|
case AMMO1TAG:
|
||||||
|
@ -658,12 +659,14 @@ class CommandDrawString : public SBarInfoCommand
|
||||||
// Can't think of a good way to detect changes to this, so
|
// Can't think of a good way to detect changes to this, so
|
||||||
// I guess copying it every tick will have to do.
|
// I guess copying it every tick will have to do.
|
||||||
str = statusBar->CPlayer->userinfo.netname;
|
str = statusBar->CPlayer->userinfo.netname;
|
||||||
|
RealignString();
|
||||||
break;
|
break;
|
||||||
case GLOBALVAR:
|
case GLOBALVAR:
|
||||||
if(ACS_GlobalVars[valueArgument] != cache)
|
if(ACS_GlobalVars[valueArgument] != cache)
|
||||||
{
|
{
|
||||||
cache = ACS_GlobalVars[valueArgument];
|
cache = ACS_GlobalVars[valueArgument];
|
||||||
str = FBehavior::StaticLookupString(ACS_GlobalVars[valueArgument]);
|
str = FBehavior::StaticLookupString(ACS_GlobalVars[valueArgument]);
|
||||||
|
RealignString();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GLOBALARRAY:
|
case GLOBALARRAY:
|
||||||
|
@ -671,6 +674,7 @@ class CommandDrawString : public SBarInfoCommand
|
||||||
{
|
{
|
||||||
cache = ACS_GlobalArrays[valueArgument][consoleplayer];
|
cache = ACS_GlobalArrays[valueArgument][consoleplayer];
|
||||||
str = FBehavior::StaticLookupString(ACS_GlobalArrays[valueArgument][consoleplayer]);
|
str = FBehavior::StaticLookupString(ACS_GlobalArrays[valueArgument][consoleplayer]);
|
||||||
|
RealignString();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -678,6 +682,15 @@ class CommandDrawString : public SBarInfoCommand
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
protected:
|
protected:
|
||||||
|
void RealignString()
|
||||||
|
{
|
||||||
|
x = startX;
|
||||||
|
if(script->spacingCharacter == '\0')
|
||||||
|
x -= static_cast<int> (font->StringWidth(str)+(spacing * str.Len()));
|
||||||
|
else //monospaced, so just multiplay the character size
|
||||||
|
x -= static_cast<int> ((font->GetCharWidth((int) script->spacingCharacter) + spacing) * str.Len());
|
||||||
|
}
|
||||||
|
|
||||||
enum StringValueType
|
enum StringValueType
|
||||||
{
|
{
|
||||||
LEVELNAME,
|
LEVELNAME,
|
||||||
|
@ -701,6 +714,7 @@ class CommandDrawString : public SBarInfoCommand
|
||||||
int spacing;
|
int spacing;
|
||||||
FFont *font;
|
FFont *font;
|
||||||
EColorRange translation;
|
EColorRange translation;
|
||||||
|
SBarInfoCoordinate startX;
|
||||||
SBarInfoCoordinate x;
|
SBarInfoCoordinate x;
|
||||||
SBarInfoCoordinate y;
|
SBarInfoCoordinate y;
|
||||||
int cache; /// General purpose cache.
|
int cache; /// General purpose cache.
|
||||||
|
@ -717,6 +731,7 @@ class CommandDrawString : public SBarInfoCommand
|
||||||
{
|
{
|
||||||
cache = actor->GetClass()->ClassIndex;
|
cache = actor->GetClass()->ClassIndex;
|
||||||
str = actor->GetTag();
|
str = actor->GetTag();
|
||||||
|
RealignString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1062,8 +1077,6 @@ class CommandDrawNumber : public CommandDrawString
|
||||||
else if(highValue != -1 && drawValue >= highValue) //high
|
else if(highValue != -1 && drawValue >= highValue) //high
|
||||||
translation = highTranslation;
|
translation = highTranslation;
|
||||||
|
|
||||||
x = startX;
|
|
||||||
|
|
||||||
// 10^9 is a largest we can hold in a 32-bit int. So if we go any larger we have to toss out the positions limit.
|
// 10^9 is a largest we can hold in a 32-bit int. So if we go any larger we have to toss out the positions limit.
|
||||||
int maxval = length <= 9 ? (int) ceil(pow(10., length))-1 : INT_MAX;
|
int maxval = length <= 9 ? (int) ceil(pow(10., length))-1 : INT_MAX;
|
||||||
if(!fillZeros || length == 1)
|
if(!fillZeros || length == 1)
|
||||||
|
@ -1083,10 +1096,8 @@ class CommandDrawNumber : public CommandDrawString
|
||||||
str.Insert(0, "0");
|
str.Insert(0, "0");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(script->spacingCharacter == '\0')
|
|
||||||
x -= static_cast<int> (font->StringWidth(str)+(spacing * str.Len()));
|
RealignString();
|
||||||
else //monospaced, so just multiplay the character size
|
|
||||||
x -= static_cast<int> ((font->GetCharWidth((int) script->spacingCharacter) + spacing) * str.Len());
|
|
||||||
}
|
}
|
||||||
protected:
|
protected:
|
||||||
enum ValueType
|
enum ValueType
|
||||||
|
@ -1131,8 +1142,6 @@ class CommandDrawNumber : public CommandDrawString
|
||||||
ValueType value;
|
ValueType value;
|
||||||
const PClass *inventoryItem;
|
const PClass *inventoryItem;
|
||||||
|
|
||||||
SBarInfoCoordinate startX;
|
|
||||||
|
|
||||||
friend class CommandDrawInventoryBar;
|
friend class CommandDrawInventoryBar;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue