diff --git a/.appveyor.yml b/.appveyor.yml index 7b711715..7b5dacf3 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -5,7 +5,7 @@ configuration: - Debug platform: - - Win32 + - Win64 environment: MSVC_DEFAULT_OPTIONS: ON @@ -20,7 +20,7 @@ before_build: - git submodule update --init - mkdir build - cd build - - cmake .. -G "Visual Studio 15 2017" + - cmake .. -G "Visual Studio 15 2017 Win64" - cmake --build . --target ALL_BUILD --config Debug build_script: diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c406216..202363f2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,9 +40,9 @@ add_subdirectory( "src/servers" ) #add_subdirectory( "src/dbm" ) #add_subdirectory( "src/tools/exd_common_gen" ) -#add_subdirectory( "src/tools/exd_struct_gen" ) -#add_subdirectory( "src/tools/exd_struct_test" ) -#add_subdirectory( "src/tools/quest_parser" ) +add_subdirectory( "src/tools/exd_struct_gen" ) +add_subdirectory( "src/tools/exd_struct_test" ) +add_subdirectory( "src/tools/quest_parser" ) #add_subdirectory( "src/tools/discovery_parser" ) #add_subdirectory( "src/tools/mob_parse" ) #add_subdirectory("src/tools/pcb_reader") diff --git a/CMakeSettings.json b/CMakeSettings.json index 90e895cd..c623adf2 100644 --- a/CMakeSettings.json +++ b/CMakeSettings.json @@ -1,75 +1,13 @@ { // See https://go.microsoft.com//fwlink//?linkid=834763 for more information about this file. "configurations": [ - { - "name": "x86-Debug", - "generator": "Visual Studio 14 2015", - "configurationType": "Debug", - "buildRoot": "${env.USERPROFILE}\\CMakeBuild\\${workspaceHash}\\build\\${name}", - "cmakeCommandArgs": "-DCMAKE_BUILD_TYPE=\"Debug\"", - "buildCommandArgs": "-m -v:minimal", - "variables": [ - { - "name": "Boost_COMPILER", - "value": "-vc140" - } - ] - }, - { - "name": "x86-Release", - "generator": "Visual Studio 14 2015", - "configurationType": "Release", - "buildRoot": "${env.USERPROFILE}\\CMakeBuild\\${workspaceHash}\\build\\${name}", - "cmakeCommandArgs": "", - "buildCommandArgs": "-m -v:minimal", - "variables": [ - { - "name": "Boost_COMPILER", - "value": "-vc140" - } - ] - }, - { - "name": "x64-Debug", - "generator": "Visual Studio 14 2015 Win64", - "configurationType": "Debug", - "buildRoot": "${env.USERPROFILE}\\CMakeBuild\\${workspaceHash}\\build\\${name}", - "cmakeCommandArgs": "-DCMAKE_BUILD_TYPE=\"Debug\"", - "buildCommandArgs": "-m -v:minimal", - "variables": [ - { - "name": "Boost_COMPILER", - "value": "-vc140" - } - ] - }, - { - "name": "x64-Release", - "generator": "Visual Studio 14 2015 Win64", - "configurationType": "Release", - "buildRoot": "${env.USERPROFILE}\\CMakeBuild\\${workspaceHash}\\build\\${name}", - "cmakeCommandArgs": "", - "buildCommandArgs": "-m -v:minimal", - "variables": [ - { - "name": "Boost_COMPILER", - "value": "-vc140" - } - ] - }, { "name": "x86-Debug", "generator": "Visual Studio 15 2017", "configurationType": "Debug", "buildRoot": "${env.USERPROFILE}\\CMakeBuild\\${workspaceHash}\\build\\${name}", "cmakeCommandArgs": "-DCMAKE_BUILD_TYPE=\"Debug\"", - "buildCommandArgs": "-m -v:minimal", - "variables": [ - { - "name": "Boost_COMPILER", - "value": "-vc141" - } - ] + "buildCommandArgs": "-m -v:minimal" }, { "name": "x86-Release", @@ -77,13 +15,7 @@ "configurationType": "Release", "buildRoot": "${env.USERPROFILE}\\CMakeBuild\\${workspaceHash}\\build\\${name}", "cmakeCommandArgs": "", - "buildCommandArgs": "-m -v:minimal", - "variables": [ - { - "name": "Boost_COMPILER", - "value": "-vc141" - } - ] + "buildCommandArgs": "-m -v:minimal" }, { "name": "x64-Debug", @@ -91,13 +23,7 @@ "configurationType": "Debug", "buildRoot": "${env.USERPROFILE}\\CMakeBuild\\${workspaceHash}\\build\\${name}", "cmakeCommandArgs": "-DCMAKE_BUILD_TYPE=\"Debug\"", - "buildCommandArgs": "-m -v:minimal", - "variables": [ - { - "name": "Boost_COMPILER", - "value": "-vc141" - } - ] + "buildCommandArgs": "-m -v:minimal" }, { "name": "x64-Release", @@ -105,13 +31,7 @@ "configurationType": "Release", "buildRoot": "${env.USERPROFILE}\\CMakeBuild\\${workspaceHash}\\build\\${name}", "cmakeCommandArgs": "", - "buildCommandArgs": "-m -v:minimal", - "variables": [ - { - "name": "Boost_COMPILER", - "value": "-vc141" - } - ] + "buildCommandArgs": "-m -v:minimal" } ] } diff --git a/README.md b/README.md index 2b7b3878..0626bdf5 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,13 @@ # Sapphire - FINAL FANTASY XIV Server Emulator + +

