#include "itemdef.h"
-#include "gamedef.h"
#include "nodedef.h"
#include "tool.h"
#include "inventory.h"
#include "mesh.h"
#include "wieldmesh.h"
#include "client/tile.h"
+#include "client.h"
#endif
#include "log.h"
#include "settings.h"
void ItemDefinition::serialize(std::ostream &os, u16 protocol_version) const
{
- if(protocol_version <= 17)
- writeU8(os, 1); // version
- else if(protocol_version <= 20)
- writeU8(os, 2); // version
- else
- writeU8(os, 3); // version
+
+ writeU8(os, 3); // version (proto > 20)
writeU8(os, type);
- os<<serializeString(name);
- os<<serializeString(description);
- os<<serializeString(inventory_image);
- os<<serializeString(wield_image);
+ os << serializeString(name);
+ os << serializeString(description);
+ os << serializeString(inventory_image);
+ os << serializeString(wield_image);
writeV3F1000(os, wield_scale);
writeS16(os, stack_max);
writeU8(os, usable);
tool_capabilities->serialize(tmp_os, protocol_version);
tool_capabilities_s = tmp_os.str();
}
- os<<serializeString(tool_capabilities_s);
+ os << serializeString(tool_capabilities_s);
writeU16(os, groups.size());
- for(std::map<std::string, int>::const_iterator
+ for (ItemGroupList::const_iterator
i = groups.begin(); i != groups.end(); ++i){
- os<<serializeString(i->first);
+ os << serializeString(i->first);
writeS16(os, i->second);
}
- os<<serializeString(node_placement_prediction);
- if(protocol_version > 17){
- //serializeSimpleSoundSpec(sound_place, os);
- os<<serializeString(sound_place.name);
- writeF1000(os, sound_place.gain);
- }
- if (protocol_version > 20) {
- writeF1000(os, range);
- os << serializeString(sound_place_failed.name);
- writeF1000(os, sound_place_failed.gain);
- }
+ os << serializeString(node_placement_prediction);
+ os << serializeString(sound_place.name);
+ writeF1000(os, sound_place.gain);
+ writeF1000(os, range);
+ os << serializeString(sound_place_failed.name);
+ writeF1000(os, sound_place_failed.gain);
}
void ItemDefinition::deSerialize(std::istream &is)
#ifndef SERVER
public:
ClientCached* createClientCachedDirect(const std::string &name,
- IGameDef *gamedef) const
+ Client *client) const
{
infostream<<"Lazily creating item texture and mesh for \""
<<name<<"\""<<std::endl;
if(cc)
return cc;
- ITextureSource *tsrc = gamedef->getTextureSource();
+ ITextureSource *tsrc = client->getTextureSource();
const ItemDefinition &def = get(name);
// Create new ClientCached
ItemStack item = ItemStack();
item.name = def.name;
- scene::IMesh *mesh = getItemMesh(gamedef, item);
+ scene::IMesh *mesh = getItemMesh(client, item);
cc->wield_mesh = mesh;
// Put in cache
return cc;
}
ClientCached* getClientCached(const std::string &name,
- IGameDef *gamedef) const
+ Client *client) const
{
ClientCached *cc = NULL;
m_clientcached.get(name, &cc);
if(thr_is_current_thread(m_main_thread))
{
- return createClientCachedDirect(name, gamedef);
+ return createClientCachedDirect(name, client);
}
else
{
}
// Get item inventory texture
virtual video::ITexture* getInventoryTexture(const std::string &name,
- IGameDef *gamedef) const
+ Client *client) const
{
- ClientCached *cc = getClientCached(name, gamedef);
+ ClientCached *cc = getClientCached(name, client);
if(!cc)
return NULL;
return cc->inventory_texture;
}
// Get item wield mesh
virtual scene::IMesh* getWieldMesh(const std::string &name,
- IGameDef *gamedef) const
+ Client *client) const
{
- ClientCached *cc = getClientCached(name, gamedef);
+ ClientCached *cc = getClientCached(name, client);
if(!cc)
return NULL;
return cc->wield_mesh;
request = m_get_clientcached_queue.pop();
m_get_clientcached_queue.pushResult(request,
- createClientCachedDirect(request.key, gamedef));
+ createClientCachedDirect(request.key, (Client *)gamedef));
}
#endif
}