diff --git a/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.cpp b/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.cpp index 3325b985..79352c6f 100644 --- a/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.cpp +++ b/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.cpp @@ -19,7 +19,7 @@ #include "Network/PacketWrappers/InitUIPacket.h" #include "Network/GameConnection.h" #include "Script/ScriptManager.h" -#include "Script/NativeScript.h" +#include "Script/NativeScriptManager.h" #include "Actor/Player.h" #include "Actor/BattleNpc.h" diff --git a/src/servers/Server_Zone/Forwards.h b/src/servers/Server_Zone/Forwards.h index 3c75c40b..8dc06545 100644 --- a/src/servers/Server_Zone/Forwards.h +++ b/src/servers/Server_Zone/Forwards.h @@ -70,7 +70,7 @@ namespace Core namespace Scripting { - class NativeScript; + class NativeScriptManager; typedef std::function< void( Entity::Player&, uint32_t, uint16_t, uint16_t, uint16_t ) > EventReturnCallback; } diff --git a/src/servers/Server_Zone/Script/NativeScript.cpp b/src/servers/Server_Zone/Script/NativeScript.cpp deleted file mode 100644 index c2b8d9dd..00000000 --- a/src/servers/Server_Zone/Script/NativeScript.cpp +++ /dev/null @@ -1,154 +0,0 @@ -#include "NativeScript.h" - -namespace Core { - namespace Scripting { - - NativeScript::NativeScript( ) - { } - - StatusEffectScript* NativeScript::getStatusEffectScript( uint32_t statusId ) - { - auto script = m_statusEffectScripts.find( statusId ); - if( script == m_statusEffectScripts.end() ) - return nullptr; - - return script->second; - } - - ActionScript* NativeScript::getActionScript( uint32_t actionId ) - { - auto script = m_actionScripts.find( actionId ); - if( script == m_actionScripts.end() ) - return nullptr; - - return script->second; - } - - QuestScript* NativeScript::getQuestScript( uint32_t questId ) - { - auto script = m_questScripts.find( questId ); - if( script == m_questScripts.end() ) - return nullptr; - - return script->second; - } - - BattleNpcScript* NativeScript::getBattleNpcScript( uint32_t npcId ) - { - auto script = m_battleNpcScripts.find( npcId ); - if( script == m_battleNpcScripts.end() ) - return nullptr; - - return script->second; - } - - ZoneScript* NativeScript::getZoneScript( uint32_t zoneId ) - { - auto script = m_zoneScripts.find( zoneId ); - if( script == m_zoneScripts.end() ) - return nullptr; - - return script->second; - } - - bool NativeScript::loadScript( const std::string& path ) - { - auto module = m_loader.loadModule( path ); - if( module ) - { - auto script = m_loader.getScriptObject( module->handle ); - if( script ) - { - module->script = script; - module->script_name = script->getName(); - module->type = script->getType(); - - switch( script->getType() ) - { - case ScriptType::StatusEffect: - m_statusEffectScripts[ script->getId() ] = dynamic_cast< StatusEffectScript* >( script ); - break; - case ScriptType::Action: - m_actionScripts[ script->getId() ] = dynamic_cast< ActionScript* >( script ); - break; - case ScriptType::Quest: - m_questScripts[ script->getId() ] = dynamic_cast< QuestScript* >( script ); - break; - case ScriptType::BattleNpc: - m_battleNpcScripts[ script->getId() ] = dynamic_cast< BattleNpcScript* >( script ); - break; - case ScriptType::Zone: - m_zoneScripts[ script->getId() ] = dynamic_cast< ZoneScript* >( script ); - break; - - default: - m_loader.unloadScript( module ); - return false; - } - } - else - { - m_loader.unloadScript( module ); - return false; - } - - } - else - return false; - - return true; - } - - const std::string NativeScript::getModuleExtension() - { - return m_loader.getModuleExtension(); - } - - bool NativeScript::unloadScript( const std::string& name ) - { - auto info = m_loader.getScriptInfo( name ); - if( info ) - { - auto ptr = info->script; - - switch( info->type ) - { - case ScriptType::StatusEffect: - removeValueFromMap< uint32_t, StatusEffectScript* >( ptr, m_statusEffectScripts ); - break; - case ScriptType::Action: - removeValueFromMap< uint32_t, ActionScript* >( ptr, m_actionScripts ); - break; - case ScriptType::Quest: - removeValueFromMap< uint32_t, QuestScript* >( ptr, m_questScripts ); - break; - case ScriptType::BattleNpc: - removeValueFromMap< uint32_t, BattleNpcScript* >( ptr, m_battleNpcScripts ); - break; - case ScriptType::Zone: - removeValueFromMap< uint32_t, ZoneScript* >( ptr, m_zoneScripts ); - break; - - default: - return false; - } - - return m_loader.unloadScript( info ); - } - - return false; - } - - void NativeScript::findScripts( std::set< Core::Scripting::ScriptInfo* >& scripts, const std::string& search ) - { - return m_loader.findScripts( scripts, search ); - } - - - - boost::shared_ptr< NativeScript > create_script_engine( ) - { - return boost::make_shared< NativeScript >(); - } -} -} diff --git a/src/servers/Server_Zone/Script/NativeScriptManager.cpp b/src/servers/Server_Zone/Script/NativeScriptManager.cpp new file mode 100644 index 00000000..6ee29848 --- /dev/null +++ b/src/servers/Server_Zone/Script/NativeScriptManager.cpp @@ -0,0 +1,144 @@ +#include "NativeScriptManager.h" + +namespace Core { + namespace Scripting { + + NativeScriptManager::NativeScriptManager( ) + { } + + StatusEffectScript* NativeScriptManager::getStatusEffectScript( uint32_t statusId ) + { + auto script = m_statusEffectScripts.find( statusId ); + if( script == m_statusEffectScripts.end() ) + return nullptr; + + return script->second; + } + + ActionScript* NativeScriptManager::getActionScript( uint32_t actionId ) + { + auto script = m_actionScripts.find( actionId ); + if( script == m_actionScripts.end() ) + return nullptr; + + return script->second; + } + + QuestScript* NativeScriptManager::getQuestScript( uint32_t questId ) + { + auto script = m_questScripts.find( questId ); + if( script == m_questScripts.end() ) + return nullptr; + + return script->second; + } + + BattleNpcScript* NativeScriptManager::getBattleNpcScript( uint32_t npcId ) + { + auto script = m_battleNpcScripts.find( npcId ); + if( script == m_battleNpcScripts.end() ) + return nullptr; + + return script->second; + } + + ZoneScript* NativeScriptManager::getZoneScript( uint32_t zoneId ) + { + auto script = m_zoneScripts.find( zoneId ); + if( script == m_zoneScripts.end() ) + return nullptr; + + return script->second; + } + + bool NativeScriptManager::loadScript( const std::string& path ) + { + auto module = m_loader.loadModule( path ); + if( !module ) + return false; + + auto script = m_loader.getScriptObject( module->handle ); + if( !script ) + return false; + + module->script = script; + module->script_name = script->getName(); + module->type = script->getType(); + + switch( script->getType() ) + { + case ScriptType::StatusEffect: + m_statusEffectScripts[ script->getId() ] = dynamic_cast< StatusEffectScript* >( script ); + break; + case ScriptType::Action: + m_actionScripts[ script->getId() ] = dynamic_cast< ActionScript* >( script ); + break; + case ScriptType::Quest: + m_questScripts[ script->getId() ] = dynamic_cast< QuestScript* >( script ); + break; + case ScriptType::BattleNpc: + m_battleNpcScripts[ script->getId() ] = dynamic_cast< BattleNpcScript* >( script ); + break; + case ScriptType::Zone: + m_zoneScripts[ script->getId() ] = dynamic_cast< ZoneScript* >( script ); + break; + + default: + m_loader.unloadScript( module ); + return false; + } + + return true; + } + + const std::string NativeScriptManager::getModuleExtension() + { + return m_loader.getModuleExtension(); + } + + bool NativeScriptManager::unloadScript( const std::string& name ) + { + auto info = m_loader.getScriptInfo( name ); + if( !info ) + return false; + + auto ptr = info->script; + + switch( info->type ) + { + case ScriptType::StatusEffect: + removeValueFromMap< uint32_t, StatusEffectScript* >( ptr, m_statusEffectScripts ); + break; + case ScriptType::Action: + removeValueFromMap< uint32_t, ActionScript* >( ptr, m_actionScripts ); + break; + case ScriptType::Quest: + removeValueFromMap< uint32_t, QuestScript* >( ptr, m_questScripts ); + break; + case ScriptType::BattleNpc: + removeValueFromMap< uint32_t, BattleNpcScript* >( ptr, m_battleNpcScripts ); + break; + case ScriptType::Zone: + removeValueFromMap< uint32_t, ZoneScript* >( ptr, m_zoneScripts ); + break; + + default: + return false; + } + + return m_loader.unloadScript( info ); + } + + void NativeScriptManager::findScripts( std::set< Core::Scripting::ScriptInfo* >& scripts, const std::string& search ) + { + return m_loader.findScripts( scripts, search ); + } + + + + boost::shared_ptr< NativeScriptManager > createNativeScriptMgr() + { + return boost::make_shared< NativeScriptManager >(); + } +} +} diff --git a/src/servers/Server_Zone/Script/NativeScript.h b/src/servers/Server_Zone/Script/NativeScriptManager.h similarity index 93% rename from src/servers/Server_Zone/Script/NativeScript.h rename to src/servers/Server_Zone/Script/NativeScriptManager.h index 8c9e7928..8068d4ec 100644 --- a/src/servers/Server_Zone/Script/NativeScript.h +++ b/src/servers/Server_Zone/Script/NativeScriptManager.h @@ -15,7 +15,7 @@ namespace Core { namespace Scripting { - class NativeScript + class NativeScriptManager { protected: std::unordered_map< uint32_t, StatusEffectScript* > m_statusEffectScripts; @@ -27,7 +27,7 @@ namespace Scripting { ScriptLoader m_loader; public: - NativeScript( ); + NativeScriptManager( ); StatusEffectScript* getStatusEffectScript( uint32_t statusId ); ActionScript* getActionScript( uint32_t actionId ); @@ -59,7 +59,7 @@ namespace Scripting { - boost::shared_ptr< NativeScript > create_script_engine( ); + boost::shared_ptr< NativeScriptManager > createNativeScriptMgr(); } } diff --git a/src/servers/Server_Zone/Script/ScriptManager.cpp b/src/servers/Server_Zone/Script/ScriptManager.cpp index 636b5da1..0b2b57e1 100644 --- a/src/servers/Server_Zone/Script/ScriptManager.cpp +++ b/src/servers/Server_Zone/Script/ScriptManager.cpp @@ -1,7 +1,7 @@ #include #include -#include "NativeScript.h" +#include "NativeScriptManager.h" #include "Zone/Zone.h" #include "Actor/Player.h" @@ -27,7 +27,7 @@ extern Core::ServerZone g_serverZone; Core::Scripting::ScriptManager::ScriptManager() { - m_nativeScriptHandler = create_script_engine(); + m_nativeScriptManager = createNativeScriptMgr(); } Core::Scripting::ScriptManager::~ScriptManager() @@ -40,7 +40,7 @@ bool Core::Scripting::ScriptManager::init() std::set< std::string > files; loadDir( g_serverZone.getConfig()->getValue< std::string >( "Settings.General.ScriptPath", "./compiledscripts/" ), - files, m_nativeScriptHandler->getModuleExtension() ); + files, m_nativeScriptManager->getModuleExtension() ); for( auto itr = files.begin(); itr != files.end(); ++itr ) { @@ -48,7 +48,7 @@ bool Core::Scripting::ScriptManager::init() g_log.debug( "got module: " + path ); - m_nativeScriptHandler->loadScript( path ); + m_nativeScriptManager->loadScript( path ); } return true; @@ -124,7 +124,7 @@ bool Core::Scripting::ScriptManager::onTalk( Entity::Player& player, uint64_t ac scriptId = EVENTSCRIPT_AETHERNET_ID; } - auto script = m_nativeScriptHandler->getQuestScript( scriptId ); + auto script = m_nativeScriptManager->getQuestScript( scriptId ); if( script ) { player.sendDebug( "Calling: " + objName + "." + eventName ); @@ -159,7 +159,7 @@ bool Core::Scripting::ScriptManager::onEnterTerritory( Entity::Player& player, u std::string eventName = "onEnterTerritory"; std::string objName = Event::getEventName( eventId ); - auto script = m_nativeScriptHandler->getZoneScript( player.getZoneId() ); + auto script = m_nativeScriptManager->getZoneScript( player.getZoneId() ); if( script ) { player.sendDebug( "Calling: " + objName + "." + eventName ); @@ -244,7 +244,7 @@ bool Core::Scripting::ScriptManager::onEmote( Entity::Player& player, uint64_t a std::string eventName = "onEmote"; std::string objName = Event::getEventName( eventId ); - auto script = m_nativeScriptHandler->getQuestScript( eventId ); + auto script = m_nativeScriptManager->getQuestScript( eventId ); if( script ) { player.sendDebug( "Calling: " + objName + "." + eventName ); @@ -381,7 +381,7 @@ bool Core::Scripting::ScriptManager::onMobKill( Entity::Player& player, uint16_t uint16_t questId = activeQuests->c.questId; - auto script = m_nativeScriptHandler->getQuestScript( questId ); + auto script = m_nativeScriptManager->getQuestScript( questId ); if( script ) { std::string objName = Event::getEventName( 0x00010000 | questId ); @@ -397,7 +397,7 @@ bool Core::Scripting::ScriptManager::onMobKill( Entity::Player& player, uint16_t bool Core::Scripting::ScriptManager::onCastFinish( Entity::Player& player, Entity::ActorPtr pTarget, uint32_t actionId ) { - auto script = m_nativeScriptHandler->getActionScript( actionId ); + auto script = m_nativeScriptManager->getActionScript( actionId ); if( script ) script->onCastFinish( player, *pTarget ); @@ -407,7 +407,7 @@ bool Core::Scripting::ScriptManager::onCastFinish( Entity::Player& player, Entit bool Core::Scripting::ScriptManager::onStatusReceive( Entity::ActorPtr pActor, uint32_t effectId ) { - auto script = m_nativeScriptHandler->getStatusEffectScript( effectId ); + auto script = m_nativeScriptManager->getStatusEffectScript( effectId ); if( script ) { if( pActor->isPlayer() ) @@ -423,7 +423,7 @@ bool Core::Scripting::ScriptManager::onStatusReceive( Entity::ActorPtr pActor, u bool Core::Scripting::ScriptManager::onStatusTick( Entity::ActorPtr pActor, Core::StatusEffect::StatusEffect& effect ) { - auto script = m_nativeScriptHandler->getStatusEffectScript( effect.getId() ); + auto script = m_nativeScriptManager->getStatusEffectScript( effect.getId() ); if( script ) { if( pActor->isPlayer() ) @@ -439,7 +439,7 @@ bool Core::Scripting::ScriptManager::onStatusTick( Entity::ActorPtr pActor, Core bool Core::Scripting::ScriptManager::onStatusTimeOut( Entity::ActorPtr pActor, uint32_t effectId ) { - auto script = m_nativeScriptHandler->getStatusEffectScript( effectId ); + auto script = m_nativeScriptManager->getStatusEffectScript( effectId ); if( script ) { if( pActor->isPlayer() ) @@ -455,7 +455,7 @@ bool Core::Scripting::ScriptManager::onStatusTimeOut( Entity::ActorPtr pActor, u bool Core::Scripting::ScriptManager::onZoneInit( ZonePtr pZone ) { - auto script = m_nativeScriptHandler->getZoneScript( pZone->getId() ); + auto script = m_nativeScriptManager->getZoneScript( pZone->getId() ); if( script ) { script->onZoneInit(); @@ -466,7 +466,7 @@ bool Core::Scripting::ScriptManager::onZoneInit( ZonePtr pZone ) return false; } -Scripting::NativeScript& Core::Scripting::ScriptManager::getNativeScriptHandler() +Scripting::NativeScriptManager& Core::Scripting::ScriptManager::getNativeScriptHandler() { - return *m_nativeScriptHandler; + return *m_nativeScriptManager; } diff --git a/src/servers/Server_Zone/Script/ScriptManager.h b/src/servers/Server_Zone/Script/ScriptManager.h index 1419ac21..5df46660 100644 --- a/src/servers/Server_Zone/Script/ScriptManager.h +++ b/src/servers/Server_Zone/Script/ScriptManager.h @@ -8,12 +8,6 @@ #include #include "Forwards.h" - -namespace chaiscript -{ - class ChaiScript; -} - namespace Core { namespace Scripting @@ -23,7 +17,7 @@ namespace Core { private: - boost::shared_ptr< NativeScript > m_nativeScriptHandler; + boost::shared_ptr< NativeScriptManager > m_nativeScriptManager; std::function< std::string( Entity::Player& ) > m_onFirstEnterWorld; // auto fn = m_pChaiHandler->eval< std::function >( "onFirstEnterWorld" ); @@ -62,7 +56,7 @@ namespace Core void loadDir( std::string dirname, std::set& files, std::string ext ); - NativeScript& getNativeScriptHandler(); + NativeScriptManager& getNativeScriptHandler(); }; } }