Ability to change the crosshair using textures
authorEsteban I. Ruiz Moreno <exio4.com@gmail.com>
Sun, 21 Apr 2013 01:39:31 +0000 (22:39 -0300)
committerkwolekr <kwolekr@minetest.net>
Fri, 26 Apr 2013 00:07:46 +0000 (20:07 -0400)
src/hud.cpp

index cf53354b214fecfb6bf05b5c959c64d735939276..375d65878c2a4ac95c09ee82e7200dd9067239fc 100644 (file)
@@ -297,7 +297,19 @@ void Hud::drawHotbar(v2s32 centerlowerpos, s32 halfheartcount, u16 playeritem) {
 
 
 void Hud::drawCrosshair() {
-       if (player->hud_flags & HUD_FLAG_CROSSHAIR_VISIBLE) {
+       if (!(player->hud_flags & HUD_FLAG_CROSSHAIR_VISIBLE))
+               return;
+       
+       ITextureSource *tsrc = gamedef->getTextureSource();
+       if (tsrc->isKnownSourceImage("crosshair.png")) {
+               video::ITexture *crosshair = tsrc->getTextureRaw("crosshair.png");
+               v2u32 size  = crosshair->getOriginalSize();
+               v2s32 lsize = v2s32(displaycenter.X - (size.X / 2),
+                                                       displaycenter.Y - (size.Y / 2));
+               driver->draw2DImage(crosshair, lsize,
+                               core::rect<s32>(0, 0, size.X, size.Y),
+                               0, crosshair_argb, true);
+       } else {
                driver->draw2DLine(displaycenter - v2s32(10, 0),
                                displaycenter + v2s32(10, 0), crosshair_argb);
                driver->draw2DLine(displaycenter - v2s32(0, 10),