mirror of
https://github.com/TerryCavanagh/VVVVVV.git
synced 2024-12-22 01:29:43 +01:00
Add textoutline(on/off/default)
This commit adds a new scripting command for textbox visual control, where you're able to force the transparent textbox's outline on or off.
This commit is contained in:
parent
45e60fa69c
commit
98a0931225
6 changed files with 60 additions and 7 deletions
|
@ -929,13 +929,20 @@ void Graphics::drawgui(void)
|
|||
size_t j;
|
||||
for (j = 0; j < textboxes[i].lines.size(); j++)
|
||||
{
|
||||
font::print(
|
||||
print_flags | PR_BOR,
|
||||
text_xp,
|
||||
yp + text_yoff + text_sign * (j * (font_height + textboxes[i].linegap)),
|
||||
textbox_line(buffer, sizeof(buffer), i, j),
|
||||
0, 0, 0
|
||||
);
|
||||
const int x = text_xp;
|
||||
const int y = yp + text_yoff + text_sign * (j * (font_height + textboxes[i].linegap));
|
||||
if (!textboxes[i].force_outline)
|
||||
{
|
||||
font::print(print_flags | PR_BOR, x, y, textbox_line(buffer, sizeof(buffer), i, j), 0, 0, 0);
|
||||
}
|
||||
else if (textboxes[i].outline)
|
||||
{
|
||||
// We're forcing an outline, so we'll have to draw it ourselves instead of relying on PR_BOR.
|
||||
font::print(print_flags, x - 1, y, textbox_line(buffer, sizeof(buffer), i, j), 0, 0, 0);
|
||||
font::print(print_flags, x + 1, y, textbox_line(buffer, sizeof(buffer), i, j), 0, 0, 0);
|
||||
font::print(print_flags, x, y - 1, textbox_line(buffer, sizeof(buffer), i, j), 0, 0, 0);
|
||||
font::print(print_flags, x, y + 1, textbox_line(buffer, sizeof(buffer), i, j), 0, 0, 0);
|
||||
}
|
||||
}
|
||||
for (j = 0; j < textboxes[i].lines.size(); j++)
|
||||
{
|
||||
|
@ -1483,6 +1490,18 @@ void Graphics::setimage(TextboxImage image)
|
|||
textboxes[m].setimage(image);
|
||||
}
|
||||
|
||||
void Graphics::textboxoutline(bool enabled)
|
||||
{
|
||||
if (!INBOUNDS_VEC(m, textboxes))
|
||||
{
|
||||
vlog_error("textboxoutline() out-of-bounds!");
|
||||
return;
|
||||
}
|
||||
|
||||
textboxes[m].force_outline = true;
|
||||
textboxes[m].outline = enabled;
|
||||
}
|
||||
|
||||
void Graphics::addline( const std::string& t )
|
||||
{
|
||||
if (!INBOUNDS_VEC(m, textboxes))
|
||||
|
|
|
@ -137,6 +137,8 @@ public:
|
|||
|
||||
void setimage(TextboxImage image);
|
||||
|
||||
void textboxoutline(bool enabled);
|
||||
|
||||
void textboxindex(int index);
|
||||
|
||||
void textboxremove(void);
|
||||
|
|
|
@ -568,6 +568,8 @@ void scriptclass::run(void)
|
|||
textbox_sprites.clear();
|
||||
textbox_image = TEXTIMAGE_NONE;
|
||||
textbox_forcepos = false;
|
||||
textbox_force_outline = false;
|
||||
textbox_outline = false;
|
||||
}
|
||||
else if (words[0] == "position")
|
||||
{
|
||||
|
@ -746,6 +748,23 @@ void scriptclass::run(void)
|
|||
textbox_image = TEXTIMAGE_NONE;
|
||||
}
|
||||
}
|
||||
else if (words[0] == "textoutline")
|
||||
{
|
||||
if (words[1] == "default")
|
||||
{
|
||||
textbox_force_outline = false;
|
||||
}
|
||||
else if (words[1] == "on")
|
||||
{
|
||||
textbox_force_outline = true;
|
||||
textbox_outline = true;
|
||||
}
|
||||
else if (words[1] == "off")
|
||||
{
|
||||
textbox_force_outline = true;
|
||||
textbox_outline = false;
|
||||
}
|
||||
}
|
||||
else if (words[0] == "flipme")
|
||||
{
|
||||
textflipme = !textflipme;
|
||||
|
@ -803,6 +822,11 @@ void scriptclass::run(void)
|
|||
}
|
||||
}
|
||||
|
||||
if (textbox_force_outline)
|
||||
{
|
||||
graphics.textboxoutline(textbox_outline);
|
||||
}
|
||||
|
||||
TextboxOriginalContext context = TextboxOriginalContext();
|
||||
context.text_case = textcase;
|
||||
context.lines = std::vector<std::string>(txt);
|
||||
|
|
|
@ -123,6 +123,8 @@ public:
|
|||
std::vector<TextboxSprite> textbox_sprites;
|
||||
TextboxImage textbox_image;
|
||||
bool textbox_forcepos;
|
||||
bool textbox_force_outline;
|
||||
bool textbox_outline;
|
||||
|
||||
//Misc
|
||||
int i, j, k;
|
||||
|
|
|
@ -43,6 +43,9 @@ textboxclass::textboxclass(int gap)
|
|||
|
||||
image = TEXTIMAGE_NONE;
|
||||
|
||||
force_outline = false;
|
||||
outline = false;
|
||||
|
||||
crewmate_position = TextboxCrewmatePosition();
|
||||
original = TextboxOriginalContext();
|
||||
original.text_case = 1;
|
||||
|
|
|
@ -137,6 +137,9 @@ public:
|
|||
std::vector<TextboxSprite> sprites;
|
||||
TextboxImage image;
|
||||
|
||||
bool force_outline;
|
||||
bool outline;
|
||||
|
||||
TextboxCrewmatePosition crewmate_position;
|
||||
TextboxOriginalContext original;
|
||||
TextboxSpacing spacing;
|
||||
|
|
Loading…
Reference in a new issue