aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/client/clientevent.h2
-rw-r--r--src/client/game.cpp6
-rw-r--r--src/client/hud.cpp7
-rw-r--r--src/hud.cpp2
-rw-r--r--src/hud.h4
-rw-r--r--src/network/clientpackethandler.cpp10
-rw-r--r--src/script/common/c_content.cpp17
-rw-r--r--src/server.cpp6
8 files changed, 50 insertions, 4 deletions
diff --git a/src/client/clientevent.h b/src/client/clientevent.h
index 2215aecbd..09f432413 100644
--- a/src/client/clientevent.h
+++ b/src/client/clientevent.h
@@ -64,6 +64,7 @@ struct ClientEventHudAdd
v3f world_pos;
v2s32 size;
s16 z_index;
+ bool bold, italic;
};
struct ClientEventHudChange
@@ -73,6 +74,7 @@ struct ClientEventHudChange
v2f v2fdata;
std::string sdata;
u32 data;
+ bool booldata;
v3f v3fdata;
v2s32 v2s32data;
};
diff --git a/src/client/game.cpp b/src/client/game.cpp
index 2575e5406..b14783531 100644
--- a/src/client/game.cpp
+++ b/src/client/game.cpp
@@ -2666,6 +2666,8 @@ void Game::handleClientEvent_HudAdd(ClientEvent *event, CameraOrientation *cam)
e->size = event->hudadd->size;
e->z_index = event->hudadd->z_index;
e->text2 = event->hudadd->text2;
+ e->bold = event->hudadd->bold;
+ e->italic = event->hudadd->italic;
m_hud_server_to_client[server_id] = player->addHud(e);
delete event->hudadd;
@@ -2731,6 +2733,10 @@ void Game::handleClientEvent_HudChange(ClientEvent *event, CameraOrientation *ca
CASE_SET(HUD_STAT_Z_INDEX, z_index, data);
CASE_SET(HUD_STAT_TEXT2, text2, sdata);
+
+ CASE_SET(HUD_STAT_BOLD, bold, booldata);
+
+ CASE_SET(HUD_STAT_ITALIC, italic, booldata);
}
#undef CASE_SET
diff --git a/src/client/hud.cpp b/src/client/hud.cpp
index 46736b325..155776883 100644
--- a/src/client/hud.cpp
+++ b/src/client/hud.cpp
@@ -358,13 +358,14 @@ void Hud::drawLuaElements(const v3s16 &camera_offset)
switch (e->type) {
case HUD_ELEM_TEXT: {
irr::gui::IGUIFont *textfont = font;
- unsigned int font_size = g_fontengine->getDefaultFontSize();
+ unsigned int default_font_size = g_fontengine->getDefaultFontSize();
+ unsigned int font_size = default_font_size;
if (e->size.X > 0)
font_size *= e->size.X;
- if (font_size != g_fontengine->getDefaultFontSize())
- textfont = g_fontengine->getFont(font_size);
+ if (font_size != default_font_size || e->bold || e->italic)
+ textfont = g_fontengine->getFont(FontSpec(font_size, FM_Standard, e->bold, e->italic));
video::SColor color(255, (e->number >> 16) & 0xFF,
(e->number >> 8) & 0xFF,
diff --git a/src/hud.cpp b/src/hud.cpp
index 1791e04df..9bc8ca5a2 100644
--- a/src/hud.cpp
+++ b/src/hud.cpp
@@ -50,6 +50,8 @@ const struct EnumString es_HudElementStat[] =
{HUD_STAT_SIZE, "size"},
{HUD_STAT_Z_INDEX, "z_index"},
{HUD_STAT_TEXT2, "text2"},
+ {HUD_STAT_BOLD, "bold"},
+ {HUD_STAT_ITALIC, "italic"},
{0, NULL},
};
diff --git a/src/hud.h b/src/hud.h
index a0613ae98..5baa1214a 100644
--- a/src/hud.h
+++ b/src/hud.h
@@ -78,6 +78,8 @@ enum HudElementStat {
HUD_STAT_SIZE,
HUD_STAT_Z_INDEX,
HUD_STAT_TEXT2,
+ HUD_STAT_BOLD,
+ HUD_STAT_ITALIC,
};
enum HudCompassDir {
@@ -102,6 +104,8 @@ struct HudElement {
v2s32 size;
s16 z_index = 0;
std::string text2;
+ bool bold;
+ bool italic;
};
extern const EnumString es_HudElementType[];
diff --git a/src/network/clientpackethandler.cpp b/src/network/clientpackethandler.cpp
index c8a160732..2b8d9b222 100644
--- a/src/network/clientpackethandler.cpp
+++ b/src/network/clientpackethandler.cpp
@@ -1056,6 +1056,8 @@ void Client::handleCommand_HudAdd(NetworkPacket* pkt)
v2s32 size;
s16 z_index = 0;
std::string text2;
+ bool bold = false;
+ bool italic = false;
*pkt >> server_id >> type >> pos >> name >> scale >> text >> number >> item
>> dir >> align >> offset;
@@ -1064,6 +1066,8 @@ void Client::handleCommand_HudAdd(NetworkPacket* pkt)
*pkt >> size;
*pkt >> z_index;
*pkt >> text2;
+ *pkt >> bold;
+ *pkt >> italic;
} catch(PacketError &e) {};
ClientEvent *event = new ClientEvent();
@@ -1084,6 +1088,8 @@ void Client::handleCommand_HudAdd(NetworkPacket* pkt)
event->hudadd->size = size;
event->hudadd->z_index = z_index;
event->hudadd->text2 = text2;
+ event->hudadd->bold = bold;
+ event->hudadd->italic = italic;
m_client_event_queue.push(event);
}
@@ -1105,6 +1111,7 @@ void Client::handleCommand_HudChange(NetworkPacket* pkt)
v2f v2fdata;
v3f v3fdata;
u32 intdata = 0;
+ bool booldata = false;
v2s32 v2s32data;
u32 server_id;
u8 stat;
@@ -1120,6 +1127,8 @@ void Client::handleCommand_HudChange(NetworkPacket* pkt)
*pkt >> v3fdata;
else if (stat == HUD_STAT_SIZE )
*pkt >> v2s32data;
+ else if (stat == HUD_STAT_BOLD || stat == HUD_STAT_ITALIC)
+ *pkt >> booldata;
else
*pkt >> intdata;
@@ -1132,6 +1141,7 @@ void Client::handleCommand_HudChange(NetworkPacket* pkt)
event->hudchange->v3fdata = v3fdata;
event->hudchange->sdata = sdata;
event->hudchange->data = intdata;
+ event->hudchange->booldata = booldata;
event->hudchange->v2s32data = v2s32data;
m_client_event_queue.push(event);
}
diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp
index eca0c89d1..83917f3ed 100644
--- a/src/script/common/c_content.cpp
+++ b/src/script/common/c_content.cpp
@@ -1925,6 +1925,9 @@ void read_hud_element(lua_State *L, HudElement *elem)
elem->world_pos = lua_istable(L, -1) ? read_v3f(L, -1) : v3f();
lua_pop(L, 1);
+ elem->bold = getboolfield_default(L, 2, "bold", false);
+ elem->italic = getboolfield_default(L, 2, "italic", false);
+
/* check for known deprecated element usage */
if ((elem->type == HUD_ELEM_STATBAR) && (elem->size == v2s32()))
log_deprecated(L,"Deprecated usage of statbar without size!");
@@ -1979,6 +1982,12 @@ void push_hud_element(lua_State *L, HudElement *elem)
lua_pushstring(L, elem->text2.c_str());
lua_setfield(L, -2, "text2");
+
+ lua_pushboolean(L, elem->bold);
+ lua_setfield(L, -2, "bold");
+
+ lua_pushboolean(L, elem->italic);
+ lua_setfield(L, -2, "italic");
}
HudElementStat read_hud_change(lua_State *L, HudElement *elem, void **value)
@@ -2047,6 +2056,14 @@ HudElementStat read_hud_change(lua_State *L, HudElement *elem, void **value)
elem->text2 = luaL_checkstring(L, 4);
*value = &elem->text2;
break;
+ case HUD_STAT_BOLD:
+ elem->bold = lua_toboolean(L, 4);
+ *value = &elem->bold;
+ break;
+ case HUD_STAT_ITALIC:
+ elem->italic = lua_toboolean(L, 4);
+ *value = &elem->italic;
+ break;
}
return stat;
}
diff --git a/src/server.cpp b/src/server.cpp
index a8d452783..2041f84f4 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -1638,7 +1638,7 @@ void Server::SendHUDAdd(session_t peer_id, u32 id, HudElement *form)
pkt << id << (u8) form->type << form->pos << form->name << form->scale
<< form->text << form->number << form->item << form->dir
<< form->align << form->offset << form->world_pos << form->size
- << form->z_index << form->text2;
+ << form->z_index << form->text2 << form->bold << form->italic;
Send(&pkt);
}
@@ -1673,6 +1673,10 @@ void Server::SendHUDChange(session_t peer_id, u32 id, HudElementStat stat, void
case HUD_STAT_SIZE:
pkt << *(v2s32 *) value;
break;
+ case HUD_STAT_BOLD:
+ case HUD_STAT_ITALIC:
+ pkt << *(bool *) value;
+ break;
case HUD_STAT_NUMBER:
case HUD_STAT_ITEM:
case HUD_STAT_DIR: