Fix outlines

This commit is contained in:
LightCat 2019-03-05 19:15:45 +01:00
parent 897a4ab3f5
commit 096c801ef7
3 changed files with 34 additions and 10 deletions

View File

@ -395,12 +395,10 @@ static CatCommand generateschema("schema_generate", "Generate custom schema", []
std::ifstream in("tf/scripts/items/items_game.txt"); std::ifstream in("tf/scripts/items/items_game.txt");
std::string outS((std::istreambuf_iterator<char>(in)), std::istreambuf_iterator<char>()); std::string outS((std::istreambuf_iterator<char>(in)), std::istreambuf_iterator<char>());
std::ofstream out("/opt/cathook/data/items_game.txt"); std::ofstream out("/opt/cathook/data/items_game.txt");
std::regex a("\"equip_regions\".*?\".*?\""); std::regex a("\"equip_regions?\".*?\".*?\"");
std::regex b("\"equip_region\".*?\".*?\""); std::regex b("\"equip_regions?\"\\s*?\\n\\s*?\\{[\\s\\S\\n]*?\\}");
std::regex c("\"equip_regions\"[\\s\\S\\n]*?}");
outS = std::regex_replace(outS, a, ""); outS = std::regex_replace(outS, a, "");
outS = std::regex_replace(outS, b, ""); out << std::regex_replace(outS, b, "");
out << std::regex_replace(outS, c, "");
out.close(); out.close();
}); });

View File

@ -94,7 +94,7 @@ void font::Init()
static std::string filename; static std::string filename;
filename.append("ab"); filename.append("ab");
id = g_ISurface->CreateFont(); id = g_ISurface->CreateFont();
auto flag = outline ? vgui::ISurface::FONTFLAG_OUTLINE | vgui::ISurface::FONTFLAG_ANTIALIAS : vgui::ISurface::FONTFLAG_ANTIALIAS; auto flag = vgui::ISurface::FONTFLAG_ANTIALIAS;
g_ISurface->SetFontGlyphSet(id, filename.c_str(), size, 500, 0, 0, flag); g_ISurface->SetFontGlyphSet(id, filename.c_str(), size, 500, 0, 0, flag);
g_ISurface->AddCustomFontFile(filename.c_str(), path.c_str()); g_ISurface->AddCustomFontFile(filename.c_str(), path.c_str());
init = true; init = true;
@ -132,9 +132,9 @@ void Initialize()
#if !ENABLE_ENGINE_DRAWING #if !ENABLE_ENGINE_DRAWING
glez::preInit(); glez::preInit();
#endif #endif
fonts::menu.reset(new fonts::font(DATA_PATH "/fonts/verasans.ttf", 14, true)); fonts::menu.reset(new fonts::font(DATA_PATH "/fonts/verasans.ttf", 10, true));
fonts::esp.reset(new fonts::font(DATA_PATH "/fonts/verasans.ttf", 14, true)); fonts::esp.reset(new fonts::font(DATA_PATH "/fonts/verasans.ttf", 10, true));
fonts::center_screen.reset(new fonts::font(DATA_PATH "/fonts/verasans.ttf", 18, true)); fonts::center_screen.reset(new fonts::font(DATA_PATH "/fonts/verasans.ttf", 12, true));
texture_white = g_ISurface->CreateNewTextureID(); texture_white = g_ISurface->CreateNewTextureID();
unsigned char colorBuffer[4] = { 255, 255, 255, 255 }; unsigned char colorBuffer[4] = { 255, 255, 255, 255 };
@ -147,6 +147,32 @@ void String(int x, int y, rgba_t rgba, const char *text, fonts::font &font)
glez::draw::outlined_string(x, y, text, font, rgba, colors::black, nullptr, nullptr); glez::draw::outlined_string(x, y, text, font, rgba, colors::black, nullptr, nullptr);
#else #else
rgba = rgba * 255.0f; rgba = rgba * 255.0f;
// Outline magic
if (font.outline)
{
// Save Space
for (int i = -1; i < 2; i += 2)
{
// All needed for one draw
// X Shift draw
g_ISurface->DrawSetTextPos(x + i, y);
g_ISurface->DrawSetTextFont(font);
g_ISurface->DrawSetTextColor(0, 0, 0, rgba.a);
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t> > converter;
std::wstring ws = converter.from_bytes(text);
g_ISurface->DrawPrintText(ws.c_str(), ws.size() + 1);
// Y Shift draw
g_ISurface->DrawSetTextPos(x, y + i);
g_ISurface->DrawSetTextFont(font);
g_ISurface->DrawSetTextColor(0, 0, 0, rgba.a);
ws = converter.from_bytes(text);
g_ISurface->DrawPrintText(ws.c_str(), ws.size() + 1);
}
}
g_ISurface->DrawSetTextPos(x, y); g_ISurface->DrawSetTextPos(x, y);
g_ISurface->DrawSetTextFont(font); g_ISurface->DrawSetTextFont(font);
g_ISurface->DrawSetTextColor(rgba.r, rgba.g, rgba.b, rgba.a); g_ISurface->DrawSetTextColor(rgba.r, rgba.g, rgba.b, rgba.a);

View File

@ -9,7 +9,7 @@
void zerokernel::Text::render() void zerokernel::Text::render()
{ {
draw::String(bb.getContentBox().left() + text_x, bb.getContentBox().top() + text_y, *color_text, data.c_str(), resource::font::base); draw::String(bb.getContentBox().left() + text_x, bb.getContentBox().top() + text_y + 1, *color_text, data.c_str(), resource::font::base);
BaseMenuObject::render(); BaseMenuObject::render();
} }