diff --git a/CMakeLists.txt b/CMakeLists.txt index 64baed19..8fb79881 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_policy(SET CMP0014 NEW) -cmake_minimum_required(VERSION 2.6) +cmake_minimum_required(VERSION 3.0.2) project (Sapphire) set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/bin) @@ -16,15 +16,14 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake) # set(Boost_DEBUG 1) -if(NOT SAPPHIRE_BOOST_VER) - set(SAPPHIRE_BOOST_VER 1.60.0) +if( NOT SAPPHIRE_BOOST_VER ) + set( SAPPHIRE_BOOST_VER 1.63.0 ) endif() -set(SAPPHIRE_BOOST_FOLDER_NAME boost_1_60_0) +set( SAPPHIRE_BOOST_FOLDER_NAME boost_1_63_0 ) ########################################################################## # Common and library path -set(SERVER_COMMON_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/common") -set(LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/libraries") +set( LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/libraries" ) ########################################################################## # Dependencies and compiler settings @@ -32,41 +31,25 @@ include( "cmake/boost.cmake" ) include( "cmake/mysql.cmake" ) include( "cmake/compiler.cmake" ) include( "cmake/cotire.cmake" ) - ############################## # Git # ############################## -include(GetGitRevisionDescription) -get_git_head_revision(GIT_REFSPEC GIT_SHA1) -git_describe(VERSION --all --dirty=-d) -configure_file("${SERVER_COMMON_DIR}/Version.cpp.in" - "${SERVER_COMMON_DIR}/Version.cpp" @ONLY) +include( GetGitRevisionDescription ) +get_git_head_revision( GIT_REFSPEC GIT_SHA1 ) +git_describe( VERSION --all --dirty=-d ) +configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/src/common/Version.cpp.in" + "${CMAKE_CURRENT_SOURCE_DIR}/src/common/Version.cpp" @ONLY ) ########################################################################## -# Common include folders -include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src/libraries/sapphire/datReader/") -include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src/libraries/sapphire/mysqlConnector/") -include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src") +add_subdirectory( "src/libraries/sapphire/datReader" ) +add_subdirectory( "src/libraries/sapphire/mysqlConnector" ) +add_subdirectory( "src/common" ) -include_directories("${PROJECT_INCLUDE_DIR}") -include_directories("${PROJECT_SOURCE_DIR}") +add_subdirectory( "src/servers" ) -########################################################################## -# Common lib folders -link_directories(${MYSQLCONNECTORCPP_LIBRARIES}) -link_directories(${SERVER_COMMON_DIR}) -link_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/libraries/sapphire/datReader) - -add_subdirectory("src/servers") - -add_subdirectory("src/libraries/sapphire/datReader") -add_subdirectory("src/libraries/sapphire/mysqlConnector") - -add_subdirectory("src/common") - -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_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/pcb_reader") #add_subdirectory("src/tools/event_object_parser") diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 606f027b..c49d6bb5 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -1,12 +1,6 @@ -cmake_minimum_required(VERSION 2.6) -project(Sapphire) +cmake_minimum_required( VERSION 3.0.2 ) +project( Sapphire ) -include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ) - -file(GLOB UTILS_PUBLIC_INCLUDE_FILES - "${CMAKE_CURRENT_SOURCE_DIR}" - "${CMAKE_CURRENT_SOURCE_DIR}/*.h" - "${CMAKE_CURRENT_SOURCE_DIR}/Exd/*.h" ) file(GLOB UTILS_SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/Config/*.cpp" @@ -18,13 +12,13 @@ file(GLOB UTILS_SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/Network/PacketDef/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/Script/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/Util/*.cpp") - -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) +set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) -add_library(common ${UTILS_PUBLIC_INCLUDE_FILES} ${UTILS_SOURCE_FILES}) -set_target_properties(common PROPERTIES +add_library( common ${UTILS_PUBLIC_INCLUDE_FILES} ${UTILS_SOURCE_FILES} ) + +set_target_properties( common PROPERTIES CXX_STANDARD 14 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS ON @@ -34,8 +28,14 @@ set_target_properties(common PROPERTIES RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_CURRENT_SOURCE_DIR}/../../bin/" ) -if (UNIX) - target_link_libraries( common xivdat mysqlclient mysqlConnector ) +target_link_libraries( common PUBLIC xivdat ) +target_link_libraries( common PUBLIC mysqlConnector ) + +if( UNIX ) + target_link_libraries( common PUBLIC mysqlclient ) else() - target_link_libraries( common xivdat mysqlConnector libmysql ) + target_link_libraries( common PUBLIC libmysql ) endif() + +target_include_directories( common PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/" ) +target_include_directories( common PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/src/libraries/external/") diff --git a/src/common/Database/CharaDbConnection.cpp b/src/common/Database/CharaDbConnection.cpp index ce5a1a7e..5dfcd831 100644 --- a/src/common/Database/CharaDbConnection.cpp +++ b/src/common/Database/CharaDbConnection.cpp @@ -1,5 +1,5 @@ #include "CharaDbConnection.h" -#include +#include Core::Db::CharaDbConnection::CharaDbConnection( ConnectionInfo& connInfo ) : DbConnection( connInfo ) { @@ -136,4 +136,4 @@ void Core::Db::CharaDbConnection::doPrepareStatements() -} \ No newline at end of file +} diff --git a/src/common/Database/DatabaseDef.h b/src/common/Database/DatabaseDef.h index 8fc3f2d9..3253242e 100644 --- a/src/common/Database/DatabaseDef.h +++ b/src/common/Database/DatabaseDef.h @@ -1,11 +1,11 @@ #ifndef _DATABASEDEF_H #define _DATABASEDEF_H -#include "src/libraries/sapphire/mysqlConnector/MySqlConnector.h" -#include -#include -#include -#include +#include +#include "Database/DbLoader.h" +#include "Database/CharaDbConnection.h" +#include "Database/DbWorkerPool.h" +#include "Database/PreparedStatement.h" extern Core::Db::DbWorkerPool< Core::Db::CharaDbConnection > g_charaDb; diff --git a/src/common/Database/DbConnection.cpp b/src/common/Database/DbConnection.cpp index b33fbbd2..366fc954 100644 --- a/src/common/Database/DbConnection.cpp +++ b/src/common/Database/DbConnection.cpp @@ -1,13 +1,13 @@ #include "DbConnection.h" #include "DbWorker.h" -#include "src/libraries/sapphire/mysqlConnector/MySqlConnector.h" +#include +#include "Logging/Logger.h" -#include #include "PreparedStatement.h" #include +#include "Framework.h" - -extern Core::Logger g_log; +extern Core::Framework g_fw; Core::Db::DbConnection::DbConnection( ConnectionInfo &connInfo ) : m_reconnecting( false ), @@ -67,7 +67,7 @@ uint32_t Core::Db::DbConnection::open() } catch( std::runtime_error& e ) { - g_log.error( e.what() ); + g_fw.get< Logger >()->error( e.what() ); return 1; } @@ -119,7 +119,7 @@ bool Core::Db::DbConnection::execute( const std::string& sql ) } catch( std::runtime_error& e ) { - g_log.error( e.what() ); + g_fw.get< Logger >()->error( e.what() ); return false; } } @@ -134,7 +134,7 @@ boost::shared_ptr< Mysql::ResultSet > Core::Db::DbConnection::query( const std:: } catch( std::runtime_error& e ) { - g_log.error( e.what() ); + g_fw.get< Logger >()->error( e.what() ); return nullptr; } } @@ -148,13 +148,11 @@ boost::shared_ptr< Mysql::ResultSet > Core::Db::DbConnection::query( boost::shar if( !ping() ) { - g_log.error( "MysqlConnection went down" ); // naivly reconnect and hope for the best open(); lockIfReady(); if( !prepareStatements() ) - g_log.error( "Mysql Statements failed to prepare..." ); - g_log.info( "MysqlConnection reestablished" ); + return nullptr; } uint32_t index = stmt->getIndex(); @@ -172,7 +170,7 @@ boost::shared_ptr< Mysql::ResultSet > Core::Db::DbConnection::query( boost::shar } catch( std::runtime_error& e ) { - g_log.error( e.what() ); + g_fw.get< Logger >()->error( e.what() ); return nullptr; } @@ -198,7 +196,7 @@ bool Core::Db::DbConnection::execute( boost::shared_ptr< Core::Db::PreparedState } catch( std::runtime_error& e ) { - g_log.error( e.what() ); + g_fw.get< Logger >()->error( e.what() ); return false; } } @@ -234,7 +232,7 @@ void Core::Db::DbConnection::prepareStatement( uint32_t index, const std::string } catch( std::runtime_error& e ) { - g_log.error( e.what() ); + g_fw.get< Logger >()->error( e.what() ); m_prepareError = true; } diff --git a/src/common/Database/DbConnection.h b/src/common/Database/DbConnection.h index f304e423..d0fb81d5 100644 --- a/src/common/Database/DbConnection.h +++ b/src/common/Database/DbConnection.h @@ -6,7 +6,7 @@ #include #include #include -#include +#include "Util/LockedWaitQueue.h" #include #include diff --git a/src/common/Database/DbLoader.cpp b/src/common/Database/DbLoader.cpp index c74d30b2..56cd4be2 100644 --- a/src/common/Database/DbLoader.cpp +++ b/src/common/Database/DbLoader.cpp @@ -2,9 +2,10 @@ #include #include "CharaDbConnection.h" #include "DbWorkerPool.h" -#include +#include "Logging/Logger.h" +#include "Framework.h" -extern Core::Logger g_log; +extern Core::Framework g_fw; Core::Db::DbLoader::DbLoader() { @@ -16,12 +17,14 @@ Core::Db::DbLoader& Core::Db::DbLoader::addDb( Core::Db::DbWorkerPool< T >& pool m_open.push([this, info, &pool]() -> bool { + + auto pLog = g_fw.get< Logger >(); const uint8_t asyncThreads = info.asyncThreads; const uint8_t synchThreads = info.syncThreads; if( asyncThreads < 1 || asyncThreads > 32 ) { - g_log.error( "database: invalid number of worker threads specified. Please pick a value between 1 and 32." ); + pLog->error( "database: invalid number of worker threads specified. Please pick a value between 1 and 32." ); return false; } @@ -36,7 +39,7 @@ Core::Db::DbLoader& Core::Db::DbLoader::addDb( Core::Db::DbWorkerPool< T >& pool if( error ) { - g_log.error( "DatabasePool failed to open." ); + pLog->error( "DatabasePool failed to open." ); return false; } } @@ -50,7 +53,8 @@ Core::Db::DbLoader& Core::Db::DbLoader::addDb( Core::Db::DbWorkerPool< T >& pool { if( !pool.prepareStatements() ) { - g_log.error( "Could not prepare statements of the database, see log for details." ); + auto pLog = g_fw.get< Logger >(); + pLog->error( "Could not prepare statements of the database, see log for details." ); return false; } return true; @@ -104,5 +108,5 @@ bool Core::Db::DbLoader::process( std::queue< Predicate >& queue ) template Core::Db::DbLoader& Core::Db::DbLoader::addDb< Core::Db::CharaDbConnection >( Core::Db::DbWorkerPool< Core::Db::CharaDbConnection >&, - const ConnectionInfo& ); + const ConnectionInfo& ); diff --git a/src/common/Database/DbWorker.cpp b/src/common/Database/DbWorker.cpp index a242eb04..1888419e 100644 --- a/src/common/Database/DbWorker.cpp +++ b/src/common/Database/DbWorker.cpp @@ -1,6 +1,6 @@ #include "DbWorker.h" #include "Operation.h" -#include +#include "Util/LockedWaitQueue.h" Core::Db::DbWorker::DbWorker( Core::LockedWaitQueue< boost::shared_ptr< Operation > >* newQueue, DbConnection* pConn ) { diff --git a/src/common/Database/DbWorker.h b/src/common/Database/DbWorker.h index cfadb795..8782f6a0 100644 --- a/src/common/Database/DbWorker.h +++ b/src/common/Database/DbWorker.h @@ -3,7 +3,7 @@ #include #include -#include +#include "Util/LockedWaitQueue.h" #include namespace Core diff --git a/src/common/Database/DbWorkerPool.cpp b/src/common/Database/DbWorkerPool.cpp index ceb44110..785b857d 100644 --- a/src/common/Database/DbWorkerPool.cpp +++ b/src/common/Database/DbWorkerPool.cpp @@ -1,14 +1,16 @@ #include "DbWorkerPool.h" #include "DbConnection.h" #include "PreparedStatement.h" -#include +#include #include "StatementTask.h" #include "Operation.h" #include "CharaDbConnection.h" #include +#include "Framework.h" -#include -extern Core::Logger g_log; +#include "Logging/Logger.h" + +extern Core::Framework g_fw; class PingOperation : public Core::Db::Operation { @@ -46,7 +48,8 @@ void Core::Db::DbWorkerPool< T >::setConnectionInfo( const ConnectionInfo& info, template< class T > uint32_t Core::Db::DbWorkerPool< T >::open() { - g_log.info( "[DbPool] Opening DatabasePool " + getDatabaseName() + + auto pLog = g_fw.get< Logger >(); + pLog->info( "[DbPool] Opening DatabasePool " + getDatabaseName() + " Asynchronous connections: " + std::to_string( m_asyncThreads ) + " Synchronous connections: " + std::to_string( m_synchThreads ) ); @@ -59,7 +62,7 @@ uint32_t Core::Db::DbWorkerPool< T >::open() if( !error ) { - g_log.info( "[DbPool] DatabasePool " + getDatabaseName() + " opened successfully. " + + pLog->info( "[DbPool] DatabasePool " + getDatabaseName() + " opened successfully. " + std::to_string( ( m_connections[IDX_SYNCH].size() + m_connections[IDX_ASYNC].size() ) ) + " total connections running." ); } @@ -70,10 +73,11 @@ uint32_t Core::Db::DbWorkerPool< T >::open() template< class T > void Core::Db::DbWorkerPool< T >::close() { - g_log.info("[DbPool] Closing down DatabasePool " + getDatabaseName() ); + auto pLog = g_fw.get< Logger >(); + pLog->info("[DbPool] Closing down DatabasePool " + getDatabaseName() ); m_connections[IDX_ASYNC].clear(); m_connections[IDX_SYNCH].clear(); - g_log.info("[DbPool] All connections on DatabasePool " + getDatabaseName() + "closed." ); + pLog->info("[DbPool] All connections on DatabasePool " + getDatabaseName() + "closed." ); } template< class T > diff --git a/src/common/Database/DbWorkerPool.h b/src/common/Database/DbWorkerPool.h index a16a5b28..b5722a53 100644 --- a/src/common/Database/DbWorkerPool.h +++ b/src/common/Database/DbWorkerPool.h @@ -5,7 +5,7 @@ #include #include #include -#include +#include "Util/LockedWaitQueue.h" #include "DbConnection.h" namespace Core { diff --git a/src/common/Framework.cpp b/src/common/Framework.cpp new file mode 100644 index 00000000..9951e8a2 --- /dev/null +++ b/src/common/Framework.cpp @@ -0,0 +1,5 @@ +#include "Framework.h" + +#include +#include +#include diff --git a/src/common/Framework.h b/src/common/Framework.h new file mode 100644 index 00000000..d6e57fbc --- /dev/null +++ b/src/common/Framework.h @@ -0,0 +1,37 @@ +#ifndef _CORE_FRAMEWORK_H +#define _CORE_FRAMEWORK_H + +#include +#include +#include +#include +#include + +namespace Core +{ + + class Framework + { + using TypenameToObject = std::map< std::type_index, boost::shared_ptr< void > >; + TypenameToObject ObjectMap; + + public: + template< typename T > + boost::shared_ptr< T > get() + { + auto iType = ObjectMap.find( typeid( T ) ); + assert( !( iType == ObjectMap.end() ) ); + return boost::static_pointer_cast< T >( iType->second ); + } + + template< typename T > + void set( boost::shared_ptr< T > value ) + { + assert( value ); // why would anyone store nullptrs.... + ObjectMap[typeid( T )] = value; + } + }; + +} + +#endif // _CORE_FRAMEWORK_H diff --git a/src/common/Network/Acceptor.cpp b/src/common/Network/Acceptor.cpp index f86bb7a3..3560b90d 100644 --- a/src/common/Network/Acceptor.cpp +++ b/src/common/Network/Acceptor.cpp @@ -1,6 +1,6 @@ -#include +#include "Hive.h" #include "Acceptor.h" -#include +#include "Connection.h" #include #include diff --git a/src/common/Network/Acceptor.h b/src/common/Network/Acceptor.h index 191184e8..01cfb606 100644 --- a/src/common/Network/Acceptor.h +++ b/src/common/Network/Acceptor.h @@ -5,7 +5,7 @@ #include #include #include -#include +#include "Forwards.h" namespace Core { diff --git a/src/common/Network/Connection.h b/src/common/Network/Connection.h index 40dd66fe..342d79c6 100644 --- a/src/common/Network/Connection.h +++ b/src/common/Network/Connection.h @@ -9,7 +9,7 @@ #include #include -#include +#include "Forwards.h" #include "Acceptor.h" diff --git a/src/common/Network/GamePacket.cpp b/src/common/Network/GamePacket.cpp index 10564229..15e9d0f9 100644 --- a/src/common/Network/GamePacket.cpp +++ b/src/common/Network/GamePacket.cpp @@ -5,7 +5,7 @@ #include #include #include -#include +#include "Util/Util.h" Core::Network::Packets::GamePacket::GamePacket( uint16_t subType, uint16_t size, uint32_t id1, uint32_t id2, uint16_t type ) { diff --git a/src/common/Network/GamePacket.h b/src/common/Network/GamePacket.h index 97a9dcdb..e2f9c49f 100644 --- a/src/common/Network/GamePacket.h +++ b/src/common/Network/GamePacket.h @@ -2,7 +2,7 @@ #define _GAMEPACKET_H_ #include "CommonNetwork.h" -#include +#include "Forwards.h" #include #include diff --git a/src/common/Network/PacketContainer.cpp b/src/common/Network/PacketContainer.cpp index efe6235c..a0b6037f 100644 --- a/src/common/Network/PacketContainer.cpp +++ b/src/common/Network/PacketContainer.cpp @@ -1,6 +1,6 @@ #include "PacketContainer.h" #include "GamePacket.h" -#include +#include "Common.h" #include diff --git a/src/common/Network/PacketContainer.h b/src/common/Network/PacketContainer.h index 9f39de72..a00e0b88 100644 --- a/src/common/Network/PacketContainer.h +++ b/src/common/Network/PacketContainer.h @@ -3,7 +3,7 @@ #include -#include +#include "Common.h" #include "CommonNetwork.h" #include "GamePacket.h" diff --git a/src/common/Network/PacketDef/Chat/ServerChatDef.h b/src/common/Network/PacketDef/Chat/ServerChatDef.h index 843cf289..31c9ee8e 100644 --- a/src/common/Network/PacketDef/Chat/ServerChatDef.h +++ b/src/common/Network/PacketDef/Chat/ServerChatDef.h @@ -1,8 +1,8 @@ #ifndef _CORE_NETWORK_PACKETS_CHAT_SERVER_IPC_H #define _CORE_NETWORK_PACKETS_CHAT_SERVER_IPC_H -#include -#include +#include +#include namespace Core { namespace Network { diff --git a/src/common/Network/PacketDef/Lobby/ServerLobbyDef.h b/src/common/Network/PacketDef/Lobby/ServerLobbyDef.h index cf971bef..0e915ce9 100644 --- a/src/common/Network/PacketDef/Lobby/ServerLobbyDef.h +++ b/src/common/Network/PacketDef/Lobby/ServerLobbyDef.h @@ -1,8 +1,8 @@ #ifndef _CORE_NETWORK_PACKETS_LOBBY_SERVER_IPC_H #define _CORE_NETWORK_PACKETS_LOBBY_SERVER_IPC_H -#include -#include +#include +#include namespace Core { namespace Network { diff --git a/src/common/Network/PacketDef/Zone/ServerZoneDef.h b/src/common/Network/PacketDef/Zone/ServerZoneDef.h index 29088cf8..c86bbccf 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -7,8 +7,8 @@ #ifndef _CORE_NETWORK_PACKETS_ZONE_SERVER_IPC_H #define _CORE_NETWORK_PACKETS_ZONE_SERVER_IPC_H -#include -#include +#include +#include namespace Core { namespace Network { diff --git a/src/common/Util/SpawnIndexAllocator.h b/src/common/Util/SpawnIndexAllocator.h index 732f652c..d6af5a40 100644 --- a/src/common/Util/SpawnIndexAllocator.h +++ b/src/common/Util/SpawnIndexAllocator.h @@ -72,7 +72,7 @@ namespace Util return spawnIndex != getAllocFailId(); } - constexpr T getAllocFailId() + constexpr T getAllocFailId() const { return static_cast< T >( -1 ); } diff --git a/src/common/Util/UtilMath.h b/src/common/Util/UtilMath.h index 65e18e37..68feeabe 100644 --- a/src/common/Util/UtilMath.h +++ b/src/common/Util/UtilMath.h @@ -1,7 +1,7 @@ #ifndef _UTILMATH_H #define _UTILMATH_H -#include +#include "Common.h" #define PI 3.14159265358979323846f diff --git a/src/common/Version.cpp.in b/src/common/Version.cpp.in index 4a7bacda..b2de470a 100644 --- a/src/common/Version.cpp.in +++ b/src/common/Version.cpp.in @@ -1,10 +1,10 @@ #include "Version.h" namespace Core { - namespace Version { +namespace Version { - const std::string GIT_HASH = "@GIT_SHA1@"; - const std::string VERSION = "@VERSION@"; +const std::string GIT_HASH = "@GIT_SHA1@"; +const std::string VERSION = "@VERSION@"; - } /* Version */ +} /* Version */ } /* Core */ diff --git a/src/libraries b/src/libraries index 732e26b4..67b949df 160000 --- a/src/libraries +++ b/src/libraries @@ -1 +1 @@ -Subproject commit 732e26b4bfb15875d71ae4ec13b8bd6155013840 +Subproject commit 67b949dfe3ffbbba7963b0861670ab4bb1819991 diff --git a/src/servers/CMakeLists.txt b/src/servers/CMakeLists.txt index 82613bd6..28e43594 100644 --- a/src/servers/CMakeLists.txt +++ b/src/servers/CMakeLists.txt @@ -12,3 +12,4 @@ include_directories("${PROJECT_SOURCE_DIR}") add_subdirectory(${PROJECT_SOURCE_DIR}/sapphire_lobby) add_subdirectory(${PROJECT_SOURCE_DIR}/sapphire_api) add_subdirectory(${PROJECT_SOURCE_DIR}/sapphire_zone) +add_subdirectory(${PROJECT_SOURCE_DIR}/Scripts) diff --git a/src/servers/sapphire_zone/Script/Scripts/CMakeLists.txt b/src/servers/Scripts/CMakeLists.txt similarity index 80% rename from src/servers/sapphire_zone/Script/Scripts/CMakeLists.txt rename to src/servers/Scripts/CMakeLists.txt index 419d7884..5f938985 100644 --- a/src/servers/sapphire_zone/Script/Scripts/CMakeLists.txt +++ b/src/servers/Scripts/CMakeLists.txt @@ -3,10 +3,6 @@ project(Sapphire_Script) file(GLOB SCRIPT_INCLUDE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/*.h") -include_directories("${CMAKE_SOURCE_DIR}/src/servers/") -include_directories("${CMAKE_SOURCE_DIR}/src/servers/sapphire_zone/") -include_directories("${CMAKE_CURRENT_SOURCE_DIR}") - message("exec: ${EXECUTABLE_OUTPUT_DIRECTORY}") set(SCRIPT_LIB_DIR "${EXECUTABLE_OUTPUT_DIRECTORY}/compiledscripts/" ) @@ -40,15 +36,11 @@ foreach(_scriptDir ${children}) endforeach() add_library("script_${_name}" MODULE ${SCRIPT_BUILD_FILES} "${SCRIPT_INCLUDE_FILES}" "${_scriptDir}/ScriptLoader.cpp") - target_link_libraries("script_${_name}" sapphire_zone) - cotire("script_${_name}") + target_link_libraries( "script_${_name}" sapphire_zone ) if(MSVC) - target_link_libraries("script_${_name}" ${Boost_LIBRARIES}) - endif() - - if(MSVC) - set_target_properties("script_${_name}" PROPERTIES + target_link_libraries( "script_${_name}" ${Boost_LIBRARIES}) + set_target_properties( "script_${_name}" PROPERTIES CXX_STANDARD 14 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS ON @@ -58,9 +50,15 @@ foreach(_scriptDir ${children}) LIBRARY_OUTPUT_DIRECTORY_MINSIZEREL "${SCRIPT_LIB_DIR}" ) endif() + target_include_directories("script_${_name}" PUBLIC "${CMAKE_SOURCE_DIR}/src/servers/sapphire_zone/") + target_include_directories("script_${_name}" PUBLIC "${CMAKE_SOURCE_DIR}/src/servers/Script/Scripts") + target_include_directories("script_${_name}" PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") + target_include_directories("script_${_name}" PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/Scripts") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/ScriptLoader.cpp.in" "${_scriptDir}/ScriptLoader.cpp") + cotire("script_${_name}") + if(MSVC) add_custom_command(TARGET "script_${_name}" POST_BUILD COMMAND ${CMAKE_COMMAND} -E remove "${SCRIPT_LIB_DIR}/script_${_name}.exp" diff --git a/src/servers/sapphire_zone/Script/Scripts/ScriptLoader.cpp.in b/src/servers/Scripts/ScriptLoader.cpp.in similarity index 100% rename from src/servers/sapphire_zone/Script/Scripts/ScriptLoader.cpp.in rename to src/servers/Scripts/ScriptLoader.cpp.in diff --git a/src/servers/sapphire_zone/Script/Scripts/ScriptObject.h b/src/servers/Scripts/ScriptObject.h similarity index 100% rename from src/servers/sapphire_zone/Script/Scripts/ScriptObject.h rename to src/servers/Scripts/ScriptObject.h diff --git a/src/servers/sapphire_zone/Script/Scripts/action/ActionSprint3.cpp b/src/servers/Scripts/action/ActionSprint3.cpp similarity index 100% rename from src/servers/sapphire_zone/Script/Scripts/action/ActionSprint3.cpp rename to src/servers/Scripts/action/ActionSprint3.cpp diff --git a/src/servers/Scripts/action/ScriptLoader.cpp b/src/servers/Scripts/action/ScriptLoader.cpp new file mode 100644 index 00000000..e7ba87ee --- /dev/null +++ b/src/servers/Scripts/action/ScriptLoader.cpp @@ -0,0 +1,15 @@ +#include