Improve GUIMessageMenu (move and resize elements based on size of text)
[oweals/minetest.git] / src / farmesh.cpp
index 2cd92243425c7d3c8a11212ac4288d882d291127..2b36feb4a03e453fec3050278c53c7a619bee5e6 100644 (file)
@@ -23,13 +23,16 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 */
 
 #include "farmesh.h"
+
 #include "constants.h"
 #include "debug.h"
 #include "noise.h"
 #include "map.h"
 #include "client.h"
+#include "tile.h" // ITextureSource
+#include "clientmap.h"
 
-#include "mapgen.h"
+#include "mapgen.h" // Shouldn't really be done this way
 
 FarMesh::FarMesh(
                scene::ISceneNode* parent,
@@ -47,7 +50,7 @@ FarMesh::FarMesh(
 {
        dstream<<__FUNCTION_NAME<<std::endl;
        
-       video::IVideoDriver* driver = mgr->getVideoDriver();
+       //video::IVideoDriver* driver = mgr->getVideoDriver();
 
        m_materials[0].setFlag(video::EMF_LIGHTING, false);
        m_materials[0].setFlag(video::EMF_BACK_FACE_CULLING, true);
@@ -62,15 +65,13 @@ FarMesh::FarMesh(
        m_materials[1].setFlag(video::EMF_BACK_FACE_CULLING, false);
        m_materials[1].setFlag(video::EMF_BILINEAR_FILTER, false);
        m_materials[1].setFlag(video::EMF_FOG_ENABLE, false);
-       m_materials[1].setTexture
-                       (0, driver->getTexture(getTexturePath("treeprop.png").c_str()));
+       m_materials[1].setTexture(0, client->tsrc()->getTextureRaw("treeprop.png"));
        m_materials[1].MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF;
        m_materials[1].setFlag(video::EMF_FOG_ENABLE, true);
 
        m_box = core::aabbox3d<f32>(-BS*1000000,-BS*31000,-BS*1000000,
                        BS*1000000,BS*31000,BS*1000000);
 
-    trees = g_settings.getBool("farmesh_trees");
 }
 
 FarMesh::~FarMesh()
@@ -124,7 +125,7 @@ HeightPoint ground_height(u64 seed, v2s16 p2d)
        hp.ma = (4)*BS;
        /*hp.gh = BS*base_rock_level_2d(seed, p2d);
        hp.ma = BS*get_mud_add_amount(seed, p2d);*/
-       hp.have_sand = mapgen::get_have_sand(seed, p2d);
+       hp.have_sand = mapgen::get_have_beach(seed, p2d);
        if(hp.gh > BS*WATER_LEVEL)
                hp.tree_amount = mapgen::tree_amount_2d(seed, p2d);
        else
@@ -314,11 +315,12 @@ void FarMesh::render()
                                }
                                else
                                {
-                                       // Trees if there are over 0.01 trees per MapNode
-                                       if(trees && tree_amount_avg > 0.01)
+                                       /*// Trees if there are over 0.01 trees per MapNode
+                                       if(tree_amount_avg > 0.01)
                                                c = video::SColor(255,50,128,50);
                                        else
-                                               c = video::SColor(255,107,134,51);
+                                               c = video::SColor(255,107,134,51);*/
+                                       c = video::SColor(255,107,134,51);
                                        ground_is_mud = true;
                                }
                        }
@@ -351,7 +353,7 @@ void FarMesh::render()
                                video::EVT_STANDARD, scene::EPT_TRIANGLES, video::EIT_16BIT);
 
                // Add some trees if appropriate
-               if(trees && tree_amount_avg >= 0.0065 && steepness < 1.4
+               if(tree_amount_avg >= 0.0065 && steepness < 1.4
                                && ground_is_mud == true)
                {
                        driver->setMaterial(m_materials[1]);
@@ -404,11 +406,11 @@ void FarMesh::step(float dtime)
        m_time += dtime;
 }
 
-void FarMesh::update(v2f camera_p, float brightness)
+void FarMesh::update(v2f camera_p, float brightness, s16 render_range)
 {
        m_camera_pos = camera_p;
        m_brightness = brightness;
-       m_render_range = g_settings.getS16("farmesh_distance")*10;
+       m_render_range = render_range;
 }