From bbe47f845b887899065f6daca4cd16060d80553f Mon Sep 17 00:00:00 2001
From: Perttu Ahola <celeron55@gmail.com>
Date: Fri, 22 Apr 2011 10:48:40 +0300
Subject: [PATCH] Updated to-do list and added the give_initial_stuff setting
 for testing

---
 minetest.conf.example   |  2 ++
 src/defaultsettings.cpp |  3 +--
 src/main.cpp            | 30 +++++++-----------------------
 src/server.cpp          | 36 +++++++++++++++++++++++++-----------
 4 files changed, 35 insertions(+), 36 deletions(-)

diff --git a/minetest.conf.example b/minetest.conf.example
index 02cfb7aad..770677da1 100644
--- a/minetest.conf.example
+++ b/minetest.conf.example
@@ -54,6 +54,8 @@
 
 #enable_damage = false
 
+#give_initial_stuff = false
+
 # Player and object positions are sent at intervals specified by this
 #objectdata_inverval = 0.2
 
diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp
index b5d863914..d1e9d45cd 100644
--- a/src/defaultsettings.cpp
+++ b/src/defaultsettings.cpp
@@ -51,11 +51,10 @@ void set_default_settings()
 	g_settings.setDefault("fast_move", "false");
 
 	// Server stuff
-	g_settings.setDefault("fast_move", "false");
-
 	g_settings.setDefault("enable_experimental", "false");
 	g_settings.setDefault("creative_mode", "false");
 	g_settings.setDefault("enable_damage", "false"); //TODO: Set to true
+	g_settings.setDefault("give_initial_stuff", "false");
 
 	g_settings.setDefault("objectdata_interval", "0.2");
 	g_settings.setDefault("active_object_range", "2");
diff --git a/src/main.cpp b/src/main.cpp
index 6293809be..2dfef7d1b 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -21,27 +21,17 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 =============================== NOTES ==============================
 NOTE: Things starting with TODO are sometimes only suggestions.
 
-NOTE: VBO cannot be turned on for fast-changing stuff because there
-      is an apparanet memory leak in irrlicht when using it (not sure)
-	  - It is not a memory leak but some kind of a buffer.
-
 NOTE: iostream.imbue(std::locale("C")) is very slow
 NOTE: Global locale is now set at initialization
 
+NOTE: If VBO (EHM_STATIC) is used, remember to explicitly free the
+      hardware buffer (it is not freed automatically)
+
 Random suggeestions (AKA very old suggestions that haven't been done):
 ----------------------------------------------------------------------
 
 SUGG: Fix address to be ipv6 compatible
 
-NOTE: When a new sector is generated, it may change the ground level
-      of it's and it's neighbors border that two blocks that are
-	  above and below each other and that are generated before and
-	  after the sector heightmap generation (order doesn't matter),
-	  can have a small gap between each other at the border.
-SUGG: Use same technique for sector heightmaps as what we're
-      using for UnlimitedHeightmap? (getting all neighbors
-	  when generating)
-
 SUGG: If player is on ground, mainly fetch ground-level blocks
 
 SUGG: Expose Connection's seqnums and ACKs to server and client.
@@ -67,11 +57,6 @@ SUGG: Make a PACKET_COMBINED which contains many subpackets. Utilize
 		  sometimes very big by themselves
 	  - This might not give much network performance gain though.
 
-SUGG: Split MapBlockObject serialization to to-client and to-disk
-      - This will allow saving ages of rats on disk but not sending
-	    them to clients
-	  - Not applicable. MapBlockObjects will be removed in the future.
-
 SUGG: Precalculate lighting translation table at runtime (at startup)
       - This is not doable because it is currently hand-made and not
 	    based on some mathematical function.
@@ -159,7 +144,7 @@ TODO: Configuration menu, at least for keys
 ---------
 
 SUGG: Combine MapBlock's face caches to so big pieces that VBO
-      gets used
+      can be used
       - That is >500 vertices
 	  - This is not easy; all the MapBlocks close to the player would
 	    still need to be drawn separately and combining the blocks
@@ -171,14 +156,11 @@ SUGG: Make fetching sector's blocks more efficient when rendering
 
 TODO: Flowing water animation
 
-SUGG: Combine meshes to bigger ones in ClientMap and set them EHM_STATIC
-
 SUGG: Draw cubes in inventory directly with 3D drawing commands, so that
       animating them is easier.
 
 SUGG: Option for enabling proper alpha channel for textures
-
-TODO: Make all water not backside culled
+TODO: A setting for enabling bilinear filtering for textures
 
 Configuration:
 --------------
@@ -224,6 +206,7 @@ TODO: Get rid of MapBlockObjects and use ActiveObjects
 SUGG: MovingObject::move and Player::move are basically the same.
       combine them.
 	  - NOTE: Player::move is more up-to-date.
+	  - NOTE: There is a simple move implementation now in collision.{h,cpp}
 
 Map:
 ----
@@ -233,6 +216,7 @@ TODO: Mineral and ground material properties
 	    some formula, as well as tool strengths
 
 TODO: Flowing water to actually contain flow direction information
+      - There is a space for this - it just has to be implemented.
 
 SUGG: Erosion simulation at map generation time
 	- Simulate water flows, which would carve out dirt fast and
diff --git a/src/server.cpp b/src/server.cpp
index ee7a035e6..89359cd5e 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -4082,13 +4082,33 @@ Player *Server::emergePlayer(const char *name, const char *password,
 		{
 			setCreativeInventory(player);
 		}
-		else
+		else if(g_settings.getBool("give_initial_stuff"))
 		{
-			/*{
-				InventoryItem *item = new ToolItem("WPick", 32000);
+			{
+				InventoryItem *item = new ToolItem("SteelPick", 0);
 				void* r = player->inventory.addItem("main", item);
 				assert(r == NULL);
-			}*/
+			}
+			{
+				InventoryItem *item = new MaterialItem(CONTENT_TORCH, 99);
+				void* r = player->inventory.addItem("main", item);
+				assert(r == NULL);
+			}
+			{
+				InventoryItem *item = new ToolItem("SteelAxe", 0);
+				void* r = player->inventory.addItem("main", item);
+				assert(r == NULL);
+			}
+			{
+				InventoryItem *item = new ToolItem("SteelShovel", 0);
+				void* r = player->inventory.addItem("main", item);
+				assert(r == NULL);
+			}
+			{
+				InventoryItem *item = new MaterialItem(CONTENT_COBBLE, 99);
+				void* r = player->inventory.addItem("main", item);
+				assert(r == NULL);
+			}
 			/*{
 				InventoryItem *item = new MaterialItem(CONTENT_MESE, 6);
 				void* r = player->inventory.addItem("main", item);
@@ -4119,13 +4139,7 @@ Player *Server::emergePlayer(const char *name, const char *password,
 				void* r = player->inventory.addItem("main", item);
 				assert(r == NULL);
 			}*/
-			/*// Give some lights
-			{
-				InventoryItem *item = new MaterialItem(CONTENT_TORCH, 999);
-				bool r = player->inventory.addItem("main", item);
-				assert(r == true);
-			}
-			// and some signs
+			/*// and some signs
 			for(u16 i=0; i<4; i++)
 			{
 				InventoryItem *item = new MapBlockObjectItem("Sign Example text");
-- 
GitLab