diff options
author | faketruth <faketruth@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2011-10-31 06:12:21 +0100 |
---|---|---|
committer | faketruth <faketruth@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2011-10-31 06:12:21 +0100 |
commit | 35c44ede5a668605aa5a2df05d099a8a37f3e3e5 (patch) | |
tree | a2580531222cb301e41d0bdf46066259bf896d3e | |
parent | denotch map converter can now parse without creating segfaults or unknown tag errors. (diff) | |
download | cuberite-35c44ede5a668605aa5a2df05d099a8a37f3e3e5.tar cuberite-35c44ede5a668605aa5a2df05d099a8a37f3e3e5.tar.gz cuberite-35c44ede5a668605aa5a2df05d099a8a37f3e3e5.tar.bz2 cuberite-35c44ede5a668605aa5a2df05d099a8a37f3e3e5.tar.lz cuberite-35c44ede5a668605aa5a2df05d099a8a37f3e3e5.tar.xz cuberite-35c44ede5a668605aa5a2df05d099a8a37f3e3e5.tar.zst cuberite-35c44ede5a668605aa5a2df05d099a8a37f3e3e5.zip |
Diffstat (limited to '')
-rw-r--r-- | converter/cNBTData.cpp | 33 | ||||
-rw-r--r-- | converter/cNBTData.h | 2 |
2 files changed, 19 insertions, 16 deletions
diff --git a/converter/cNBTData.cpp b/converter/cNBTData.cpp index 0b40f3466..556960732 100644 --- a/converter/cNBTData.cpp +++ b/converter/cNBTData.cpp @@ -362,9 +362,9 @@ void cNBTCompound::PrintData( int a_Depth, std::string a_Name ) Prefix[ a_Depth*4 ] = 0; if( a_Name.size() > 0 ) - printf("%s COMPOUND (%s)\n", Prefix, a_Name.c_str() ); + printf("%sCOMPOUND (%s)\n", Prefix, a_Name.c_str() ); else - printf("%s COMPOUND\n", Prefix ); + printf("%sCOMPOUND (...)\n", Prefix ); delete Prefix; a_Depth++; @@ -385,6 +385,11 @@ void cNBTCompound::PrintData( int a_Depth, std::string a_Name ) itr->second->PrintData( a_Depth, itr->first ); } + for( StringMap::iterator itr = m_Strings.begin(); itr != m_Strings.end(); itr++ ) + { + printf("%s STRING %s (%s)\n", Prefix, itr->first.c_str(), itr->second.c_str() ); + } + for( IntegerMap::iterator itr = m_Integers.begin(); itr != m_Integers.end(); itr++ ) { printf("%s INTEGER %s (%i)\n", Prefix, itr->first.c_str(), itr->second ); @@ -481,7 +486,7 @@ void cNBTData::ParseTags() if( m_Index < m_BufferSize ) { //printf("ParseTags idx:%02i %02x %3i %c\n", m_Index, (unsigned char)m_Buffer[m_Index], (unsigned char)m_Buffer[m_Index], m_Buffer[m_Index] );//re - unsigned char Tag = m_Buffer[m_Index]; + ENUM_TAG Tag = (ENUM_TAG)m_Buffer[m_Index]; if( Tag > 0 && m_ParseFunctions[ Tag ] ) { //printf("m_BufferSize4: %i\n", m_BufferSize); @@ -528,6 +533,7 @@ void cNBTData::ParseCompound( bool a_bNamed ) ParseTags(); } CloseCompound(); + m_Index++; //printf("CLOSE COMPOUND\n");//re } @@ -552,20 +558,9 @@ void cNBTData::ParseList( bool a_bNamed ) OpenList( Name ); for(int i = 0; i < Length && m_Index < m_BufferSize; i++) { - - if( (int)TagType == 6 ) { - - cNBTData::ParseDouble( false ); - - } else if( (int)TagType == 5 ) { - cNBTData::ParseFloat( false ); - } else - - if( m_ParseFunctions[ TagType ] ) { (*this.*m_ParseFunctions[ TagType ] )(false); - m_Index++; } } if (tm) { @@ -772,7 +767,7 @@ float cNBTData::ReadFloat() memcpy( &Value, m_Buffer+m_Index, sizeof(float) ); m_Index+=sizeof(float); - return Value; + return Value; } void cNBTCompound::PutList( std::string Name, ENUM_TAG Type ) @@ -792,6 +787,14 @@ void cNBTCompound::PutCompound( std::string Name ) } } +void cNBTCompound::PutFloat( std::string Name, float Value ) +{ + if( m_CurrentList ) + m_CurrentList->AddToList( (void*)((unsigned int*)&Value) ); + else + m_Floats[Name] = Value; +} + cNBTCompound* cNBTCompound::GetCompound( std::string Name ) { if( m_CurrentList ) diff --git a/converter/cNBTData.h b/converter/cNBTData.h index d3e5e82b6..7d80aacb9 100644 --- a/converter/cNBTData.h +++ b/converter/cNBTData.h @@ -40,7 +40,7 @@ public: void PutInteger( std::string Name, int Value ) { m_Integers[Name] = Value; } void PutLong( std::string Name, long long Value ) { m_Longs[Name] = Value; } void PutDouble( std::string Name, double Value ) { m_Doubles[Name] = Value; } - void PutFloat( std::string Name, float Value ) { m_Floats[Name] = Value; } + void PutFloat( std::string Name, float Value ); void PutString( std::string Name, std::string Value ) { m_Strings[Name] = Value; } void PutByteArray( std::string Name, char* ByteArray ) { m_ByteArrays[Name] = ByteArray; } void PutCompound( std::string Name ); |