diff --git a/src/servers/sapphire_api/main.cpp b/src/servers/sapphire_api/main.cpp index 1a6fe25f..bcce3189 100644 --- a/src/servers/sapphire_api/main.cpp +++ b/src/servers/sapphire_api/main.cpp @@ -739,7 +739,7 @@ void defaultGet( shared_ptr response, shared_ptr +#include + +#include "Forwards.h" +#include +#include +#include + +namespace Core { + namespace Entity { + +/*! +\class GameObject +\brief Base class for all actor/objects + +*/ + class GameObject : public boost::enable_shared_from_this< GameObject > + { + public: + enum ObjKind : uint8_t + { + None = 0x00, + Player = 0x01, + BattleNpc = 0x02, + EventNpc = 0x03, + Treasure = 0x04, + Aetheryte = 0x05, + GatheringPoint = 0x06, + EventObj = 0x07, + Mount = 0x08, + Companion = 0x09, + Retainer = 0x0A, + Area = 0x0B, + Housing = 0x0C, + Cutscene = 0x0D, + CardStand = 0x0E, + }; + + protected: + /*! Position of the object */ + Common::FFXIVARR_POSITION3 m_pos; + /*! Rotation of the object */ + float m_rot; + /*! Id of the actor */ + uint32_t m_id; + /*! Type of the actor */ + ObjKind m_objKind; + + public: + GameObject( ObjKind type ); + virtual ~GameObject() {}; + + uint32_t getId() const; + + ObjKind getObjKind() const; + + Common::FFXIVARR_POSITION3& getPos(); + void setPos( const Common::FFXIVARR_POSITION3& pos ); + void setPos( float x, float y, float z ); + + float getRot() const; + void setRot( float rot ); + + bool isPlayer() const; + bool isBNpc() const; + bool isENpc() const; + + PlayerPtr getAsPlayer(); + BattleNpcPtr getAsBNpc(); + EventNpcPtr getAsENpc(); + }; + + } +} +#endif diff --git a/src/servers/sapphire_zone/Script/Scripts/CMakeLists.txt b/src/servers/sapphire_zone/Script/Scripts/CMakeLists.txt index 5b1dedf1..03c76b3c 100644 --- a/src/servers/sapphire_zone/Script/Scripts/CMakeLists.txt +++ b/src/servers/sapphire_zone/Script/Scripts/CMakeLists.txt @@ -21,7 +21,8 @@ foreach(_scriptDir ${children}) if(IS_DIRECTORY ${_scriptDir} AND NOT ${_name} MATCHES "CMakeFiles") message("discovered plugin lib: ${_scriptDir} (${_name})") - file(GLOB_RECURSE SCRIPT_FILES "${_scriptDir}/*.cpp") + file(GLOB_RECURSE SCRIPT_BUILD_FILES "${_scriptDir}/*.cpp") + file(GLOB_RECURSE SCRIPT_FILES RELATIVE "${_scriptDir}" "${_name}/*.cpp") # build file list foreach(_script ${SCRIPT_FILES}) @@ -38,8 +39,8 @@ foreach(_scriptDir ${children}) endif() endforeach() - add_library("script_${_name}" MODULE "${SCRIPT_FILES}" "${SCRIPT_INCLUDE_FILES}" "${_scriptDir}/ScriptLoader.cpp") - target_link_libraries("script_${_name}" sapphire_zone ${Boost_LIBRARIES}) + add_library("script_${_name}" MODULE "${SCRIPT_BUILD_FILES}" "${SCRIPT_INCLUDE_FILES}" "${_scriptDir}/ScriptLoader.cpp") + target_link_libraries("script_${_name}" sapphire_zone) if(MSVC) set_target_properties("script_${_name}" PROPERTIES @@ -55,11 +56,13 @@ foreach(_scriptDir ${children}) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/ScriptLoader.cpp.in" "${_scriptDir}/ScriptLoader.cpp") - add_custom_command(TARGET "script_${_name}" POST_BUILD - COMMAND ${CMAKE_COMMAND} -E remove "${SCRIPT_LIB_DIR}/script_${_name}.exp" - COMMAND ${CMAKE_COMMAND} -E remove "${SCRIPT_LIB_DIR}/script_${_name}.lib" - COMMAND ${CMAKE_COMMAND} -E remove "${SCRIPT_LIB_DIR}/script_${_name}.ilk" - ) + if(MSVC) + add_custom_command(TARGET "script_${_name}" POST_BUILD + COMMAND ${CMAKE_COMMAND} -E remove "${SCRIPT_LIB_DIR}/script_${_name}.exp" + COMMAND ${CMAKE_COMMAND} -E remove "${SCRIPT_LIB_DIR}/script_${_name}.lib" + COMMAND ${CMAKE_COMMAND} -E remove "${SCRIPT_LIB_DIR}/script_${_name}.ilk" + ) + endif() unset(ScriptIncludes) unset(ScriptNames) diff --git a/src/servers/sapphire_zone/ServerZone.cpp b/src/servers/sapphire_zone/ServerZone.cpp index ee723654..9f2f3785 100644 --- a/src/servers/sapphire_zone/ServerZone.cpp +++ b/src/servers/sapphire_zone/ServerZone.cpp @@ -193,7 +193,7 @@ bool Core::ServerZone::loadSettings( int32_t argc, char* argv[] ) void Core::ServerZone::run( int32_t argc, char* argv[] ) { // TODO: add more error checks for the entire initialisation - g_log.setLogPath( "log\\SapphireZone_" ); + g_log.setLogPath( "log/SapphireZone_" ); g_log.init(); printBanner();