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 );