Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
with
459 additions
and 123 deletions.
- +2 −0 build/android/jni/Android.mk
- +36 −9 doc/lua_api.txt
- +1 −0 src/CMakeLists.txt
- +1 −1 src/content_cao.cpp
- +1 −2 src/craftdef.cpp
- +12 −76 src/inventory.cpp
- +7 −7 src/inventory.h
- +43 −0 src/itemstackmetadata.cpp
- +35 −0 src/itemstackmetadata.h
- +2 −0 src/metadata.cpp
- +20 −18 src/metadata.h
- +26 −5 src/script/common/c_content.cpp
- +1 −0 src/script/lua_api/CMakeLists.txt
- +1 −1 src/script/lua_api/l_env.cpp
- +34 −4 src/script/lua_api/l_item.cpp
- +5 −0 src/script/lua_api/l_item.h
- +115 −0 src/script/lua_api/l_itemstackmeta.cpp
- +59 −0 src/script/lua_api/l_itemstackmeta.h
- +2 −0 src/script/scripting_game.cpp
- +49 −0 src/util/serialize.cpp
- +7 −0 src/util/serialize.h
@@ -0,0 +1,43 @@ | ||
#include "itemstackmetadata.h" | ||
#include "util/serialize.h" | ||
#include "util/strfnd.h" | ||
|
||
#define DESERIALIZE_START '\x01' | ||
#define DESERIALIZE_KV_DELIM '\x02' | ||
#define DESERIALIZE_PAIR_DELIM '\x03' | ||
#define DESERIALIZE_START_STR "\x01" | ||
#define DESERIALIZE_KV_DELIM_STR "\x02" | ||
#define DESERIALIZE_PAIR_DELIM_STR "\x03" | ||
|
||
void ItemStackMetadata::serialize(std::ostream &os) const | ||
{ | ||
std::ostringstream os2; | ||
os2 << DESERIALIZE_START; | ||
for (StringMap::const_iterator | ||
it = m_stringvars.begin(); | ||
it != m_stringvars.end(); ++it) { | ||
os2 << it->first << DESERIALIZE_KV_DELIM | ||
<< it->second << DESERIALIZE_PAIR_DELIM; | ||
} | ||
os << serializeJsonStringIfNeeded(os2.str()); | ||
} | ||
|
||
void ItemStackMetadata::deSerialize(std::istream &is) | ||
{ | ||
std::string in = deSerializeJsonStringIfNeeded(is); | ||
|
||
m_stringvars.clear(); | ||
|
||
if (!in.empty() && in[0] == DESERIALIZE_START) { | ||
Strfnd fnd(in); | ||
fnd.to(1); | ||
while (!fnd.at_end()) { | ||
std::string name = fnd.next(DESERIALIZE_KV_DELIM_STR); | ||
std::string var = fnd.next(DESERIALIZE_PAIR_DELIM_STR); | ||
m_stringvars[name] = var; | ||
} | ||
} else { | ||
// BACKWARDS COMPATIBILITY | ||
m_stringvars[""] = in; | ||
} | ||
} |
@@ -0,0 +1,35 @@ | ||
/* | ||
Minetest | ||
Copyright (C) 2010-2013 rubenwardy <rubenwardy@gmail.com> | ||
This program is free software; you can redistribute it and/or modify | ||
it under the terms of the GNU Lesser General Public License as published by | ||
the Free Software Foundation; either version 2.1 of the License, or | ||
(at your option) any later version. | ||
This program is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU Lesser General Public License for more details. | ||
You should have received a copy of the GNU Lesser General Public License along | ||
with this program; if not, write to the Free Software Foundation, Inc., | ||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
*/ | ||
|
||
#ifndef ITEMSTACKMETADATA_HEADER | ||
#define ITEMSTACKMETADATA_HEADER | ||
|
||
#include "metadata.h" | ||
|
||
class Inventory; | ||
class IItemDefManager; | ||
|
||
class ItemStackMetadata : public Metadata | ||
{ | ||
public: | ||
void serialize(std::ostream &os) const; | ||
void deSerialize(std::istream &is); | ||
}; | ||
|
||
#endif |
Oops, something went wrong.