aboutsummaryrefslogtreecommitdiff
path: root/src/game.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game.cpp')
-rw-r--r--src/game.cpp47
1 files changed, 25 insertions, 22 deletions
diff --git a/src/game.cpp b/src/game.cpp
index 43d09b316..a0bc5ac15 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -44,12 +44,13 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "log.h"
#include "filesys.h"
// Needed for determining pointing to nodes
-#include "mapnode_contentfeatures.h"
+#include "nodedef.h"
#include "nodemetadata.h"
#include "main.h" // For g_settings
#include "content_mapnode.h" // For content_mapnode_init
-#include "tool.h"
-#include "content_tool.h" // For content_tool_init
+#include "tooldef.h"
+#include "content_tool.h" // Default tools
+#include "content_mapnode.h" // Default nodes
/*
Setting this to 1 enables a special camera mode that forces
@@ -321,7 +322,7 @@ void getPointedNode(Client *client, v3f player_position,
try
{
n = client->getNode(v3s16(x,y,z));
- if(content_pointable(n.getContent()) == false)
+ if(client->getNodeDefManager()->get(n).pointable == false)
continue;
}
catch(InvalidPositionException &e)
@@ -343,7 +344,7 @@ void getPointedNode(Client *client, v3f player_position,
v3s16(-1,0,0), // left
};
- ContentFeatures &f = content_features(n);
+ const ContentFeatures &f = client->getNodeDefManager()->get(n);
if(f.selection_box.type == NODEBOX_FIXED)
{
@@ -592,20 +593,17 @@ void the_game(
draw_load_screen(L"Loading...", driver, font);
- // Create tool manager
- IToolDefManager *toolmgr = createToolDefManager();
-
+ // Create tool definition manager
+ IWritableToolDefManager *tooldef = createToolDefManager();
// Create texture source
- TextureSource *tsrc = new TextureSource(device);
-
- // Initialize mapnode again to enable changed graphics settings
- // Initialize content feature table with textures
- init_contentfeatures(tsrc);
- // Fill content feature table with default definitions
- content_mapnode_init(tsrc);
+ IWritableTextureSource *tsrc = createTextureSource(device);
+ // Create node definition manager
+ IWritableNodeDefManager *nodedef = createNodeDefManager(tsrc);
- // Initialize default tool definitions
- content_tool_init(toolmgr);
+ // Fill node feature table with default definitions
+ content_mapnode_init(tsrc, nodedef);
+ // Set default tool definitions
+ content_tool_init(tooldef);
/*
Create server.
@@ -625,9 +623,14 @@ void the_game(
draw_load_screen(L"Creating client...", driver, font);
infostream<<"Creating client"<<std::endl;
+
MapDrawControl draw_control;
+
Client client(device, playername.c_str(), password, draw_control,
- tsrc, toolmgr);
+ tsrc, tooldef, nodedef);
+
+ // Client acts as our GameDef
+ IGameDef *gamedef = &client;
draw_load_screen(L"Resolving address...", driver, font);
Address connect_address(0,0,0,0, port);
@@ -1694,9 +1697,9 @@ void the_game(
// Get digging properties for material and tool
content_t material = n.getContent();
ToolDiggingProperties tp =
- toolmgr->getDiggingProperties(toolname);
+ tooldef->getDiggingProperties(toolname);
DiggingProperties prop =
- getDiggingProperties(material, &tp);
+ getDiggingProperties(material, &tp, nodedef);
float dig_time_complete = 0.0;
@@ -2102,7 +2105,7 @@ void the_game(
InventoryItem *item = NULL;
if(mlist != NULL)
item = mlist->getItem(g_selected_item);
- camera.wield(item, tsrc);
+ camera.wield(item, gamedef);
}
/*
@@ -2294,7 +2297,7 @@ void the_game(
gui_shuttingdowntext->remove();*/
}
- delete toolmgr;
+ delete tooldef;
delete tsrc;
}