+ FFXIV Sapphire +

+ [![Discord Server](https://img.shields.io/badge/discord-Sapphire-7289DA.svg)](https://discord.gg/xxcdCER) [![Linux Build Status](https://travis-ci.org/SapphireMordred/Sapphire.svg?branch=master)](https://travis-ci.org/SapphireMordred/Sapphire) [![Windows Build Status](https://ci.appveyor.com/api/projects/status/lil7lxa3ty165emm?svg=true)](https://ci.appveyor.com/project/SapphireMordred/Sapphire) -![FFXIV Sapphire](http://i.imgur.com/I4bj1tR.png) + Sapphire is a FINAL FANTASY XIV 4.0+ Server Emulator currently in development. @@ -13,8 +18,7 @@ Sapphire requires the following software: | *Name* | *Windows* | *Linux* | | ------ | --------- | ------- | -| CMake 3.0.2+ and C++14 capable compiler | [Visual Studio 2017](https://www.visualstudio.com/) | `gcc 4.9` and `g++ 4.9` or newer | -| Boost 1.63.0 | [Win32 precompiled binaries](https://sourceforge.net/projects/boost/files/boost-binaries/1.63.0/boost_1_63_0-msvc-14.0-32.exe/download) | Boost libraries from your distribution's package manager | +| CMake 3.0.2+ and C++17 capable compiler | [Visual Studio 2017](https://www.visualstudio.com/) | `gcc 7` and `g++ 7` or newer | | MySQL Server 5.7 | [Official Site](https://dev.mysql.com/downloads/mysql/) | MySQL server from your distribution's package manager | Please check the [wiki](https://github.com/SapphireMordred/Sapphire/wiki) for detailed installation/build instructions for your OS. diff --git a/cmake/FindMySQL.cmake b/cmake/FindMySQL.cmake index 2c38fca2..5fd19dae 100644 --- a/cmake/FindMySQL.cmake +++ b/cmake/FindMySQL.cmake @@ -86,16 +86,16 @@ find_path(MYSQL_INCLUDE_DIR /usr/local/include /usr/local/include/mysql /usr/local/mysql/include - "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7/include" - "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.6/include" - "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.5/include" - "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.1/include" - "${PROGRAM_FILES_64}/MySQL/include" "${PROGRAM_FILES_32}/MySQL/MySQL Server 5.7/include" "${PROGRAM_FILES_32}/MySQL/MySQL Server 5.6/include" "${PROGRAM_FILES_32}/MySQL/MySQL Server 5.5/include" "${PROGRAM_FILES_32}/MySQL/MySQL Server 5.1/include" "${PROGRAM_FILES_32}/MySQL/include" + "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7/include" + "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.6/include" + "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.5/include" + "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.1/include" + "${PROGRAM_FILES_64}/MySQL/include" "C:/MySQL/include" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.7;Location]/include" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.6;Location]/include" @@ -142,15 +142,6 @@ if( WIN32 ) libmysql PATHS ${MYSQL_ADD_LIBRARIES_PATH} - "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7/lib" - "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.6/lib" - "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.5/lib" - "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.1/lib" - "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7/lib/opt" - "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.6/lib/opt" - "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.5/lib/opt" - "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.1/lib/opt" - "${PROGRAM_FILES_64}/MySQL/lib" "${PROGRAM_FILES_32}/MySQL/MySQL Server 5.7/lib" "${PROGRAM_FILES_32}/MySQL/MySQL Server 5.6/lib" "${PROGRAM_FILES_32}/MySQL/MySQL Server 5.5/lib" @@ -160,6 +151,15 @@ if( WIN32 ) "${PROGRAM_FILES_32}/MySQL/MySQL Server 5.5/lib/opt" "${PROGRAM_FILES_32}/MySQL/MySQL Server 5.1/lib/opt" "${PROGRAM_FILES_32}/MySQL/lib" + "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7/lib" + "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.6/lib" + "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.5/lib" + "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.1/lib" + "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7/lib/opt" + "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.6/lib/opt" + "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.5/lib/opt" + "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.1/lib/opt" + "${PROGRAM_FILES_64}/MySQL/lib" "C:/MySQL/lib/debug" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.7;Location]/lib" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.6;Location]/lib" @@ -223,15 +223,6 @@ endif( UNIX ) if( WIN32 ) find_program(MYSQL_EXECUTABLE mysql PATHS - "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7/bin" - "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.6/bin" - "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.5/bin" - "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.1/bin" - "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7/bin/opt" - "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.6/bin/opt" - "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.5/bin/opt" - "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.1/bin/opt" - "${PROGRAM_FILES_64}/MySQL/bin" "${PROGRAM_FILES_32}/MySQL/MySQL Server 5.7/bin" "${PROGRAM_FILES_32}/MySQL/MySQL Server 5.6/bin" "${PROGRAM_FILES_32}/MySQL/MySQL Server 5.5/bin" @@ -241,6 +232,15 @@ if( WIN32 ) "${PROGRAM_FILES_32}/MySQL/MySQL Server 5.5/bin/opt" "${PROGRAM_FILES_32}/MySQL/MySQL Server 5.1/bin/opt" "${PROGRAM_FILES_32}/MySQL/bin" + "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7/bin" + "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.6/bin" + "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.5/bin" + "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.1/bin" + "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7/bin/opt" + "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.6/bin/opt" + "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.5/bin/opt" + "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.1/bin/opt" + "${PROGRAM_FILES_64}/MySQL/bin" "C:/MySQL/bin/debug" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.7;Location]/bin" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.6;Location]/bin" diff --git a/cmake/compiler.cmake b/cmake/compiler.cmake index c640e4bc..9ef1ee51 100644 --- a/cmake/compiler.cmake +++ b/cmake/compiler.cmake @@ -17,7 +17,7 @@ else() # edit and continue message(STATUS "Enabling Edit and Continue..") - add_definitions(/ZI) + add_definitions(/Zi) # incremental linking message(STATUS "Enabling Incremental Linking..") diff --git a/src/tools/exd_common_gen/CMakeLists.txt b/src/tools/exd_common_gen/CMakeLists.txt index b65aaa9b..5803c018 100644 --- a/src/tools/exd_common_gen/CMakeLists.txt +++ b/src/tools/exd_common_gen/CMakeLists.txt @@ -26,7 +26,7 @@ set_target_properties(exd_common_gen PROPERTIES if (UNIX) target_link_libraries (exd_common_gen common xivdat pthread mysqlclient dl z) else() - target_link_libraries (exd_common_gen common xivdat libmysql zlib1) + target_link_libraries (exd_common_gen common xivdat libmysql zlib) # ignore unchecked iterators warnings from msvc add_definitions(-D_SCL_SECURE_NO_WARNINGS) diff --git a/src/tools/exd_struct_gen/CMakeLists.txt b/src/tools/exd_struct_gen/CMakeLists.txt index cc490615..e4fef2d0 100644 --- a/src/tools/exd_struct_gen/CMakeLists.txt +++ b/src/tools/exd_struct_gen/CMakeLists.txt @@ -24,10 +24,8 @@ set_target_properties(exd_struct_gen PROPERTIES ) if (UNIX) - target_link_libraries (exd_struct_gen common xivdat pthread mysqlclient dl z) + target_link_libraries (exd_struct_gen common xivdat pthread mysqlclient dl z stdc++fs) else() - target_link_libraries (exd_struct_gen common xivdat libmysql zlib1) + target_link_libraries (exd_struct_gen common xivdat mysql zlib) endif() -target_link_libraries(exd_struct_gen ${Boost_LIBRARIES} ${Boost_LIBRARIES}) - diff --git a/src/tools/exd_struct_gen/main.cpp b/src/tools/exd_struct_gen/main.cpp index f3d350fc..d60b153b 100644 --- a/src/tools/exd_struct_gen/main.cpp +++ b/src/tools/exd_struct_gen/main.cpp @@ -9,27 +9,20 @@ #include #include #include -#include +#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include + +#include #include #include #include -#include +#include + Core::Logger g_log; -Core::Data::ExdData g_exdData; +Core::Data::ExdDataGenerated g_exdData; bool skipUnmapped = true; std::map< char, std::string > numberToStringMap @@ -69,7 +62,7 @@ std::string generateIdListDecl( const std::string& exd ) std::string generateDirectGetters( const std::string& exd ) { - return " using " + exd + "Ptr = boost::shared_ptr< " + exd + " >;\n"; + return " using " + exd + "Ptr = std::shared_ptr< " + exd + " >;\n"; } std::string generateIdListGetter( const std::string& exd ) @@ -119,65 +112,38 @@ std::string generateStruct( const std::string& exd ) int count = 0; - using boost::property_tree::ptree; - ptree m_propTree; - boost::property_tree::read_json( "ex.json", m_propTree ); + auto json = nlohmann::json(); - BOOST_FOREACH( boost::property_tree::ptree::value_type& sheet, m_propTree.get_child( "sheets" ) ) - { - std::string name = sheet.second.get< std::string >( "sheet" ); - if( name != exd ) - continue; + std::ifstream exJson( "ex.json" ); + exJson >> json; - BOOST_FOREACH( boost::property_tree::ptree::value_type& show, sheet.second.get_child( "definitions" ) ) - { - uint32_t index; - std::string converterTarget = ""; - bool isRepeat = false; - int num = 0; - try - { - index = show.second.get< uint32_t >( "index" ); - } - catch( ... ) - { - index = 0; - } - try - { - std::string fieldName = show.second.get< std::string >( "name" ); - indexToNameMap[ index ] = fieldName; - } - catch( ... ) - { - } + for( auto& definition : json["sheets"][exd] ) + { + uint32_t index; + std::string converterTarget = ""; + bool isRepeat = false; + int num = 0; - try - { - converterTarget = show.second.get< std::string >( "converter.target" ); - if( nameTaken.find( converterTarget ) != nameTaken.end() ) - indexToTarget[ index ] = converterTarget; - } - catch( ... ) - { - } + index = definition["index"].get< uint32_t >(); + indexToNameMap[ index ] = std::string( definition["name"] ); - try - { - show.second.get< std::string >( "type" ); - num = show.second.get< uint8_t >( "count" ); - isRepeat = true; - indexIsArrayMap[ index ] = true; - indexCountMap[ index ] = num; - std::string fName = show.second.get< std::string >( "definition.name" ); - indexToNameMap[ index ] = fName; - } - catch( ... ) - { - } + converterTarget = std::string( definition["converter"]["target"] ); + if( nameTaken.find( converterTarget ) != nameTaken.end() ) + indexToTarget[ index ] = converterTarget; - } - } + if( auto count = definition["count"] ) + { + num = std::stoi( std::string( count ) ); + isRepeat = true; + indexIsArrayMap[ index ] = true; + indexCountMap[ index ] = num; + + std::string fName = definition["definition"]["name"]; + indexToNameMap[ index ] = fName; + } + + + } std::string result = "struct " + exd + "\n{\n"; @@ -208,8 +174,12 @@ std::string generateStruct( const std::string& exd ) fieldName = indexToNameMap[ count ]; } fieldName[ 0 ] = std::tolower( fieldName[ 0 ] ); - fieldName.erase( boost::remove_if( fieldName, boost::is_any_of( ",-':![](){}<>% \x02\x1f\x01\x03" ) ), - fieldName.end() ); + + std::string badChars = ",-':![](){}<>% \x02\x1f\x01\x03"; + std::for_each( badChars.begin(), badChars.end(), [ &fieldName ]( const char c ) + { + fieldName.erase( std::remove( fieldName.begin(), fieldName.end(), c ), fieldName.end() ); + }); for( auto entry : numberToStringMap ) { @@ -229,7 +199,7 @@ std::string generateStruct( const std::string& exd ) indexToNameMap[ count ] = fieldName; indexToTypeMap[ count ] = type; if( indexToTarget.find( count ) != indexToTarget.end() ) - result += " boost::shared_ptr< " + indexToTarget[ count ] + "> " + fieldName + ";\n"; + result += " std::shared_ptr< " + indexToTarget[ count ] + "> " + fieldName + ";\n"; else { if( indexIsArrayMap.find( count ) != indexIsArrayMap.end() ) @@ -272,7 +242,7 @@ std::string generateConstructorsDecl( const std::string& exd ) continue; } if( indexToTarget.find( count ) != indexToTarget.end() ) - result += indent + indexToNameMap[ count ] + " = boost::make_shared< " + indexToTarget[ count ] + + result += indent + indexToNameMap[ count ] + " = std::make_shared< " + indexToTarget[ count ] + ">( exdData->getField< " + indexToTypeMap[ count ] + " >( row, " + std::to_string( count ) + " ), exdData );\n"; else @@ -337,9 +307,10 @@ int main( int argc, char** argv ) std::istreambuf_iterator< char >() ); - using boost::property_tree::ptree; - ptree m_propTree; - boost::property_tree::read_json( "ex.json", m_propTree ); + std::ifstream exJson( "ex.json" ); + + auto json = nlohmann::json(); + exJson >> json; g_log.info( "Setting up EXD data" ); if( !g_exdData.init( datLocation ) ) @@ -366,27 +337,27 @@ int main( int argc, char** argv ) //nameTaken[name] = "1"; //} - BOOST_FOREACH( boost::property_tree::ptree::value_type& sheet, m_propTree.get_child( "sheets" ) ) - { - std::string name = sheet.second.get< std::string >( "sheet" ); + for( auto& sheet : json["sheets"] ) + { + std::string name = json["sheet"]; - forwards += "struct " + name + ";\n"; - structDefs += generateStruct( name ); - dataDecl += generateDatAccessDecl( name ); - idListsDecl += generateIdListDecl( name ); - getterDecl += generateDirectGetters( name ); - datAccCall += generateSetDatAccessCall( name ); - constructorDecl += generateConstructorsDecl( name ); - idListGetters += generateIdListGetter( name ); - } + forwards += "struct " + name + ";\n"; + structDefs += generateStruct( name ); + dataDecl += generateDatAccessDecl( name ); + idListsDecl += generateIdListDecl( name ); + getterDecl += generateDirectGetters( name ); + datAccCall += generateSetDatAccessCall( name ); + constructorDecl += generateConstructorsDecl( name ); + idListGetters += generateIdListGetter( name ); + } getterDecl += "\n template< class T >\n" - " boost::shared_ptr< T > get( uint32_t id )\n" + " std::shared_ptr< T > get( uint32_t id )\n" " {\n" " try\n" " {\n" - " auto info = boost::make_shared< T >( id, this );\n" + " auto info = std::make_shared< T >( id, this );\n" " return info;\n" " }\n" " catch( ... )\n" diff --git a/src/tools/exd_struct_test/CMakeLists.txt b/src/tools/exd_struct_test/CMakeLists.txt index 8f7281ec..2e89b09c 100644 --- a/src/tools/exd_struct_test/CMakeLists.txt +++ b/src/tools/exd_struct_test/CMakeLists.txt @@ -24,6 +24,6 @@ set_target_properties(exd_struct_test PROPERTIES if (UNIX) target_link_libraries (exd_struct_test common xivdat pthread mysqlclient dl z stdc++fs ) else() - target_link_libraries (exd_struct_test common xivdat libmysql zlib1) + target_link_libraries (exd_struct_test common xivdat mysql zlib) endif() diff --git a/src/tools/quest_parser/CMakeLists.txt b/src/tools/quest_parser/CMakeLists.txt index 386495a5..51609ba5 100644 --- a/src/tools/quest_parser/CMakeLists.txt +++ b/src/tools/quest_parser/CMakeLists.txt @@ -30,10 +30,8 @@ set_target_properties(quest_parse PROPERTIES ) if (UNIX) - target_link_libraries (quest_parse common xivdat pthread mysqlclient dl z) + target_link_libraries (quest_parse common xivdat pthread mysqlclient dl z stdc++fs) else() - target_link_libraries (quest_parse common xivdat libmysql zlib1) + target_link_libraries (quest_parse common xivdat mysql zlib) endif() -target_link_libraries(quest_parse ${Boost_LIBRARIES} ${Boost_LIBRARIES}) - diff --git a/src/tools/quest_parser/main.cpp b/src/tools/quest_parser/main.cpp index 99f1c44d..06990703 100644 --- a/src/tools/quest_parser/main.cpp +++ b/src/tools/quest_parser/main.cpp @@ -4,8 +4,8 @@ #include #include #include +#include -#include #include #include @@ -15,10 +15,11 @@ #include #include -#include #include #include +#include + Core::Logger g_log; Core::Data::ExdDataGenerated g_exdDataGen; @@ -62,7 +63,7 @@ std::string titleCase( const std::string& str ) } void -createScript( boost::shared_ptr< Core::Data::Quest >& pQuestData, std::set< std::string >& additionalList, int questId ) +createScript( std::shared_ptr< Core::Data::Quest >& pQuestData, std::set< std::string >& additionalList, int questId ) { std::string header( "// This is an automatically generated C++ script template\n" @@ -125,7 +126,10 @@ createScript( boost::shared_ptr< Core::Data::Quest >& pQuestData, std::set< std: else { std::string seqName = titleCase( entry ); - boost::replace_all( seqName, "_", "" ); + + seqName.erase( std::remove_if( seqName.begin(), seqName.end(), []( const char c ) { + return c == '_'; + }), seqName.end()); std::string seqId = entry.substr( 4 ); seqStr += " " + seqName + " = " + seqId + ",\n"; @@ -252,7 +256,11 @@ createScript( boost::shared_ptr< Core::Data::Quest >& pQuestData, std::set< std: for( auto& entity : script_entities ) { auto name = titleCase( entity ); - boost::replace_all( name, "_", "" ); + + name.erase( std::remove_if( name.begin(), name.end(), []( const char c ) { + return c == '_'; + }), name.end()); + sentities += " static constexpr auto " + name + ";\n"; }