@@ -41,24 +41,24 @@ with this program; if not, write to the Free Software Foundation, Inc.,
41
41
42
42
Hud::Hud (video::IVideoDriver *driver, scene::ISceneManager* smgr,
43
43
gui::IGUIEnvironment* guienv, IGameDef *gamedef, LocalPlayer *player,
44
- Inventory *inventory) {
44
+ Inventory *inventory)
45
+ {
45
46
this ->driver = driver;
46
47
this ->smgr = smgr;
47
48
this ->guienv = guienv;
48
49
this ->gamedef = gamedef;
49
50
this ->player = player;
50
51
this ->inventory = inventory;
51
52
53
+ m_hud_scaling = g_settings->getFloat (" hud_scaling" );
52
54
m_screensize = v2u32 (0 , 0 );
53
55
m_displaycenter = v2s32 (0 , 0 );
54
56
m_hotbar_imagesize = floor (HOTBAR_IMAGE_SIZE * porting::getDisplayDensity () + 0.5 );
55
- m_hotbar_imagesize *= g_settings-> getFloat ( " hud_scaling " ) ;
57
+ m_hotbar_imagesize *= m_hud_scaling ;
56
58
m_padding = m_hotbar_imagesize / 12 ;
57
59
58
- const video::SColor hbar_color (255 , 255 , 255 , 255 );
59
- for (unsigned int i=0 ; i < 4 ; i++ ){
60
- hbar_colors[i] = hbar_color;
61
- }
60
+ for (unsigned int i = 0 ; i < 4 ; i++)
61
+ hbar_colors[i] = video::SColor (255 , 255 , 255 , 255 );
62
62
63
63
tsrc = gamedef->getTextureSource ();
64
64
@@ -196,8 +196,8 @@ void Hud::drawItem(const ItemStack &item, const core::rect<s32>& rect,
196
196
}
197
197
198
198
// NOTE: selectitem = 0 -> no selected; selectitem 1-based
199
- void Hud::drawItems (v2s32 upperleftpos, s32 itemcount , s32 inv_offset ,
200
- InventoryList *mainlist, u16 selectitem, u16 direction, const v2s32 &offset )
199
+ void Hud::drawItems (v2s32 upperleftpos, v2s32 screen_offset , s32 itemcount ,
200
+ s32 inv_offset, InventoryList *mainlist, u16 selectitem, u16 direction)
201
201
{
202
202
#ifdef HAVE_TOUCHSCREENGUI
203
203
if (g_touchscreengui && inv_offset == 0 )
@@ -213,8 +213,8 @@ void Hud::drawItems(v2s32 upperleftpos, s32 itemcount, s32 inv_offset,
213
213
}
214
214
215
215
// Position of upper left corner of bar
216
- v2s32 pos = upperleftpos + offset ;
217
- pos *= g_settings-> getFloat ( " hud_scaling " ) * porting::getDisplayDensity ();
216
+ v2s32 pos = upperleftpos + screen_offset ;
217
+ pos *= m_hud_scaling * porting::getDisplayDensity ();
218
218
219
219
if (hotbar_image != player->hotbar_image ) {
220
220
hotbar_image = player->hotbar_image ;
@@ -235,7 +235,7 @@ void Hud::drawItems(v2s32 upperleftpos, s32 itemcount, s32 inv_offset,
235
235
/* draw customized item background */
236
236
if (use_hotbar_image) {
237
237
core::rect<s32> imgrect2 (-m_padding/2 , -m_padding/2 ,
238
- width+m_padding/2 , height+m_padding/2 );
238
+ width+m_padding/2 , height+m_padding/2 );
239
239
core::rect<s32> rect2 = imgrect2 + pos;
240
240
video::ITexture *texture = tsrc->getTexture (hotbar_image);
241
241
core::dimension2di imgsize (texture->getOriginalSize ());
@@ -265,7 +265,7 @@ void Hud::drawItems(v2s32 upperleftpos, s32 itemcount, s32 inv_offset,
265
265
break ;
266
266
}
267
267
268
- drawItem (mainlist->getItem (i), (imgrect + pos + steppos), (i +1 ) == selectitem );
268
+ drawItem (mainlist->getItem (i), (imgrect + pos + steppos), (i + 1 ) == selectitem);
269
269
270
270
#ifdef HAVE_TOUCHSCREENGUI
271
271
if (g_touchscreengui)
@@ -327,8 +327,8 @@ void Hud::drawLuaElements(const v3s16 &camera_offset)
327
327
break ; }
328
328
case HUD_ELEM_INVENTORY: {
329
329
InventoryList *inv = inventory->getList (e->text );
330
- v2s32 offs (e->offset .X , e->offset .Y );
331
- drawItems (pos, e-> number , 0 , inv, e->item , e->dir , offs );
330
+ drawItems (pos, v2s32 (e->offset .X , e->offset .Y ), e-> number , 0 ,
331
+ inv, e->item , e->dir );
332
332
break ; }
333
333
case HUD_ELEM_WAYPOINT: {
334
334
v3f p_pos = player->getPosition () / BS;
@@ -381,8 +381,7 @@ void Hud::drawStatbar(v2s32 pos, u16 corner, u16 drawdir, std::string texture,
381
381
if (size == v2s32 ()) {
382
382
dstd = srcd;
383
383
} else {
384
- double size_factor = g_settings->getFloat (" hud_scaling" ) *
385
- porting::getDisplayDensity ();
384
+ float size_factor = m_hud_scaling * porting::getDisplayDensity ();
386
385
dstd.Height = size.Y * size_factor;
387
386
dstd.Width = size.X * size_factor;
388
387
offset.X *= size_factor;
@@ -450,18 +449,19 @@ void Hud::drawHotbar(u16 playeritem) {
450
449
if ( (float ) width / (float ) porting::getWindowSize ().X <=
451
450
g_settings->getFloat (" hud_hotbar_max_width" )) {
452
451
if (player->hud_flags & HUD_FLAG_HOTBAR_VISIBLE) {
453
- drawItems (pos, hotbar_itemcount, 0 , mainlist, playeritem + 1 , 0 );
452
+ drawItems (pos, v2s32 ( 0 , 0 ), hotbar_itemcount, 0 , mainlist, playeritem + 1 , 0 );
454
453
}
455
- }
456
- else {
454
+ } else {
457
455
pos.X += width/4 ;
458
456
459
457
v2s32 secondpos = pos;
460
458
pos = pos - v2s32 (0 , m_hotbar_imagesize + m_padding);
461
459
462
460
if (player->hud_flags & HUD_FLAG_HOTBAR_VISIBLE) {
463
- drawItems (pos, hotbar_itemcount/2 , 0 , mainlist, playeritem + 1 , 0 );
464
- drawItems (secondpos, hotbar_itemcount, hotbar_itemcount/2 , mainlist, playeritem + 1 , 0 );
461
+ drawItems (pos, v2s32 (0 , 0 ), hotbar_itemcount / 2 , 0 ,
462
+ mainlist, playeritem + 1 , 0 );
463
+ drawItems (secondpos, v2s32 (0 , 0 ), hotbar_itemcount,
464
+ hotbar_itemcount / 2 , mainlist, playeritem + 1 , 0 );
465
465
}
466
466
}
467
467
@@ -486,8 +486,8 @@ void Hud::drawHotbar(u16 playeritem) {
486
486
}
487
487
488
488
489
- void Hud::drawCrosshair () {
490
-
489
+ void Hud::drawCrosshair ()
490
+ {
491
491
if (use_crosshair_image) {
492
492
video::ITexture *crosshair = tsrc->getTexture (" crosshair.png" );
493
493
v2u32 size = crosshair->getOriginalSize ();
@@ -600,7 +600,7 @@ void Hud::updateSelectionMesh(const v3s16 &camera_offset)
600
600
void Hud::resizeHotbar () {
601
601
if (m_screensize != porting::getWindowSize ()) {
602
602
m_hotbar_imagesize = floor (HOTBAR_IMAGE_SIZE * porting::getDisplayDensity () + 0.5 );
603
- m_hotbar_imagesize *= g_settings-> getFloat ( " hud_scaling " ) ;
603
+ m_hotbar_imagesize *= m_hud_scaling ;
604
604
m_padding = m_hotbar_imagesize / 12 ;
605
605
m_screensize = porting::getWindowSize ();
606
606
m_displaycenter = v2s32 (m_screensize.X /2 ,m_screensize.Y /2 );
0 commit comments