1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-29 07:37:45 +00:00

Progress...

This commit is contained in:
Mordred 2018-12-23 03:53:08 +01:00
parent 28139b47b5
commit f1c0512d28
95 changed files with 860 additions and 793 deletions

View file

@ -27,13 +27,13 @@
#include <algorithm>
#include <Framework.h>
#include <Logging/Logger.h>
#include "Forwards.h"
#include "SapphireAPI.h"
Sapphire::Framework g_fw;
Sapphire::Logger g_log;
Sapphire::Db::DbWorkerPool< Sapphire::Db::ZoneDbConnection > g_charaDb;
Sapphire::Data::ExdDataGenerated g_exdDataGen;
Sapphire::Network::SapphireAPI g_sapphireAPI;
@ -41,6 +41,7 @@ Sapphire::Network::SapphireAPI g_sapphireAPI;
namespace fs = std::experimental::filesystem;
using namespace std;
using namespace Sapphire;
using HttpServer = SimpleWeb::Server< SimpleWeb::HTTP >;
using HttpClient = SimpleWeb::Client< SimpleWeb::HTTP >;
@ -64,17 +65,17 @@ void reloadConfig()
void print_request_info( shared_ptr< HttpServer::Request > request )
{
g_log.info( "Request from " + request->remote_endpoint_address + " (" + request->path + ")" );
Logger::info( "Request from " + request->remote_endpoint_address + " (" + request->path + ")" );
}
bool loadSettings( int32_t argc, char* argv[] )
{
g_log.info( "Loading config " + configPath );
Logger::info( "Loading config " + configPath );
if( !m_pConfig->loadConfig( configPath ) )
{
g_log.fatal( "Error loading config " + configPath );
g_log.fatal( "If this is the first time starting the server, we've copied the default one for your editing pleasure." );
Logger::fatal( "Error loading config " + configPath );
Logger::fatal( "If this is the first time starting the server, we've copied the default one for your editing pleasure." );
return false;
}
@ -135,17 +136,17 @@ bool loadSettings( int32_t argc, char* argv[] )
}
catch( ... )
{
g_log.error( "Error parsing argument: " + arg + " " + "value: " + val + "\n" );
g_log.error( "Usage: <arg> <val> \n" );
Logger::error( "Error parsing argument: " + arg + " " + "value: " + val + "\n" );
Logger::error( "Usage: <arg> <val> \n" );
}
}
g_log.info( "Setting up generated EXD data" );
Logger::info( "Setting up generated EXD data" );
auto dataPath = m_pConfig->getValue< std::string >( "GlobalParameters", "DataPath", "" );
if( !g_exdDataGen.init( dataPath ) )
{
g_log.fatal( "Error setting up generated EXD data. Make sure that DataPath is set correctly in config.ini" );
g_log.fatal( "DataPath: " + dataPath );
Logger::fatal( "Error setting up generated EXD data. Make sure that DataPath is set correctly in config.ini" );
Logger::fatal( "DataPath: " + dataPath );
return false;
}
@ -168,7 +169,7 @@ bool loadSettings( int32_t argc, char* argv[] )
m_pConfig->getValue< std::string >( "RestNetwork", "ListenPort", "80" ) ) );
server.config.address = m_pConfig->getValue< std::string >( "RestNetwork", "ListenIp", "0.0.0.0" );
g_log.info( "Database: Connected to " + info.host + ":" + std::to_string( info.port ) );
Logger::info( "Database: Connected to " + info.host + ":" + std::to_string( info.port ) );
return true;
}
@ -279,7 +280,7 @@ void createAccount( shared_ptr< HttpServer::Response > response, shared_ptr< Htt
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -313,7 +314,7 @@ void login( shared_ptr< HttpServer::Response > response, shared_ptr< HttpServer:
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -348,7 +349,7 @@ void deleteCharacter( shared_ptr< HttpServer::Response > response, shared_ptr< H
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -396,7 +397,7 @@ void createCharacter( shared_ptr< HttpServer::Response > response, shared_ptr< H
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -429,7 +430,7 @@ void insertSession( shared_ptr< HttpServer::Response > response, shared_ptr< Htt
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -464,7 +465,7 @@ void checkNameTaken( shared_ptr< HttpServer::Response > response, shared_ptr< Ht
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -506,7 +507,7 @@ void checkSession( shared_ptr< HttpServer::Response > response, shared_ptr< Http
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -536,7 +537,7 @@ void getNextCharId( shared_ptr< HttpServer::Response > response, shared_ptr< Htt
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -567,7 +568,7 @@ void getNextContentId( shared_ptr< HttpServer::Response > response, shared_ptr<
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -623,7 +624,7 @@ void getCharacterList( shared_ptr< HttpServer::Response > response, shared_ptr<
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -658,7 +659,7 @@ void get_init( shared_ptr< HttpServer::Response > response, shared_ptr< HttpServ
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -692,7 +693,7 @@ void get_headline_all( shared_ptr< HttpServer::Response > response, shared_ptr<
catch( exception& e )
{
*response << buildHttpResponse( 500 );
g_log.error( e.what() );
Logger::error( e.what() );
}
}
@ -735,16 +736,13 @@ void defaultGet( shared_ptr< HttpServer::Response > response, shared_ptr< HttpSe
int main( int argc, char* argv[] )
{
auto pLog = std::shared_ptr< Sapphire::Logger >( new Sapphire::Logger() );
g_fw.set< Sapphire::Logger >( pLog );
g_log.setLogPath( "log/SapphireAPI" );
g_log.init();
Logger::init( "log/SapphireAPI" );
g_log.info( "===========================================================" );
g_log.info( "Sapphire API Server " );
g_log.info( "Version: 0.0.1" );
g_log.info( "Compiled: " __DATE__ " " __TIME__ );
g_log.info( "===========================================================" );
Logger::info( "===========================================================" );
Logger::info( "Sapphire API Server " );
Logger::info( "Version: 0.0.1" );
Logger::info( "Compiled: " __DATE__ " " __TIME__ );
Logger::info( "===========================================================" );
if( !loadSettings( argc, argv ) )
throw std::exception();
@ -771,8 +769,8 @@ int main( int argc, char* argv[] )
server.start();
} );
g_log.info( "API server running on " + m_pConfig->getValue< std::string >( "RestNetwork", "ListenIp", "0.0.0.0" ) + ":" +
m_pConfig->getValue< std::string >( "RestNetwork", "ListenPort", "80" ) );
Logger::info( "API server running on " + m_pConfig->getValue< std::string >( "RestNetwork", "ListenIp", "0.0.0.0" ) + ":" +
m_pConfig->getValue< std::string >( "RestNetwork", "ListenPort", "80" ) );
//Wait for server to start so that the client can connect
this_thread::sleep_for( chrono::seconds( 1 ) );

View file

@ -6,8 +6,6 @@
#include "PreparedStatement.h"
#include "Framework.h"
extern Sapphire::Framework g_fw;
Sapphire::Db::DbConnection::DbConnection( ConnectionInfo& connInfo ) :
m_reconnecting( false ),
m_prepareError( false ),
@ -66,7 +64,7 @@ uint32_t Sapphire::Db::DbConnection::open()
}
catch( std::runtime_error& e )
{
g_fw.get< Logger >()->error( e.what() );
Logger::error( e.what() );
return 1;
}
@ -118,7 +116,7 @@ bool Sapphire::Db::DbConnection::execute( const std::string& sql )
}
catch( std::runtime_error& e )
{
g_fw.get< Logger >()->error( e.what() );
Logger::error( e.what() );
return false;
}
}
@ -133,7 +131,7 @@ std::shared_ptr< Mysql::ResultSet > Sapphire::Db::DbConnection::query( const std
}
catch( std::runtime_error& e )
{
g_fw.get< Logger >()->error( e.what() );
Logger::error( e.what() );
return nullptr;
}
}
@ -170,7 +168,7 @@ Sapphire::Db::DbConnection::query( std::shared_ptr< Sapphire::Db::PreparedStatem
}
catch( std::runtime_error& e )
{
g_fw.get< Logger >()->error( e.what() );
Logger::error( e.what() );
return nullptr;
}
@ -196,7 +194,7 @@ bool Sapphire::Db::DbConnection::execute( std::shared_ptr< Sapphire::Db::Prepare
}
catch( std::runtime_error& e )
{
g_fw.get< Logger >()->error( e.what() );
Logger::error( e.what() );
return false;
}
}
@ -232,7 +230,7 @@ void Sapphire::Db::DbConnection::prepareStatement( uint32_t index, const std::st
}
catch( std::runtime_error& e )
{
g_fw.get< Logger >()->error( e.what() );
Logger::error( e.what() );
m_prepareError = true;
}

View file

@ -3,9 +3,6 @@
#include "ZoneDbConnection.h"
#include "DbWorkerPool.h"
#include "Logging/Logger.h"
#include "Framework.h"
extern Sapphire::Framework g_fw;
Sapphire::Db::DbLoader::DbLoader()
{
@ -17,14 +14,12 @@ Sapphire::Db::DbLoader& Sapphire::Db::DbLoader::addDb( Sapphire::Db::DbWorkerPoo
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 )
{
pLog->error(
Logger::error(
"database: invalid number of worker threads specified. Please pick a value between 1 and 32." );
return false;
}
@ -40,7 +35,7 @@ Sapphire::Db::DbLoader& Sapphire::Db::DbLoader::addDb( Sapphire::Db::DbWorkerPoo
if( error )
{
pLog->error( "DatabasePool failed to open." );
Logger::error( "DatabasePool failed to open." );
return false;
}
}
@ -55,8 +50,7 @@ Sapphire::Db::DbLoader& Sapphire::Db::DbLoader::addDb( Sapphire::Db::DbWorkerPoo
{
if( !pool.prepareStatements() )
{
auto pLog = g_fw.get< Logger >();
pLog->error( "Could not prepare statements of the database, see log for details." );
Logger::error( "Could not prepare statements of the database, see log for details." );
return false;
}
return true;

View file

@ -10,8 +10,6 @@
#include "Logging/Logger.h"
#include <mysql.h>
extern Sapphire::Framework g_fw;
class PingOperation :
public Sapphire::Db::Operation
{
@ -23,8 +21,7 @@ class PingOperation :
};
template< class T >
Sapphire::Db::DbWorkerPool< T >::DbWorkerPool()
:
Sapphire::Db::DbWorkerPool< T >::DbWorkerPool() :
m_queue( new Sapphire::LockedWaitQueue< std::shared_ptr< Operation > >() ),
m_asyncThreads( 0 ),
m_synchThreads( 0 )
@ -39,8 +36,8 @@ Sapphire::Db::DbWorkerPool< T >::~DbWorkerPool()
template< class T >
void Sapphire::Db::DbWorkerPool< T >::setConnectionInfo( const ConnectionInfo& info,
uint8_t asyncThreads,
uint8_t synchThreads )
uint8_t asyncThreads,
uint8_t synchThreads )
{
m_connectionInfo = info;
m_asyncThreads = asyncThreads;
@ -50,10 +47,9 @@ void Sapphire::Db::DbWorkerPool< T >::setConnectionInfo( const ConnectionInfo& i
template< class T >
uint32_t Sapphire::Db::DbWorkerPool< T >::open()
{
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 ) );
Logger::info( "[DbPool] Opening DatabasePool " + getDatabaseName() +
" Asynchronous connections: " + std::to_string( m_asyncThreads ) +
" Synchronous connections: " + std::to_string( m_synchThreads ) );
uint32_t error = openConnections( IDX_ASYNC, m_asyncThreads );
@ -64,9 +60,9 @@ uint32_t Sapphire::Db::DbWorkerPool< T >::open()
if( !error )
{
pLog->info( "[DbPool] DatabasePool " + getDatabaseName() + " opened successfully. " +
std::to_string( ( m_connections[ IDX_SYNCH ].size() + m_connections[ IDX_ASYNC ].size() ) ) +
" total connections running." );
Logger::info( "[DbPool] DatabasePool " + getDatabaseName() + " opened successfully. " +
std::to_string( ( m_connections[ IDX_SYNCH ].size() + m_connections[ IDX_ASYNC ].size() ) ) +
" total connections running." );
}
return error;
@ -75,11 +71,10 @@ uint32_t Sapphire::Db::DbWorkerPool< T >::open()
template< class T >
void Sapphire::Db::DbWorkerPool< T >::close()
{
auto pLog = g_fw.get< Logger >();
pLog->info( "[DbPool] Closing down DatabasePool " + getDatabaseName() );
Logger::info( "[DbPool] Closing down DatabasePool " + getDatabaseName() );
m_connections[ IDX_ASYNC ].clear();
m_connections[ IDX_SYNCH ].clear();
pLog->info( "[DbPool] All connections on DatabasePool " + getDatabaseName() + "closed." );
Logger::info( "[DbPool] All connections on DatabasePool " + getDatabaseName() + "closed." );
}
template< class T >

View file

@ -8,6 +8,8 @@ namespace Sapphire
class ConfigMgr;
using ConfigMgrPtr = std::shared_ptr< ConfigMgr >;
class Framework;
using FrameworkPtr = std::shared_ptr< Framework >;
namespace Network
{

View file

@ -23,7 +23,7 @@ namespace Sapphire
}
void Logger::setLogPath( const std::string& logPath )
void Logger::init( const std::string& logPath )
{
auto pos = logPath.find_last_of( '/' );
@ -33,15 +33,10 @@ namespace Sapphire
fs::create_directories( realPath );
}
m_logFile = logPath;
}
void Logger::init()
{
spdlog::init_thread_pool( 8192, 1 );
auto stdout_sink = std::make_shared< spdlog::sinks::stdout_color_sink_mt >();
auto daily_sink = std::make_shared< spdlog::sinks::daily_file_sink_mt >( m_logFile + ".log", 0, 0 );
auto daily_sink = std::make_shared< spdlog::sinks::daily_file_sink_mt >( logPath + ".log", 0, 0 );
std::vector< spdlog::sink_ptr > sinks { stdout_sink, daily_sink };

View file

@ -11,23 +11,20 @@ namespace Sapphire
private:
std::string m_logFile;
public:
Logger();
~Logger();
void init();
public:
void error( const std::string& text );
static void init( const std::string& logPath );
void info( const std::string& text );
static void error( const std::string& text );
void debug( const std::string& text );
static void info( const std::string& text );
void fatal( const std::string& text );
static void debug( const std::string& text );
void setLogPath( const std::string& logPath );
static void fatal( const std::string& text );
};

View file

@ -1,17 +1,19 @@
#include "Connection.h"
#include "Hive.h"
#include <functional>
#include "Framework.h"
namespace Sapphire {
namespace Network {
//-----------------------------------------------------------------------------
Connection::Connection( HivePtr hive ) :
Connection::Connection( HivePtr hive, FrameworkPtr pFw ) :
m_hive( hive ),
m_socket( hive->GetService() ),
m_io_strand( hive->GetService() ),
m_receive_buffer_size( 32000 ),
m_error_state( 0 )
m_error_state( 0 ),
m_pFw( pFw )
{
}

View file

@ -12,6 +12,12 @@
#include "Acceptor.h"
#include <memory>
namespace Sapphire
{
class Framework;
using FrameworkPtr = std::shared_ptr< Framework >;
}
namespace Sapphire::Network
{
@ -38,9 +44,9 @@ namespace Sapphire::Network
std::list< std::vector< uint8_t > > m_pending_sends;
int32_t m_receive_buffer_size;
std::atomic< uint32_t > m_error_state;
Sapphire::FrameworkPtr m_pFw;
Connection( HivePtr hive );
Connection( HivePtr hive, FrameworkPtr pFw );
virtual ~Connection();
@ -144,13 +150,13 @@ namespace Sapphire::Network
//-----------------------------------------------------------------------------
template< class T >
std::shared_ptr< T > addServerToHive( const std::string& listenIp, uint32_t port, HivePtr pHive )
std::shared_ptr< T > addServerToHive( const std::string& listenIp, uint32_t port, HivePtr pHive, FrameworkPtr pFw )
{
try
{
AcceptorPtr acceptor( new Acceptor( pHive ) );
acceptor->Listen( listenIp, port );
std::shared_ptr< T > connection( new T( pHive, acceptor ) );
std::shared_ptr< T > connection( new T( pHive, acceptor, pFw ) );
acceptor->Accept( connection );
return connection;
}

View file

@ -16,7 +16,7 @@ namespace filesys = std::experimental::filesystem;
#include "DbManager.h"
Sapphire::Logger g_log;
using namespace Sapphire;
std::vector< std::string > getAllFilesInDir( const std::string& dirPath,
const std::vector< std::string > dirSkipList = {} )
@ -77,20 +77,20 @@ std::string delChar( std::string &str, char del )
void printUsage()
{
g_log.info( " Usage: sapphire_dbm " );
g_log.info( "\t --mode" );
g_log.info( "\t\t initialize -> Creates DB if not present and inserts default tables/data" );
g_log.info( "\t\t check -> Checks if Sapphire DB-Version matches your DB-Version" );
g_log.info( "\t\t update -> Updates your DB-Version to Sapphire DB-Version" );
g_log.info( "\t\t clearchars -> Removes all character data from DB. Accounts will stay untouched" );
g_log.info( "\t\t liquidate -> Removes all tables and deletes the DB" );
g_log.info( "\t --user <mysqlUserName>" );
g_log.info( "\t --pass <mysqlPassword> ( default empty )" );
g_log.info( "\t --host <mysqlHost> ( default 127.0.0.1 )" );
g_log.info( "\t --port <mysqlPort> ( default 3306 )" );
g_log.info( "\t --database <mysqlDatabase>" );
g_log.info( "\t --sfile <path/to/schemafile> ( default sql/schema/schema.sql )" );
g_log.info( "\t --force ( skips user input / auto Yes )" );
Logger::info( " Usage: sapphire_dbm " );
Logger::info( "\t --mode" );
Logger::info( "\t\t initialize -> Creates DB if not present and inserts default tables/data" );
Logger::info( "\t\t check -> Checks if Sapphire DB-Version matches your DB-Version" );
Logger::info( "\t\t update -> Updates your DB-Version to Sapphire DB-Version" );
Logger::info( "\t\t clearchars -> Removes all character data from DB. Accounts will stay untouched" );
Logger::info( "\t\t liquidate -> Removes all tables and deletes the DB" );
Logger::info( "\t --user <mysqlUserName>" );
Logger::info( "\t --pass <mysqlPassword> ( default empty )" );
Logger::info( "\t --host <mysqlHost> ( default 127.0.0.1 )" );
Logger::info( "\t --port <mysqlPort> ( default 3306 )" );
Logger::info( "\t --database <mysqlDatabase>" );
Logger::info( "\t --sfile <path/to/schemafile> ( default sql/schema/schema.sql )" );
Logger::info( "\t --force ( skips user input / auto Yes )" );
}
int main( int32_t argc, char* argv[] )
@ -104,8 +104,7 @@ int main( int32_t argc, char* argv[] )
std::string database;
std::string pass;
g_log.setLogPath( "log/SapphireDbm" );
g_log.init();
Logger::init( "log/SapphireDbm" );
std::string sFile;
std::string iFile;
@ -181,23 +180,23 @@ int main( int32_t argc, char* argv[] )
}
else
{
g_log.fatal( "Not a valid mode: " + mode + " !" );
Logger::fatal( "Not a valid mode: " + mode + " !" );
return 1;
}
g_log.info( "Launching in " + mode + " mode..." );
Logger::info( "Launching in " + mode + " mode..." );
if( !dbm.connect() )
{
g_log.fatal( "Could not connect to server!" );
g_log.fatal( dbm.getLastError() );
Logger::fatal( "Could not connect to server!" );
Logger::fatal( dbm.getLastError() );
return 1;
}
if( !dbm.performAction() )
{
g_log.fatal( "Could not perform action!" );
g_log.fatal( dbm.getLastError() );
Logger::fatal( "Could not perform action!" );
Logger::fatal( dbm.getLastError() );
return 1;
}

View file

@ -24,9 +24,11 @@ using namespace Sapphire::Network::Packets;
using namespace Sapphire::Network::Packets::Server;
Sapphire::Network::GameConnection::GameConnection( Sapphire::Network::HivePtr pHive,
Sapphire::Network::AcceptorPtr pAcceptor )
:
Connection( pHive ), m_pAcceptor( pAcceptor ), m_bEncryptionInitialized( false )
Sapphire::Network::AcceptorPtr pAcceptor,
FrameworkPtr pFw ) :
Connection( pHive, pFw ),
m_pAcceptor( pAcceptor ),
m_bEncryptionInitialized( false )
{
}
@ -39,7 +41,7 @@ Sapphire::Network::GameConnection::~GameConnection()
// overwrite the parents onConnect for our game socket needs
void Sapphire::Network::GameConnection::OnAccept( const std::string& host, uint16_t port )
{
auto connection = make_GameConnection( m_hive, m_pAcceptor );
auto connection = make_GameConnection( m_hive, m_pAcceptor, m_pFw );
m_pAcceptor->Accept( connection );
g_log.info( "Connect from " + m_socket.remote_endpoint().address().to_string() );
@ -473,7 +475,7 @@ void Sapphire::Network::GameConnection::generateEncryptionKey( uint32_t key, con
}
void Sapphire::Network::GameConnection::handlePackets( const Sapphire::Network::Packets::FFXIVARR_PACKET_HEADER& ipcHeader,
const std::vector< Sapphire::Network::Packets::FFXIVARR_PACKET_RAW >& packetData )
const std::vector< Sapphire::Network::Packets::FFXIVARR_PACKET_RAW >& packetData )
{
for( auto inPacket : packetData )

View file

@ -40,7 +40,7 @@ namespace Sapphire::Network
LockedQueue< Packets::GamePacketPtr > m_outQueue;
public:
GameConnection( HivePtr pHive, AcceptorPtr pAcceptor );
GameConnection( HivePtr pHive, AcceptorPtr pAcceptor, FrameworkPtr pFw );
~GameConnection();

View file

@ -10,7 +10,7 @@
#include <Logging/Logger.h>
#include <Config/ConfigMgr.h>
//#include "LobbySession.h"
#include "Framework.h"
#include "ServerLobby.h"
@ -21,124 +21,124 @@
#include <thread>
Sapphire::Logger g_log;
Sapphire::Network::RestConnector g_restConnector;
namespace Sapphire {
ServerLobby::ServerLobby( const std::string& configPath ) :
m_configPath( configPath ),
m_numConnections( 0 )
namespace Sapphire
{
m_pConfig = std::shared_ptr< ConfigMgr >( new ConfigMgr );
}
ServerLobby::~ServerLobby( void )
{
}
LobbySessionPtr ServerLobby::getSession( char* sessionId )
{
return g_restConnector.getSession( sessionId );
}
ConfigMgrPtr ServerLobby::getConfig() const
{
return m_pConfig;
}
void ServerLobby::run( int32_t argc, char* argv[] )
{
g_log.setLogPath( "log/SapphireLobby" );
g_log.init();
g_log.info( "===========================================================" );
g_log.info( "Sapphire Server Project " );
g_log.info( "Version: " + Version::VERSION );
g_log.info( "Git Hash: " + Version::GIT_HASH );
g_log.info( "Compiled: " __DATE__ " " __TIME__ );
g_log.info( "===========================================================" );
if( !loadSettings( argc, argv ) )
ServerLobby::ServerLobby( const std::string& configPath ) :
m_configPath( configPath ),
m_numConnections( 0 )
{
g_log.fatal( "Error loading settings! " );
return;
m_pConfig = std::shared_ptr< ConfigMgr >( new ConfigMgr );
}
Network::HivePtr hive( new Network::Hive() );
Network::addServerToHive< Network::GameConnection >( m_ip, m_port, hive );
g_log.info(
"Lobby server running on " + m_pConfig->getValue< std::string >( "LobbyNetwork", "ListenIp", "0.0.0.0" ) + ":" +
m_pConfig->getValue< std::string >( "LobbyNetwork", "ListenPort", "80" ) );
std::vector< std::thread > threadGroup;
threadGroup.emplace_back( std::bind( &Network::Hive::Run, hive.get() ) );
for( auto& thread : threadGroup )
if( thread.joinable() )
thread.join();
}
bool ServerLobby::loadSettings( int32_t argc, char* argv[] )
{
g_log.info( "Loading config " + m_configPath );
if( !m_pConfig->loadConfig( m_configPath ) )
ServerLobby::~ServerLobby( void )
{
g_log.fatal( "Error loading config " + m_configPath );
g_log.fatal( "If this is the first time starting the server, we've copied the default one for your editing pleasure." );
return false;
}
std::vector< std::string > args( argv + 1, argv + argc );
for( size_t i = 0; i + 1 < args.size(); i += 2 )
{
std::string arg( "" );
std::string val( "" );
try
LobbySessionPtr ServerLobby::getSession( char* sessionId )
{
return g_restConnector.getSession( sessionId );
}
ConfigMgrPtr ServerLobby::getConfig() const
{
return m_pConfig;
}
void ServerLobby::run( int32_t argc, char* argv[] )
{
Logger::init( "log/SapphireLobby" );
Logger::info( "===========================================================" );
Logger::info( "Sapphire Server Project " );
Logger::info( "Version: " + Version::VERSION );
Logger::info( "Git Hash: " + Version::GIT_HASH );
Logger::info( "Compiled: " __DATE__ " " __TIME__ );
Logger::info( "===========================================================" );
if( !loadSettings( argc, argv ) )
{
std::transform( arg.begin(), arg.end(), arg.begin(), [](unsigned char c){ return std::tolower( c ); } );
val = std::string( args[ i + 1 ] );
Logger::fatal( "Error loading settings! " );
return;
}
// trim '-' from start of arg
arg = arg.erase( 0, arg.find_first_not_of( '-' ) );
auto pFw = std::make_shared< Framework >();
Network::HivePtr hive( new Network::Hive() );
Network::addServerToHive< Network::GameConnection >( m_ip, m_port, hive, pFw );
if( arg == "ip" )
Logger::info(
"Lobby server running on " + m_pConfig->getValue< std::string >( "LobbyNetwork", "ListenIp", "0.0.0.0" ) + ":" +
m_pConfig->getValue< std::string >( "LobbyNetwork", "ListenPort", "80" ) );
std::vector< std::thread > threadGroup;
threadGroup.emplace_back( std::bind( &Network::Hive::Run, hive.get() ) );
for( auto& thread : threadGroup )
if( thread.joinable() )
thread.join();
}
bool ServerLobby::loadSettings( int32_t argc, char* argv[] )
{
Logger::info( "Loading config " + m_configPath );
if( !m_pConfig->loadConfig( m_configPath ) )
{
Logger::fatal( "Error loading config " + m_configPath );
Logger::fatal( "If this is the first time starting the server, we've copied the default one for your editing pleasure." );
return false;
}
std::vector< std::string > args( argv + 1, argv + argc );
for( size_t i = 0; i + 1 < args.size(); i += 2 )
{
std::string arg( "" );
std::string val( "" );
try
{
// todo: ip addr in config
m_pConfig->setValue< std::string >( "LobbyNetwork.ListenIp", val );
std::transform( arg.begin(), arg.end(), arg.begin(), [](unsigned char c){ return std::tolower( c ); } );
val = std::string( args[ i + 1 ] );
// trim '-' from start of arg
arg = arg.erase( 0, arg.find_first_not_of( '-' ) );
if( arg == "ip" )
{
// todo: ip addr in config
m_pConfig->setValue< std::string >( "LobbyNetwork.ListenIp", val );
}
else if( arg == "p" || arg == "port" )
{
m_pConfig->setValue< std::string >( "LobbyNetwork.LobbyPort", val );
}
else if( arg == "worldip" || arg == "worldip" )
{
m_pConfig->setValue< std::string >( "GlobalNetwork.ZoneHost", val );
}
else if( arg == "worldport" )
{
m_pConfig->setValue< std::string >( "GlobalNetwork.ZonePort", val );
}
}
else if( arg == "p" || arg == "port" )
catch( ... )
{
m_pConfig->setValue< std::string >( "LobbyNetwork.LobbyPort", val );
}
else if( arg == "worldip" || arg == "worldip" )
{
m_pConfig->setValue< std::string >( "GlobalNetwork.ZoneHost", val );
}
else if( arg == "worldport" )
{
m_pConfig->setValue< std::string >( "GlobalNetwork.ZonePort", val );
Logger::error( "Error parsing argument: " + arg + " " + "value: " + val + "\n" );
Logger::error( "Usage: <arg> <val> \n" );
}
}
catch( ... )
{
g_log.error( "Error parsing argument: " + arg + " " + "value: " + val + "\n" );
g_log.error( "Usage: <arg> <val> \n" );
}
m_port = m_pConfig->getValue< uint16_t >( "LobbyNetwork", "ListenPort", 54994 );
m_ip = m_pConfig->getValue< std::string >( "LobbyNetwork", "ListenIp", "0.0.0.0" );
g_restConnector.restHost = m_pConfig->getValue< std::string >( "GlobalNetwork", "RestHost" ) + ":" +
m_pConfig->getValue< std::string >( "GlobalNetwork", "RestPort" );
g_restConnector.serverSecret = m_pConfig->getValue< std::string >( "GlobalParameters", "ServerSecret" );
return true;
}
m_port = m_pConfig->getValue< uint16_t >( "LobbyNetwork", "ListenPort", 54994 );
m_ip = m_pConfig->getValue< std::string >( "LobbyNetwork", "ListenIp", "0.0.0.0" );
g_restConnector.restHost = m_pConfig->getValue< std::string >( "GlobalNetwork", "RestHost" ) + ":" +
m_pConfig->getValue< std::string >( "GlobalNetwork", "RestPort" );
g_restConnector.serverSecret = m_pConfig->getValue< std::string >( "GlobalParameters", "ServerSecret" );
return true;
}
}

View file

@ -1,7 +1,8 @@
#include <Actor/Player.h>
#include <ScriptObject.h>
#include "Event/EventHelper.h"
#include "Manager/EventMgr.h"
#include "Event/EventHandler.h"
#include "Framework.h"
// Quest Script: ManFst001_00039
// Quest Name: Coming to Gridania
@ -95,7 +96,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == ACTOR0 )
Scene00000( player );

View file

@ -1,7 +1,8 @@
#include <Actor/Player.h>
#include <ScriptObject.h>
#include "Event/EventHandler.h"
#include "Event/EventHelper.h"
#include "Manager/EventMgr.h"
#include "Framework.h"
// Quest Script: ManFst002_00124
// Quest Name: Close to Home
@ -192,7 +193,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == ACTOR0 )
Scene00000( player );

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include "Event/EventHelper.h"
#include "Manager/EventMgr.h"
#include <ScriptObject.h>
#include "Framework.h"
// Quest Script: ManFst003_00123
// Quest Name: Close to Home
@ -81,7 +82,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include "Event/EventHelper.h"
#include "Manager/EventMgr.h"
#include <ScriptObject.h>
#include "Framework.h"
// Quest Script: ManFst004_00124
// Quest Name: Close to Home
@ -81,7 +82,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == ManFst004::Actor0 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include "Event/EventHelper.h"
#include "Manager/EventMgr.h"
#include <ScriptObject.h>
#include "Framework.h"
// Quest Script: ManSea001_00107
// Quest Name: Coming to Limsa Lominsa
@ -141,7 +142,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == ACTOR0 )
Scene00000( player );

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include "Event/EventHelper.h"
#include "Manager/EventMgr.h"
#include <ScriptObject.h>
#include "Framework.h"
// Quest Script: ManSea002_00108
// Quest Name: Close to Home
@ -47,7 +48,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == ACTOR0 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include "Event/EventHelper.h"
#include "Manager/EventMgr.h"
#include <ScriptObject.h>
#include "Framework.h"
// Quest Script: ManSea003_00109
// Quest Name: Close to Home
@ -63,7 +64,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include "Event/EventHelper.h"
#include "Manager/EventMgr.h"
#include <ScriptObject.h>
#include "Framework.h"
// Quest Script: ManWil001_00594
// Quest Name: Coming to Ul'dah
@ -173,7 +174,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == ACTOR0 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
// Quest Script: ManWil002_00568
// Quest Name: Close to Home
@ -69,7 +70,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include "Event/EventHelper.h"
#include "Manager/EventMgr.h"
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -72,7 +73,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == ACTOR0 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include "Event/EventHelper.h"
#include "Manager/EventMgr.h"
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -58,7 +59,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == ACTOR0 && !player.hasQuest( getId() ) )
Scene00000( player );

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -51,7 +52,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -55,7 +56,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -55,7 +56,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -51,7 +52,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include "Event/EventHelper.h"
#include "Manager/EventMgr.h"
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -54,7 +55,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == ACTOR0 )
Scene00000( player );

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -48,7 +49,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 && !player.hasQuest( getId() ) )
{

View file

@ -1,6 +1,7 @@
#include <ScriptObject.h>
#include <Actor/Player.h>
#include "Event/EventHelper.h"
#include "Manager/EventMgr.h"
#include "Framework.h"
using namespace Sapphire;
@ -160,7 +161,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( !player.hasQuest( getId() ) )
{
@ -180,7 +182,8 @@ public:
void onEmote( uint64_t actorId, uint32_t eventId, uint32_t emoteId, Entity::Player& player ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == ACTOR1 && emoteId == 5 && player.getQuestSeq( getId() ) == SEQ_1 )
Scene00100( player );

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -55,7 +56,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 && !player.hasQuest( getId() ) )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -53,7 +54,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 && !player.hasQuest( getId() ) )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -48,7 +49,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -50,7 +51,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 && !player.hasQuest( getId() ) )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -46,7 +47,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == SubFst029::Actor0 && !player.hasQuest( getId() ) )
{

View file

@ -1,7 +1,8 @@
#include <Script/NativeScriptApi.h>
#include <Actor/Player.h>
#include "Event/EventHelper.h"
#include "Manager/EventMgr.h"
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -64,7 +65,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 && !player.hasQuest( getId() ) )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -56,7 +57,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 )
{

View file

@ -1,7 +1,8 @@
#include <Script/NativeScriptApi.h>
#include <Actor/Player.h>
#include "Event/EventHelper.h"
#include "Manager/EventMgr.h"
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -64,7 +65,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -47,7 +48,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -48,7 +49,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -52,7 +53,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -57,7 +58,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -50,7 +51,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 )
{

View file

@ -1,7 +1,8 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include <ctime>
#include "Framework.h"
using namespace Sapphire;
@ -54,7 +55,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 && !player.hasQuest( getId() ) )
{
@ -88,7 +90,8 @@ public:
void onEmote( uint64_t actorId, uint32_t eventId, uint32_t emoteId, Entity::Player& player ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 && emoteId == 41 && player.getQuestSeq( getId() ) == Seq1 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -54,7 +55,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 && !player.hasQuest( getId() ) )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -47,7 +48,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -51,7 +52,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -51,7 +52,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -45,7 +46,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -47,7 +48,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 )
{

View file

@ -1,6 +1,7 @@
#include <Actor/Player.h>
#include <Event/EventHelper.h>
#include <Manager/EventMgr.h>
#include <ScriptObject.h>
#include "Framework.h"
using namespace Sapphire;
@ -50,7 +51,8 @@ public:
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
auto pEventMgr = m_framework->get< World::Manager::EventMgr >();
auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
if( actor == Actor0 )
{

View file

@ -16,10 +16,9 @@
#include <fstream>
Sapphire::Logger g_log;
Sapphire::Data::ExdDataGenerated g_exdData;
using namespace Sapphire;
//const std::string datLocation( "/opt/sapphire_3_15_0/bin/sqpack" );
const std::string datLocation(
@ -91,13 +90,13 @@ std::string generateEnum( const std::string& exd, int8_t nameIndex, const std::s
int main()
{
g_log.init();
Logger::init( "commongen" );
g_log.info( "Setting up EXD data" );
Logger::info( "Setting up EXD data" );
if( !g_exdData.init( datLocation ) )
{
g_log.fatal( "Error setting up EXD data " );
Logger::fatal( "Error setting up EXD data " );
return 1;
}
@ -130,6 +129,6 @@ int main()
result += generateEnum( "HousingAppeal", 0, "uint8_t" );
result += "}\n";
result += "}\n#endif\n";
g_log.info( result );
Logger::info( result );
return 0;
}

View file

@ -19,9 +19,8 @@
#include <regex>
#include <algorithm>
using namespace Sapphire;
Sapphire::Logger g_log;
Sapphire::Data::ExdDataGenerated g_exdData;
bool skipUnmapped = true;
@ -324,10 +323,10 @@ std::string generateConstructorsDecl( const std::string& exd )
int main( int argc, char** argv )
{
g_log.init();
Logger::init( "struct_gen" );
if( argc > 1 )
{
g_log.info( "using dat path: " + std::string( argv[ 1 ] ) );
Logger::info( "using dat path: " + std::string( argv[ 1 ] ) );
datLocation = std::string( argv[ 1 ] );
}
@ -357,14 +356,14 @@ int main( int argc, char** argv )
auto json = nlohmann::json();
exJson >> json;
g_log.info( "Setting up EXD data" );
Logger::info( "Setting up EXD data" );
if( !g_exdData.init( datLocation ) )
{
g_log.fatal( "Error setting up EXD data " );
Logger::fatal( "Error setting up EXD data " );
return 0;
}
g_log.info( "Generating structs, this may take several minutes..." );
g_log.info( "Go grab a coffee..." );
Logger::info( "Generating structs, this may take several minutes..." );
Logger::info( "Go grab a coffee..." );
std::string structDefs;
std::string idListsDecl;

View file

@ -16,10 +16,9 @@
#include <streambuf>
#include <regex>
Sapphire::Logger g_log;
Sapphire::Data::ExdDataGenerated g_exdData;
using namespace Sapphire;
//const std::string datLocation( "/opt/sapphire_3_15_0/bin/sqpack" );
const std::string datLocation( "C:\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack" );
@ -28,30 +27,30 @@ const std::string datLocation( "C:\\SquareEnix\\FINAL FANTASY XIV - A Realm Rebo
int main()
{
g_log.init();
Logger::init( "struct_test" );
g_log.info( "Setting up EXD data" );
Logger::info( "Setting up EXD data" );
if( !g_exdData.init( datLocation ) )
{
g_log.fatal( "Error setting up EXD data " );
Logger::fatal( "Error setting up EXD data " );
return 0;
}
//g_log.info( "getting id list " );
//Logger::info( "getting id list " );
//auto idList = g_exdData.getGilShopIdList();
//g_log.info( "getting id list done" );
//Logger::info( "getting id list done" );
//for( auto id : idList )
{
auto teri1 = g_exdData.get< Sapphire::Data::GilShopItem >( 262440, 0 );
g_log.info( "0 -> " + std::to_string( teri1->item ) );
Logger::info( "0 -> " + std::to_string( teri1->item ) );
auto teri2 = g_exdData.get< Sapphire::Data::GilShopItem >( 262440, 1 );
g_log.info( "1 -> " + std::to_string( teri2->item ) );
Logger::info( "1 -> " + std::to_string( teri2->item ) );
auto teri3 = g_exdData.get< Sapphire::Data::GilShopItem >( 262440, 2 );
g_log.info( "2 -> " + std::to_string( teri3->item ) );
Logger::info( "2 -> " + std::to_string( teri3->item ) );
}
return 0;

View file

@ -22,9 +22,10 @@ namespace filesys = std::experimental::filesystem;
#include <regex>
#include <map>
Sapphire::Logger g_log;
Sapphire::Data::ExdDataGenerated g_exdData;
using namespace Sapphire;
//const std::string datLocation( "/opt/sapphire_3_15_0/bin/sqpack" );
const std::string datLocation( "C:\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack" );
@ -194,12 +195,12 @@ std::string delChar( std::string &str, char del )
int dumpSpawns()
{
g_log.init();
Logger::init( "mob_parse" );
g_log.info( "Setting up EXD data" );
Logger::info( "Setting up EXD data" );
if( !g_exdData.init( datLocation ) )
{
g_log.fatal( "Error setting up EXD data " );
Logger::fatal( "Error setting up EXD data " );
return 0;
}
@ -223,7 +224,7 @@ int dumpSpawns()
auto str = file.substr( 0, pos );
pos = str.find_last_of( filesys::path::preferred_separator );
auto zone = str.substr( pos + 1 );
//g_log.info( zone );
//Logger::info( zone );
FFXIVIpcNpcSpawn packet;
std::ifstream is;
@ -258,15 +259,15 @@ int dumpSpawns()
//auto nameStruct = g_exdData.get< Sapphire::Data::BNpcName >( entry.first );
auto teri1 = g_exdData.get< Sapphire::Data::TerritoryType >( entry.first );
auto teriPlaceName = g_exdData.get< Sapphire::Data::PlaceName >( teri1->placeName );
g_log.info( std::to_string( entry.first ) + " - " + teri1->name + " - " + teriPlaceName->name );
g_log.info( "Mob Count: " + std::to_string( entry.second.size() ) );
Logger::info( std::to_string( entry.first ) + " - " + teri1->name + " - " + teriPlaceName->name );
Logger::info( "Mob Count: " + std::to_string( entry.second.size() ) );
for( auto mob : entry.second )
{
nameToPacketList[ mob.bNPCBase ].push_back( mob );
auto nameStruct = g_exdData.get< Sapphire::Data::BNpcName >( mob.bNPCName );
//g_log.info( nameStruct->singular + " " + std::to_string( packet.bNPCBase ) );
//Logger::info( nameStruct->singular + " " + std::to_string( packet.bNPCBase ) );
}
std::map< std::string, std::vector< FFXIVIpcNpcSpawn > > lvlToPacket;
@ -282,7 +283,7 @@ int dumpSpawns()
for( auto mobName : lvlToPacket )
{
auto nameStruct = g_exdData.get< Sapphire::Data::BNpcName >( mobName.second.at(0).bNPCName );
g_log.info( "|--> " + nameStruct->singular + "(" + std::to_string( mobName.second.size() ) + ")" );
Logger::info( "|--> " + nameStruct->singular + "(" + std::to_string( mobName.second.size() ) + ")" );
spawngroups++;
for( FFXIVIpcNpcSpawn instance : mobName.second )
@ -314,15 +315,15 @@ int dumpSpawns()
std::string name = delChar( nameStruct->singular, ' ' );
name = delChar( name, '\'' );
g_log.info( "|----> " + name + "_" + std::to_string( instance.bNPCBase ) + " " +
std::to_string( instance.posX ) + ", " +
std::to_string( instance.posY ) + ", " +
std::to_string( instance.posZ ) + ", " +
std::to_string( instance.modelChara ) + ", " +
std::to_string( instance.gimmickId ) + ", " +
std::to_string( instance.level ) + ", " +
std::to_string( instance.hPMax ) );
//g_log.info( "|----> " + name + " - " + std::to_string( instance.bNPCBase ) + ", " + std::to_string( instance.gimmickId ) );
Logger::info( "|----> " + name + "_" + std::to_string( instance.bNPCBase ) + " " +
std::to_string( instance.posX ) + ", " +
std::to_string( instance.posY ) + ", " +
std::to_string( instance.posZ ) + ", " +
std::to_string( instance.modelChara ) + ", " +
std::to_string( instance.gimmickId ) + ", " +
std::to_string( instance.level ) + ", " +
std::to_string( instance.hPMax ) );
//Logger::info( "|----> " + name + " - " + std::to_string( instance.bNPCBase ) + ", " + std::to_string( instance.gimmickId ) );
@ -340,7 +341,7 @@ int dumpSpawns()
+ "UNHEX( '" + cusStr + "'), "
+ "UNHEX( '" + modelStr + "') );\n";*/
//g_log.info( output );
//Logger::info( output );
//out << output;
@ -351,7 +352,7 @@ int dumpSpawns()
}
g_log.info( "|--> Total SpawnGroups: " + std::to_string( spawngroups ) );
Logger::info( "|--> Total SpawnGroups: " + std::to_string( spawngroups ) );
return 0;
}
@ -360,12 +361,12 @@ int dumpSpawns()
int dumpTemplates()
{
g_log.init();
Logger::init( "mob_parse" );
g_log.info( "Setting up EXD data" );
Logger::info( "Setting up EXD data" );
if( !g_exdData.init( datLocation ) )
{
g_log.fatal( "Error setting up EXD data " );
Logger::fatal( "Error setting up EXD data " );
return 0;
}
@ -389,7 +390,7 @@ int dumpTemplates()
auto str = file.substr( 0, pos );
pos = str.find_last_of( filesys::path::preferred_separator );
auto zone = str.substr( pos + 1 );
//g_log.info( zone );
//Logger::info( zone );
FFXIVIpcNpcSpawn packet;
std::ifstream is;
@ -419,7 +420,7 @@ int dumpTemplates()
{
auto zoneIdStr = file.substr( pos + 1 );
auto teri1 = g_exdData.get< Sapphire::Data::TerritoryType >( std::stoi( zoneIdStr ) );
g_log.info( zoneIdStr + " - " + teri1->name );
Logger::info( zoneIdStr + " - " + teri1->name );
}
}
else
@ -434,7 +435,7 @@ int dumpTemplates()
nameToPacketList[ packet.bNPCName ].push_back( packet );
auto nameStruct = g_exdData.get< Sapphire::Data::BNpcName >( packet.bNPCName );
//g_log.info( nameStruct->singular + " " + std::to_string( packet.bNPCBase ) );
//Logger::info( nameStruct->singular + " " + std::to_string( packet.bNPCBase ) );
}
*/
@ -448,23 +449,23 @@ int dumpTemplates()
//auto nameStruct = g_exdData.get< Sapphire::Data::BNpcName >( entry.first );
auto teri1 = g_exdData.get< Sapphire::Data::TerritoryType >( entry.first );
auto teriPlaceName = g_exdData.get< Sapphire::Data::PlaceName >( teri1->placeName );
g_log.info( std::to_string( entry.first ) + " - " + teri1->name + " - " + teriPlaceName->name );
g_log.info( "Mob Count: " + std::to_string( entry.second.size() ) );
Logger::info( std::to_string( entry.first ) + " - " + teri1->name + " - " + teriPlaceName->name );
Logger::info( "Mob Count: " + std::to_string( entry.second.size() ) );
for( auto mob : entry.second )
{
nameToPacketList[ mob.bNPCBase ].push_back( mob );
auto nameStruct = g_exdData.get< Sapphire::Data::BNpcName >( mob.bNPCName );
//g_log.info( nameStruct->singular + " " + std::to_string( packet.bNPCBase ) );
//Logger::info( nameStruct->singular + " " + std::to_string( packet.bNPCBase ) );
}
g_log.info( "Unique Mobs: " + std::to_string( nameToPacketList.size() ) );
Logger::info( "Unique Mobs: " + std::to_string( nameToPacketList.size() ) );
for( auto mobName : nameToPacketList )
{
auto nameStruct = g_exdData.get< Sapphire::Data::BNpcName >( mobName.second.at(0).bNPCName );
g_log.info( "|--> " + nameStruct->singular + "(" + std::to_string( mobName.second.size() ) + ")" );
Logger::info( "|--> " + nameStruct->singular + "(" + std::to_string( mobName.second.size() ) + ")" );
auto instance = mobName.second.at(0);
//for( FFXIVIpcNpcSpawn instance : mobName.second )
@ -494,8 +495,8 @@ int dumpTemplates()
cusStr = binaryToHexString( (uint8_t*)instance.look, 26 );
//g_log.info( "|----> " + std::to_string( instance.bNPCBase ) + " " + std::to_string( instance.posX ) + ", " + std::to_string( instance.posY ) + ", " + std::to_string( instance.posZ ) );
// g_log.info( "|----> " + std::to_string( instance.bNPCBase ) +
//Logger::info( "|----> " + std::to_string( instance.bNPCBase ) + " " + std::to_string( instance.posX ) + ", " + std::to_string( instance.posY ) + ", " + std::to_string( instance.posZ ) );
// Logger::info( "|----> " + std::to_string( instance.bNPCBase ) +
// " " + std::to_string( instance.mainWeaponModel ) +
// ", " + std::to_string( instance.secWeaponModel ) +
// ", " + std::to_string( instance.aggressionMode ) +
@ -522,11 +523,11 @@ int dumpTemplates()
+ "UNHEX( '" + cusStr + "'), "
+ "UNHEX( '" + modelStr + "') );\n";
g_log.info( output );
Logger::info( output );
out << output;
/* g_log.info( "|----> " + std::to_string( instance.bNPCBase ) +
/* Logger::info( "|----> " + std::to_string( instance.bNPCBase ) +
" " + std::to_string( instance.u2ab ) +
", " + std::to_string( instance.u2b ) +
", " + std::to_string( instance.u3b ) +
@ -554,15 +555,15 @@ int dumpTemplates()
}
out.close();
/*g_log.info( "getting id list " );
/*Logger::info( "getting id list " );
auto idList = g_exdData.getTerritoryTypeIdList();
g_log.info( "getting id list done" );
Logger::info( "getting id list done" );
for( auto id : idList )
{
auto teri1 = g_exdData.get<Sapphire::Data::TerritoryType>( id );
g_log.info( teri1->name );
Logger::info( teri1->name );
}*/
return 0;

View file

@ -20,10 +20,9 @@
#include <algorithm>
Sapphire::Logger g_log;
Sapphire::Data::ExdDataGenerated g_exdDataGen;
namespace fs = std::experimental::filesystem;
using namespace Sapphire;
const std::string onTalkStr(
" void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override\n"
@ -328,7 +327,7 @@ createScript( std::shared_ptr< Sapphire::Data::Quest >& pQuestData, std::set< st
int main( int argc, char** argv )
{
g_log.init();
Logger::init( "quest_parser" );
bool unluac = false;
// std::string datLocation( "/opt/sapphire_3_15_0/bin/sqpack" );
@ -341,11 +340,11 @@ int main( int argc, char** argv )
unluac = true;
g_log.info( "Setting up generated EXD data" );
Logger::info( "Setting up generated EXD data" );
if( !g_exdDataGen.init( datLocation ) )
{
std::cout << datLocation << "\n";
g_log.fatal( "Error setting up EXD data " );
Logger::fatal( "Error setting up EXD data " );
std::cout << "Usage: quest_parser \"path/to/ffxiv/game/sqpack\" <1/0 unluac export toggle>\n";
return 0;
}
@ -357,13 +356,13 @@ int main( int argc, char** argv )
if( !fs::exists( "./generated" ) )
fs::create_directory( "./generated" );
g_log.info( "Export in progress" );
Logger::info( "Export in progress" );
uint32_t updateInterval = rows.size() / 20;
uint32_t i = 0;
for( const auto& row : rows )
{
g_log.info( "Generating " + std::to_string( row ) );
Logger::info( "Generating " + std::to_string( row ) );
auto questInfo = g_exdDataGen.get< Sapphire::Data::Quest >( row );
if( questInfo->name.empty() || questInfo->id.empty() )
@ -408,7 +407,7 @@ int main( int argc, char** argv )
"generated/" + questInfo->id + ".lua";
if( system( command.c_str() ) == -1 )
{
g_log.error( "Error executing java command:\n" + command + "\nerrno: " + std::strerror( errno ) );
Logger::error( "Error executing java command:\n" + command + "\nerrno: " + std::strerror( errno ) );
return errno;
}
}

View file

@ -95,8 +95,7 @@ void Sapphire::Action::EventAction::onFinish()
}
catch( std::exception& e )
{
auto pLog = g_fw.get< Logger >();
pLog->error( e.what() );
Logger::error( e.what() );
}
}
@ -134,8 +133,7 @@ void Sapphire::Action::EventAction::onInterrupt()
}
catch( std::exception& e )
{
auto pLog = g_fw.get< Logger >();
pLog->error( e.what() );
Logger::error( e.what() );
}
}

View file

@ -14,8 +14,6 @@
#include "EventItemAction.h"
#include "Framework.h"
extern Sapphire::Framework g_fw;
using namespace Sapphire::Common;
using namespace Sapphire::Network;
using namespace Sapphire::Network::Packets;
@ -83,8 +81,7 @@ void Sapphire::Action::EventItemAction::onFinish()
}
catch( std::exception& e )
{
auto pLog = g_fw.get< Logger >();
pLog->error( e.what() );
Logger::error( e.what() );
}
}
@ -112,8 +109,7 @@ void Sapphire::Action::EventItemAction::onInterrupt()
}
catch( std::exception& e )
{
auto pLog = g_fw.get< Logger >();
pLog->error( e.what() );
Logger::error( e.what() );
}
}

View file

@ -123,9 +123,7 @@ void Sapphire::Entity::EventObject::spawn( Sapphire::Entity::PlayerPtr pTarget )
if( !pTarget->isObjSpawnIndexValid( spawnIndex ) )
return;
auto pLog = g_fw.get< Logger >();
pLog->debug( "Spawning EObj: id:" + std::to_string( getId() ) + " name:" + getName() );
Logger::debug( "Spawning EObj: id:" + std::to_string( getId() ) + " name:" + getName() );
auto eobjStatePacket = makeZonePacket< FFXIVIpcObjectSpawn >( getId(), pTarget->getId() );
eobjStatePacket->data().spawnIndex = spawnIndex;
@ -144,8 +142,7 @@ void Sapphire::Entity::EventObject::spawn( Sapphire::Entity::PlayerPtr pTarget )
void Sapphire::Entity::EventObject::despawn( Sapphire::Entity::PlayerPtr pTarget )
{
auto pLog = g_fw.get< Logger >();
pLog->debug( "despawn eobj: " + std::to_string( getId() ) );
Logger::debug( "despawn eobj: " + std::to_string( getId() ) );
pTarget->freeObjSpawnIndexForActorId( getId() );
}

View file

@ -866,10 +866,9 @@ void Sapphire::Entity::Player::setLookAt( uint8_t index, uint8_t value )
// spawn this player for pTarget
void Sapphire::Entity::Player::spawn( Entity::PlayerPtr pTarget )
{
auto pLog = g_fw.get< Logger >();
pLog->debug( "[" + std::to_string( pTarget->getId() ) + "] Spawning " +
getName() + " for " +
pTarget->getName() );
Logger::debug( "[" + std::to_string( pTarget->getId() ) + "] Spawning " +
getName() + " for " +
pTarget->getName() );
pTarget->queuePacket( std::make_shared< PlayerSpawnPacket >( *getAsPlayer(), *pTarget ) );
}
@ -878,8 +877,7 @@ void Sapphire::Entity::Player::spawn( Entity::PlayerPtr pTarget )
void Sapphire::Entity::Player::despawn( Entity::PlayerPtr pTarget )
{
auto pPlayer = pTarget;
auto pLog = g_fw.get< Logger >();
pLog->debug( "despawning " + getName() + " for " + pTarget->getName() );
Logger::debug( "despawning " + getName() + " for " + pTarget->getName() );
pPlayer->freePlayerSpawnId( getId() );

View file

@ -77,8 +77,7 @@ void Sapphire::Entity::Player::directorPlayScene( uint32_t eventId, uint32_t sce
auto pEvent = getEvent( eventId );
if( !pEvent )
{
auto pLog = g_fw.get< Logger >();
pLog->error( "Could not find event " + std::to_string( eventId ) + ", event has not been started!" );
Logger::error( "Could not find event " + std::to_string( eventId ) + ", event has not been started!" );
return;
}
@ -162,8 +161,7 @@ Sapphire::Event::EventHandlerPtr Sapphire::Entity::Player::bootstrapSceneEvent(
auto pEvent = getEvent( eventId );
if( !pEvent )
{
auto pLog = g_fw.get< Logger >();
pLog->error( "Could not find event " + std::to_string( eventId ) + ", event has not been started!" );
Logger::error( "Could not find event " + std::to_string( eventId ) + ", event has not been started!" );
return nullptr;
}
@ -227,8 +225,7 @@ void Sapphire::Entity::Player::eventFinish( uint32_t eventId, uint32_t freePlaye
if( !pEvent )
{
auto pLog = g_fw.get< Logger >();
pLog->error( "Could not find event " + std::to_string( eventId ) + ", event has not been started!" );
Logger::error( "Could not find event " + std::to_string( eventId ) + ", event has not been started!" );
return;
}
@ -303,8 +300,7 @@ void Sapphire::Entity::Player::eventActionStart( uint32_t eventId,
}
else if( !pEvent )
{
auto pLog = g_fw.get< Logger >();
pLog->error( "Could not find event " + std::to_string( eventId ) + ", event has not been started!" );
Logger::error( "Could not find event " + std::to_string( eventId ) + ", event has not been started!" );
return;
}

View file

@ -425,7 +425,6 @@ uint32_t Sapphire::Entity::Player::getCrystal( CrystalType type )
void Sapphire::Entity::Player::writeInventory( InventoryType type )
{
auto pLog = g_fw.get< Logger >();
auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >();
auto storage = m_storageMap[ type ];
@ -450,7 +449,6 @@ void Sapphire::Entity::Player::writeInventory( InventoryType type )
if( storage->isMultiStorage() )
query += " AND storageId = " + std::to_string( static_cast< uint16_t >( type ) );
pLog->debug( query );
pDb->execute( query );
}

View file

@ -33,7 +33,6 @@ bool Sapphire::Entity::Player::load( uint32_t charId, World::SessionPtr pSession
{
auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >();
auto pTeriMgr = g_fw.get< TerritoryMgr >();
auto pLog = g_fw.get< Logger >();
const std::string char_id_str = std::to_string( charId );
@ -99,8 +98,8 @@ bool Sapphire::Entity::Player::load( uint32_t charId, World::SessionPtr pSession
// see if a valid zone could be found for the character
if( !pCurrZone )
{
pLog->error( "[" + char_id_str + "] Zone " + std::to_string( zoneId ) + " not found!" );
pLog->error( "[" + char_id_str + "] Setting default zone instead" );
Logger::error( "[" + char_id_str + "] Zone " + std::to_string( zoneId ) + " not found!" );
Logger::error( "[" + char_id_str + "] Setting default zone instead" );
// default to new gridania
// TODO: should probably just abort and mark character as corrupt
@ -198,7 +197,7 @@ bool Sapphire::Entity::Player::load( uint32_t charId, World::SessionPtr pSession
m_pCell = nullptr;
if( !loadActiveQuests() || !loadClassData() || !loadSearchInfo() )
pLog->error( "Player id " + char_id_str + " data corrupt!" );
Logger::error( "Player id " + char_id_str + " data corrupt!" );
m_maxHp = getMaxHp();
m_maxMp = getMaxMp();

View file

@ -1,15 +0,0 @@
#ifndef _EVENTHELPER_H
#define _EVENTHELPER_H
#include <cstdint>
#include <string>
namespace Sapphire::Event
{
std::string getEventName( uint32_t eventId );
uint32_t mapEventActorToRealActor( uint32_t eventActorId );
}
#endif

View file

@ -39,7 +39,6 @@ uint16_t Sapphire::ItemContainer::getEntryCount() const
void Sapphire::ItemContainer::removeItem( uint16_t slotId )
{
auto pLog = g_fw.get< Logger >();
auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >();
ItemMap::iterator it = m_itemMap.find( slotId );
@ -50,11 +49,11 @@ void Sapphire::ItemContainer::removeItem( uint16_t slotId )
m_itemMap.erase( it );
pLog->debug( "Dropped item from slot " + std::to_string( slotId ) );
Logger::debug( "Dropped item from slot " + std::to_string( slotId ) );
}
else
{
pLog->debug( "Item could not be dropped from slot " + std::to_string( slotId ) );
Logger::debug( "Item could not be dropped from slot " + std::to_string( slotId ) );
}
}
@ -85,8 +84,7 @@ Sapphire::ItemPtr Sapphire::ItemContainer::getItem( uint16_t slotId )
if( ( slotId > m_size ) )
{
auto pLog = g_fw.get< Logger >();
pLog->error( "Slot out of range " + std::to_string( slotId ) );
Logger::error( "Slot out of range " + std::to_string( slotId ) );
return nullptr;
}

View file

@ -139,7 +139,6 @@ void Sapphire::World::Manager::DebugCommandMgr::help( char* data, Entity::Player
void Sapphire::World::Manager::DebugCommandMgr::set( char* data, Entity::Player& player,
std::shared_ptr< DebugCommand > command )
{
auto pLog = framework()->get< Logger >();
auto pTerriMgr = framework()->get< TerritoryMgr >();
auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >();
std::string subCommand = "";
@ -160,7 +159,7 @@ void Sapphire::World::Manager::DebugCommandMgr::set( char* data, Entity::Player&
if( command->getName().length() + 1 + pos + 1 < strlen( data ) )
params = std::string( data + command->getName().length() + 1 + pos + 1 );
pLog->debug( "[" + std::to_string( player.getId() ) + "] " +
Logger::debug( "[" + std::to_string( player.getId() ) + "] " +
"subCommand " + subCommand + " params: " + params );
if( ( ( subCommand == "pos" ) || ( subCommand == "posr" ) ) && ( params != "" ) )
@ -379,7 +378,6 @@ void Sapphire::World::Manager::DebugCommandMgr::set( char* data, Entity::Player&
void Sapphire::World::Manager::DebugCommandMgr::add( char* data, Entity::Player& player,
std::shared_ptr< DebugCommand > command )
{
auto pLog = framework()->get< Logger >();
std::string subCommand;
std::string params = "";
@ -398,8 +396,8 @@ void Sapphire::World::Manager::DebugCommandMgr::add( char* data, Entity::Player&
if( command->getName().length() + 1 + pos + 1 < strlen( data ) )
params = std::string( data + command->getName().length() + 1 + pos + 1 );
pLog->debug( "[" + std::to_string( player.getId() ) + "] " +
"subCommand " + subCommand + " params: " + params );
Logger::debug( "[" + std::to_string( player.getId() ) + "] " +
"subCommand " + subCommand + " params: " + params );
if( subCommand == "status" )
@ -514,7 +512,6 @@ void Sapphire::World::Manager::DebugCommandMgr::add( char* data, Entity::Player&
void Sapphire::World::Manager::DebugCommandMgr::get( char* data, Entity::Player& player,
std::shared_ptr< DebugCommand > command )
{
auto pLog = framework()->get< Logger >();
auto pExdData = framework()->get< Data::ExdDataGenerated >();
std::string subCommand;
std::string params = "";
@ -534,8 +531,8 @@ void Sapphire::World::Manager::DebugCommandMgr::get( char* data, Entity::Player&
if( command->getName().length() + 1 + pos + 1 < strlen( data ) )
params = std::string( data + command->getName().length() + 1 + pos + 1 );
pLog->debug( "[" + std::to_string( player.getId() ) + "] " +
"subCommand " + subCommand + " params: " + params );
Logger::debug( "[" + std::to_string( player.getId() ) + "] " +
"subCommand " + subCommand + " params: " + params );
if( ( subCommand == "pos" ) )
@ -580,7 +577,6 @@ void Sapphire::World::Manager::DebugCommandMgr::injectChatPacket( char* data, En
void Sapphire::World::Manager::DebugCommandMgr::replay( char* data, Entity::Player& player,
std::shared_ptr< DebugCommand > command )
{
auto pLog = framework()->get< Logger >();
auto pServerZone = framework()->get< World::ServerMgr >();
std::string subCommand;
std::string params = "";
@ -600,8 +596,8 @@ void Sapphire::World::Manager::DebugCommandMgr::replay( char* data, Entity::Play
if( command->getName().length() + 1 + pos + 1 < strlen( data ) )
params = std::string( data + command->getName().length() + 1 + pos + 1 );
pLog->debug( "[" + std::to_string( player.getId() ) + "] " +
"subCommand " + subCommand + " params: " + params );
Logger::debug( "[" + std::to_string( player.getId() ) + "] " +
"subCommand " + subCommand + " params: " + params );
if( subCommand == "start" )
@ -690,7 +686,6 @@ Sapphire::World::Manager::DebugCommandMgr::serverInfo( char* data, Entity::Playe
void Sapphire::World::Manager::DebugCommandMgr::script( char* data, Entity::Player& player,
std::shared_ptr< DebugCommand > command )
{
auto pLog = framework()->get< Logger >();
auto pScriptMgr = framework()->get< Scripting::ScriptMgr >();
std::string subCommand;
std::string params = "";
@ -711,8 +706,8 @@ void Sapphire::World::Manager::DebugCommandMgr::script( char* data, Entity::Play
if( command->getName().length() + 1 + pos + 1 < strlen( data ) )
params = std::string( data + command->getName().length() + 1 + pos + 1 );
pLog->debug( "[" + std::to_string( player.getId() ) + "] " +
"subCommand " + subCommand + " params: " + params );
Logger::debug( "[" + std::to_string( player.getId() ) + "] " +
"subCommand " + subCommand + " params: " + params );
if( subCommand == "unload" )
{

View file

@ -3,18 +3,20 @@
#include <Util/Util.h>
#include "Framework.h"
#include "EventHelper.h"
#include "EventHandler.h"
extern Sapphire::Framework g_fw;
#include "EventMgr.h"
#include "Event/EventHandler.h"
using namespace Sapphire::Common;
std::string Sapphire::Event::getEventName( uint32_t eventId )
Sapphire::World::Manager::EventMgr::EventMgr( Sapphire::FrameworkPtr pFw ) :
BaseManager( pFw )
{
auto pExdData = g_fw.get< Data::ExdDataGenerated >();
}
std::string Sapphire::World::Manager::EventMgr::getEventName( uint32_t eventId )
{
auto pExdData = framework()->get< Data::ExdDataGenerated >();
uint16_t eventType = eventId >> 16;
auto unknown = std::string{ "unknown" };
@ -95,9 +97,9 @@ std::string Sapphire::Event::getEventName( uint32_t eventId )
}
}
uint32_t Sapphire::Event::mapEventActorToRealActor( uint32_t eventActorId )
uint32_t Sapphire::World::Manager::EventMgr::mapEventActorToRealActor( uint32_t eventActorId )
{
auto pExdData = g_fw.get< Data::ExdDataGenerated >();
auto pExdData = framework()->get< Data::ExdDataGenerated >();
auto levelInfo = pExdData->get< Sapphire::Data::Level >( eventActorId );
if( levelInfo )
return levelInfo->object;

View file

@ -0,0 +1,23 @@
#ifndef _EVENTHELPER_H
#define _EVENTHELPER_H
#include <cstdint>
#include <string>
#include "Manager/BaseManager.h"
namespace Sapphire::World::Manager
{
class EventMgr : public BaseManager
{
public:
EventMgr( FrameworkPtr pFw );
std::string getEventName( uint32_t eventId );
uint32_t mapEventActorToRealActor( uint32_t eventActorId );
};
}
#endif

View file

@ -137,7 +137,6 @@ bool Sapphire::World::Manager::TerritoryMgr::isHousingTerritory( uint32_t territ
bool Sapphire::World::Manager::TerritoryMgr::createDefaultTerritories()
{
auto pExdData = framework()->get< Data::ExdDataGenerated >();
auto pLog = framework()->get< Logger >();
// for each entry in territoryTypeExd, check if it is a normal and if so, add the zone object
for( const auto& territory : m_territoryTypeDetailCacheMap )
{
@ -154,12 +153,12 @@ bool Sapphire::World::Manager::TerritoryMgr::createDefaultTerritories()
continue;
uint32_t guid = getNextInstanceId();
pLog->info( std::to_string( territoryTypeId ) +
"\t" + std::to_string( guid ) +
"\t" + std::to_string( territoryInfo->territoryIntendedUse ) +
"\t" + ( territoryInfo->name.length() <= 4 ? territoryInfo->name + "\t" : territoryInfo->name ) +
"\t" + ( isPrivateTerritory( territoryTypeId ) ? "PRIVATE" : "PUBLIC" ) +
"\t" + pPlaceName->name );
Logger::info( std::to_string( territoryTypeId ) +
"\t" + std::to_string( guid ) +
"\t" + std::to_string( territoryInfo->territoryIntendedUse ) +
"\t" + ( territoryInfo->name.length() <= 4 ? territoryInfo->name + "\t" : territoryInfo->name ) +
"\t" + ( isPrivateTerritory( territoryTypeId ) ? "PRIVATE" : "PUBLIC" ) +
"\t" + pPlaceName->name );
auto pZone = make_Zone( territoryTypeId, guid, territoryInfo->name, pPlaceName->name );
pZone->init();
@ -179,7 +178,6 @@ bool Sapphire::World::Manager::TerritoryMgr::createHousingTerritories()
{
//separate housing zones from default
auto pExdData = framework()->get< Data::ExdDataGenerated >();
auto pLog = framework()->get< Logger >();
for( const auto& territory : m_territoryTypeDetailCacheMap )
{
auto territoryTypeId = territory.first;
@ -198,13 +196,13 @@ bool Sapphire::World::Manager::TerritoryMgr::createHousingTerritories()
for( wardNum = 0; wardNum < wardMaxNum; wardNum++ )
{
uint32_t guid = getNextInstanceId();
pLog->info( std::to_string( territoryTypeId ) +
"\t" + std::to_string( guid ) +
"\t" + std::to_string( territoryInfo->territoryIntendedUse ) +
"\t" + ( territoryInfo->name.length() <= 4 ? territoryInfo->name + "\t" : territoryInfo->name ) +
"\t" + "HOUSING" +
"\t" + pPlaceName->name +
"#" + std::to_string( wardNum ) );
Logger::info( std::to_string( territoryTypeId ) +
"\t" + std::to_string( guid ) +
"\t" + std::to_string( territoryInfo->territoryIntendedUse ) +
"\t" + ( territoryInfo->name.length() <= 4 ? territoryInfo->name + "\t" : territoryInfo->name ) +
"\t" + "HOUSING" +
"\t" + pPlaceName->name +
"#" + std::to_string( wardNum ) );
auto pHousingZone = make_HousingZone( wardNum, territoryTypeId, guid, territoryInfo->name, pPlaceName->name );
pHousingZone->init();
@ -232,14 +230,13 @@ Sapphire::ZonePtr Sapphire::World::Manager::TerritoryMgr::createTerritoryInstanc
return nullptr;
auto pExdData = framework()->get< Data::ExdDataGenerated >();
auto pLog = framework()->get< Logger >();
auto pTeri = getTerritoryDetail( territoryTypeId );
auto pPlaceName = pExdData->get< Sapphire::Data::PlaceName >( pTeri->placeName );
if( !pTeri || !pPlaceName )
return nullptr;
pLog->debug(
Logger::debug(
"Starting instance for territory: " + std::to_string( territoryTypeId ) + " (" + pPlaceName->name + ")" );
auto pZone = make_Zone( territoryTypeId, getNextInstanceId(), pTeri->name, pPlaceName->name );
@ -273,9 +270,8 @@ Sapphire::ZonePtr Sapphire::World::Manager::TerritoryMgr::createInstanceContent(
if( !pTeri || pInstanceContent->name.empty() )
return nullptr;
auto pLog = framework()->get< Logger >();
pLog->debug( "Starting instance for InstanceContent id: " + std::to_string( instanceContentId ) +
" (" + pInstanceContent->name + ")" );
Logger::debug( "Starting instance for InstanceContent id: " + std::to_string( instanceContentId ) +
" (" + pInstanceContent->name + ")" );
auto pZone = make_InstanceContent( pInstanceContent, pContentFinderCondition->territoryType, getNextInstanceId(),
pTeri->name, pInstanceContent->name, instanceContentId );
@ -453,8 +449,6 @@ void Sapphire::World::Manager::TerritoryMgr::updateTerritoryInstances( uint32_t
zone->update( currentTime );
}
auto pLog = framework()->get< Logger >();
// remove internal house zones with nobody in them
for( auto it = m_landIdentToZonePtrMap.begin(); it != m_landIdentToZonePtrMap.end(); )
{
@ -466,7 +460,8 @@ void Sapphire::World::Manager::TerritoryMgr::updateTerritoryInstances( uint32_t
// todo: make this timeout configurable, though should be pretty relaxed in any case
if( diff > 60 )
{
pLog->info( "Removing HousingInteriorTerritory#" + std::to_string( zone->getGuId() ) + " - has been inactive for 60 seconds" );
Logger::info( "Removing HousingInteriorTerritory#" +
std::to_string( zone->getGuId() ) + " - has been inactive for 60 seconds" );
// remove zone from maps
m_zoneSet.erase( zone );
@ -501,10 +496,9 @@ bool Sapphire::World::Manager::TerritoryMgr::movePlayer( uint32_t territoryTypeI
bool Sapphire::World::Manager::TerritoryMgr::movePlayer( ZonePtr pZone, Sapphire::Entity::PlayerPtr pPlayer )
{
auto pLog = framework()->get< Logger >();
if( !pZone )
{
pLog->error( "Zone not found on this server." );
Logger::error( "Zone not found on this server." );
return false;
}

View file

@ -27,8 +27,9 @@ using namespace Sapphire::Network::Packets;
using namespace Sapphire::Network::Packets::Server;
Sapphire::Network::GameConnection::GameConnection( Sapphire::Network::HivePtr pHive,
Sapphire::Network::AcceptorPtr pAcceptor ) :
Connection( pHive ),
Sapphire::Network::AcceptorPtr pAcceptor,
FrameworkPtr pFw ) :
Connection( pHive, pFw ),
m_pAcceptor( pAcceptor ),
m_conType( ConnectionType::None )
{
@ -131,37 +132,34 @@ Sapphire::Network::GameConnection::~GameConnection() = default;
// overwrite the parents onConnect for our game socket needs
void Sapphire::Network::GameConnection::OnAccept( const std::string& host, uint16_t port )
{
GameConnectionPtr connection( new GameConnection( m_hive, m_pAcceptor ) );
GameConnectionPtr connection( new GameConnection( m_hive, m_pAcceptor, m_pFw ) );
m_pAcceptor->Accept( connection );
auto pLog = g_fw.get< Logger >();
pLog->info( "Connect from " + m_socket.remote_endpoint().address().to_string() );
Logger::info( "Connect from " + m_socket.remote_endpoint().address().to_string() );
}
void Sapphire::Network::GameConnection::OnDisconnect()
{
auto pLog = g_fw.get< Logger >();
pLog->debug( "GameConnection DISCONNECT" );
Logger::debug( "GameConnection DISCONNECT" );
m_pSession = nullptr;
}
void Sapphire::Network::GameConnection::OnRecv( std::vector< uint8_t >& buffer )
{
// This is assumed packet always start with valid FFXIVARR_PACKET_HEADER for now.
auto pLog = g_fw.get< Logger >();
Packets::FFXIVARR_PACKET_HEADER packetHeader{};
const auto headerResult = Packets::getHeader( buffer, 0, packetHeader );
if( headerResult == Incomplete )
{
pLog->info( "Dropping connection due to incomplete packet header." );
pLog->info( "FIXME: Packet message bounary is not implemented." );
Logger::info( "Dropping connection due to incomplete packet header." );
Logger::info( "FIXME: Packet message bounary is not implemented." );
Disconnect();
return;
}
else if( headerResult == Malformed )
{
pLog->info( "Dropping connection due to malformed packet header." );
Logger::info( "Dropping connection due to malformed packet header." );
Disconnect();
return;
}
@ -173,14 +171,14 @@ void Sapphire::Network::GameConnection::OnRecv( std::vector< uint8_t >& buffer )
if( packetResult == Incomplete )
{
pLog->info( "Dropping connection due to incomplete packets." );
pLog->info( "FIXME: Packet message bounary is not implemented." );
Logger::info( "Dropping connection due to incomplete packets." );
Logger::info( "FIXME: Packet message bounary is not implemented." );
Disconnect();
return;
}
else if( packetResult == Malformed )
{
pLog->info( "Dropping connection due to malformed packets." );
Logger::info( "Dropping connection due to malformed packets." );
Disconnect();
return;
}
@ -191,8 +189,7 @@ void Sapphire::Network::GameConnection::OnRecv( std::vector< uint8_t >& buffer )
void Sapphire::Network::GameConnection::OnError( const asio::error_code& error )
{
auto pLog = g_fw.get< Logger >();
pLog->debug( "GameConnection ERROR: " + error.message() );
Logger::debug( "GameConnection ERROR: " + error.message() );
}
void Sapphire::Network::GameConnection::queueInPacket( Sapphire::Network::Packets::FFXIVARR_PACKET_RAW inPacket )
@ -207,7 +204,6 @@ void Sapphire::Network::GameConnection::queueOutPacket( Sapphire::Network::Packe
void Sapphire::Network::GameConnection::handleZonePacket( Sapphire::Network::Packets::FFXIVARR_PACKET_RAW& pPacket )
{
auto pLog = g_fw.get< Logger >();
uint16_t opcode = *reinterpret_cast< uint16_t* >( &pPacket.data[ 0x02 ] );
auto it = m_zoneHandlerMap.find( opcode );
@ -218,27 +214,23 @@ void Sapphire::Network::GameConnection::handleZonePacket( Sapphire::Network::Pac
auto itStr = m_zoneHandlerStrMap.find( opcode );
std::string name = itStr != m_zoneHandlerStrMap.end() ? itStr->second : "unknown";
// dont display packet notification if it is a ping or pos update, don't want the spam
if( opcode != PingHandler &&
opcode != UpdatePositionHandler )
if( opcode != PingHandler && opcode != UpdatePositionHandler )
Logger::debug( sessionStr + " Handling Zone IPC : " + name + "( " +
Util::intToHexString( static_cast< uint32_t >( opcode ), 4 ) + " )" );
pLog->debug( sessionStr + " Handling Zone IPC : " + name + "( " +
Util::intToHexString( static_cast< uint32_t >( opcode ), 4 ) + " )" );
( this->*( it->second ) )( pPacket, *m_pSession->getPlayer() );
( this->*( it->second ) )( m_pFw, pPacket, *m_pSession->getPlayer() );
}
else
{
pLog->debug( sessionStr + " Undefined Zone IPC : Unknown ( " +
Util::intToHexString( static_cast< uint32_t >( opcode ), 4 ) + " )" );
pLog->debug(
"Dump:\n" + Util::binaryToHexDump( const_cast< uint8_t* >( &pPacket.data[ 0 ] ), pPacket.segHdr.size ) );
Logger::debug( sessionStr + " Undefined Zone IPC : Unknown ( " +
Util::intToHexString( static_cast< uint32_t >( opcode ), 4 ) + " )" );
Logger::debug( "Dump:\n" + Util::binaryToHexDump( const_cast< uint8_t* >( &pPacket.data[ 0 ] ),
pPacket.segHdr.size ) );
}
}
void Sapphire::Network::GameConnection::handleChatPacket( Sapphire::Network::Packets::FFXIVARR_PACKET_RAW& pPacket )
{
auto pLog = g_fw.get< Logger >();
uint16_t opcode = *reinterpret_cast< uint16_t* >( &pPacket.data[ 0x02 ] );
auto it = m_chatHandlerMap.find( opcode );
@ -250,16 +242,15 @@ void Sapphire::Network::GameConnection::handleChatPacket( Sapphire::Network::Pac
std::string name = itStr != m_chatHandlerStrMap.end() ? itStr->second : "unknown";
// dont display packet notification if it is a ping or pos update, don't want the spam
pLog->debug( sessionStr + " Handling Chat IPC : " + name + "( " +
Util::intToHexString( static_cast< uint32_t >( opcode ), 4 ) + " )" );
Logger::debug( sessionStr + " Handling Chat IPC : " + name + "( " +
Util::intToHexString( static_cast< uint32_t >( opcode ), 4 ) + " )" );
( this->*( it->second ) )( pPacket, *m_pSession->getPlayer() );
( this->*( it->second ) )( m_pFw, pPacket, *m_pSession->getPlayer() );
}
else
{
pLog->debug( sessionStr + " Undefined Chat IPC : Unknown ( " +
Util::intToHexString( static_cast< uint32_t >( opcode ), 4 ) + " )" );
//pLog->debug( pPacket.toString() );
Logger::debug( sessionStr + " Undefined Chat IPC : Unknown ( " +
Util::intToHexString( static_cast< uint32_t >( opcode ), 4 ) + " )" );
}
}
@ -305,7 +296,6 @@ void Sapphire::Network::GameConnection::processInQueue()
void Sapphire::Network::GameConnection::processOutQueue()
{
auto pLog = g_fw.get< Logger >();
if( m_outQueue.size() < 1 )
return;
@ -319,7 +309,7 @@ void Sapphire::Network::GameConnection::processOutQueue()
{
if( pPacket->getSize() == 0 )
{
pLog->debug( "end of packet set" );
Logger::debug( "end of packet set" );
break;
}
@ -346,7 +336,7 @@ void Sapphire::Network::GameConnection::sendSinglePacket( Sapphire::Network::Pac
void Sapphire::Network::GameConnection::injectPacket( const std::string& packetpath, Sapphire::Entity::Player& player )
{
char packet[0x11570];
char packet[ 0x11570 ];
memset( packet, 0, 0x11570 );
// get the packet name / path from the command arguments
@ -360,7 +350,7 @@ void Sapphire::Network::GameConnection::injectPacket( const std::string& packetp
// read the packet into the buffer
fseek( fp, 0, SEEK_END );
int32_t size = ftell( fp );
auto size = static_cast< size_t >( ftell( fp ) );
rewind( fp );
if( fread( packet, sizeof( char ), size, fp ) != size )
{
@ -396,7 +386,6 @@ void Sapphire::Network::GameConnection::injectPacket( const std::string& packetp
void Sapphire::Network::GameConnection::handlePackets( const Sapphire::Network::Packets::FFXIVARR_PACKET_HEADER& ipcHeader,
const std::vector< Sapphire::Network::Packets::FFXIVARR_PACKET_RAW >& packetData )
{
auto pLog = g_fw.get< Logger >();
auto pServerZone = g_fw.get< World::ServerMgr >();
// if a session is set, update the last time it recieved a game packet
if( m_pSession )
@ -409,7 +398,7 @@ void Sapphire::Network::GameConnection::handlePackets( const Sapphire::Network::
case SEGMENTTYPE_SESSIONINIT:
{
char* id = ( char* ) &( inPacket.data[ 4 ] );
uint32_t playerId = std::stoi( id );
uint32_t playerId = std::stoul( id );
auto pCon = std::static_pointer_cast< GameConnection, Connection >( shared_from_this() );
// try to retrieve the session for this id
@ -417,7 +406,7 @@ void Sapphire::Network::GameConnection::handlePackets( const Sapphire::Network::
if( !session )
{
pLog->info( "[" + std::string( id ) + "] Session not registered, creating" );
Logger::info( "[" + std::string( id ) + "] Session not registered, creating" );
// return;
if( !pServerZone->createSession( playerId ) )
{
@ -429,7 +418,7 @@ void Sapphire::Network::GameConnection::handlePackets( const Sapphire::Network::
//TODO: Catch more things in lobby and send real errors
else if( !session->isValid() || ( session->getPlayer() && session->getPlayer()->getLastPing() != 0 ) )
{
pLog->error( "[" + std::string( id ) + "] Session INVALID, disconnecting" );
Logger::error( "[" + std::string( id ) + "] Session INVALID, disconnecting" );
Disconnect();
return;
}
@ -449,7 +438,7 @@ void Sapphire::Network::GameConnection::handlePackets( const Sapphire::Network::
auto pe1 = std::make_shared< FFXIVRawPacket >( 0x02, 0x38, 0, 0 );
*( unsigned int* ) ( &pe1->data()[ 0 ] ) = playerId;
sendSinglePacket( pe1 );
pLog->info( "[" + std::string( id ) + "] Setting session for zone connection" );
Logger::info( "[" + std::string( id ) + "] Setting session for zone connection" );
session->setZoneConnection( pCon );
}
// chat connection, assinging it to the session
@ -463,7 +452,7 @@ void Sapphire::Network::GameConnection::handlePackets( const Sapphire::Network::
*( unsigned short* ) ( &pe3->data()[ 2 ] ) = 0x02;
sendSinglePacket( pe3 );
pLog->info( "[" + std::string( id ) + "] Setting session for chat connection" );
Logger::info( "[" + std::string( id ) + "] Setting session for chat connection" );
session->setChatConnection( pCon );
}

View file

@ -9,7 +9,7 @@
#include "ForwardsZone.h"
#define DECLARE_HANDLER( x ) void x( const Sapphire::Network::Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player )
#define DECLARE_HANDLER( x ) void x( FrameworkPtr pFw, const Sapphire::Network::Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player )
namespace Sapphire::Network::Packets
{
@ -31,7 +31,8 @@ namespace Sapphire::Network
{
private:
typedef void ( GameConnection::* Handler )( const Sapphire::Network::Packets::FFXIVARR_PACKET_RAW& inPacket,
typedef void ( GameConnection::* Handler )( FrameworkPtr pFw,
const Sapphire::Network::Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player );
using HandlerMap = std::map< uint16_t, Handler >;
@ -55,7 +56,7 @@ namespace Sapphire::Network
public:
ConnectionType m_conType;
GameConnection( HivePtr pHive, AcceptorPtr pAcceptor );
GameConnection( HivePtr pHive, AcceptorPtr pAcceptor, FrameworkPtr pFw );
~GameConnection();

View file

@ -28,14 +28,13 @@
#include "Session.h"
#include "Framework.h"
extern Sapphire::Framework g_fw;
using namespace Sapphire::Common;
using namespace Sapphire::Network::Packets;
using namespace Sapphire::Network::Packets::Server;
using namespace Sapphire::Network::ActorControl;
void Sapphire::Network::GameConnection::actionHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::actionHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
const auto packet = ZoneChannelPacket< Client::FFXIVIpcSkillHandler >( inPacket );
@ -47,8 +46,8 @@ void Sapphire::Network::GameConnection::actionHandler( const Packets::FFXIVARR_P
player.sendDebug( "Skill type:" + std::to_string( type ) );
auto pExdData = g_fw.get< Data::ExdDataGenerated >();
auto pScriptMgr = g_fw.get< Scripting::ScriptMgr >();
auto pExdData = pFw->get< Data::ExdDataGenerated >();
auto pScriptMgr = pFw->get< Scripting::ScriptMgr >();
switch( type )
{

View file

@ -15,16 +15,14 @@
#include "Framework.h"
#include "Session.h"
extern Sapphire::Framework g_fw;
using namespace Sapphire::Common;
using namespace Sapphire::Network::Packets;
using namespace Sapphire::Network::Packets::Server;
using namespace Sapphire::World::Manager;
void Sapphire::Network::GameConnection::cfDutyInfoRequest( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::cfDutyInfoRequest( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
auto dutyInfoPacket = makeZonePacket< FFXIVIpcCFDutyInfo >( player.getId() );
@ -42,12 +40,13 @@ void Sapphire::Network::GameConnection::cfDutyInfoRequest( const Packets::FFXIVA
}
void Sapphire::Network::GameConnection::cfRegisterDuty( const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
void Sapphire::Network::GameConnection::cfRegisterDuty( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
Packets::FFXIVARR_PACKET_RAW copy = inPacket;
auto pTeriMgr = g_fw.get< TerritoryMgr >();
auto pExdData = g_fw.get< Data::ExdDataGenerated >();
auto pTeriMgr = pFw->get< TerritoryMgr >();
auto pExdData = pFw->get< Data::ExdDataGenerated >();
std::vector< uint16_t > selectedContent;
@ -90,8 +89,9 @@ void Sapphire::Network::GameConnection::cfRegisterDuty( const Packets::FFXIVARR_
player.setInstance( instance );
}
void Sapphire::Network::GameConnection::cfRegisterRoulette( const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
void Sapphire::Network::GameConnection::cfRegisterRoulette( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
auto cfCancelPacket = makeZonePacket< FFXIVIpcCFNotify >( player.getId() );
cfCancelPacket->data().state1 = 3;
@ -101,8 +101,9 @@ void Sapphire::Network::GameConnection::cfRegisterRoulette( const Packets::FFXIV
player.sendDebug( "Roulette register" );
}
void Sapphire::Network::GameConnection::cfDutyAccepted( const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
void Sapphire::Network::GameConnection::cfDutyAccepted( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
player.sendDebug( "TODO: Duty accept" );
}

View file

@ -23,8 +23,7 @@
#include "Network/PacketWrappers/ActorControlPacket142.h"
#include "Manager/DebugCommandMgr.h"
#include "Event/EventHelper.h"
#include "Manager/EventMgr.h"
#include "Action/Action.h"
#include "Action/ActionTeleport.h"
@ -36,19 +35,17 @@
#include "Framework.h"
#include <Network/PacketDef/Lobby/ServerLobbyDef.h>
extern Sapphire::Framework g_fw;
using namespace Sapphire::Common;
using namespace Sapphire::Network::Packets;
using namespace Sapphire::Network::Packets::Server;
using namespace Sapphire::Network::ActorControl;
using namespace Sapphire::World::Manager;
void examineHandler( Sapphire::Entity::Player& player, uint32_t targetId )
void examineHandler( Sapphire::FrameworkPtr pFw, Sapphire::Entity::Player& player, uint32_t targetId )
{
using namespace Sapphire;
auto pSession = g_fw.get< World::ServerMgr >()->getSession( targetId );
auto pSession = pFw->get< World::ServerMgr >()->getSession( targetId );
if( pSession )
{
auto pTarget = pSession->getPlayer();
@ -66,10 +63,10 @@ void examineHandler( Sapphire::Entity::Player& player, uint32_t targetId )
}
}
void Sapphire::Network::GameConnection::clientTriggerHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
void Sapphire::Network::GameConnection::clientTriggerHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
auto pLog = g_fw.get< Logger >();
const auto packet = ZoneChannelPacket< Client::FFXIVIpcClientTrigger >( inPacket );
@ -80,11 +77,11 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( const Packets::FFX
const auto param2 = packet.data().param2;
const auto param3 = packet.data().param3;
pLog->debug( "[" + std::to_string( m_pSession->getId() ) + "] Incoming action: " +
Util::intToHexString( static_cast< uint32_t >( commandId & 0xFFFF ), 4 ) +
"\nparam1: " + Util::intToHexString( static_cast< uint64_t >( param1 & 0xFFFFFFFFFFFFFFF ), 16 ) +
"\nparam2: " + Util::intToHexString( static_cast< uint32_t >( param2 & 0xFFFFFFFF ), 8 ) +
"\nparam3: " + Util::intToHexString( static_cast< uint64_t >( param3 & 0xFFFFFFFFFFFFFFF ), 16 )
Logger::debug( "[" + std::to_string( m_pSession->getId() ) + "] Incoming action: " +
Util::intToHexString( static_cast< uint32_t >( commandId & 0xFFFF ), 4 ) +
"\nparam1: " + Util::intToHexString( static_cast< uint64_t >( param1 & 0xFFFFFFFFFFFFFFF ), 16 ) +
"\nparam2: " + Util::intToHexString( static_cast< uint32_t >( param2 & 0xFFFFFFFF ), 8 ) +
"\nparam3: " + Util::intToHexString( static_cast< uint64_t >( param3 & 0xFFFFFFFFFFFFFFF ), 16 )
);
@ -147,7 +144,7 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( const Packets::FFX
case ClientTriggerType::Examine:
{
uint32_t targetId = param11;
examineHandler( player, targetId );
examineHandler( pFw, player, targetId );
break;
}
case ClientTriggerType::MarkPlayer: // Mark player
@ -192,7 +189,7 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( const Packets::FFX
uint32_t emoteId = param11;
bool isSilent = param2 == 1;
auto pExdData = g_fw.get< Data::ExdDataGenerated >();
auto pExdData = pFw->get< Data::ExdDataGenerated >();
auto emoteData = pExdData->get< Data::Emote >( emoteId );
if( !emoteData )
@ -325,7 +322,7 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( const Packets::FFX
}
case ClientTriggerType::RequestLandSignFree:
{
auto pHousingMgr = g_fw.get< HousingMgr >();
auto pHousingMgr = pFw->get< HousingMgr >();
auto ident = pHousingMgr->clientTriggerParamsToLandIdent( param11, param12 );
pHousingMgr->sendLandSignFree( player, ident );
@ -334,7 +331,7 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( const Packets::FFX
}
case ClientTriggerType::RequestLandSignOwned:
{
auto pHousingMgr = g_fw.get< HousingMgr >();
auto pHousingMgr = pFw->get< HousingMgr >();
auto ident = pHousingMgr->clientTriggerParamsToLandIdent( param11, param12, false );
pHousingMgr->sendLandSignOwned( player, ident );
@ -343,7 +340,7 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( const Packets::FFX
}
case ClientTriggerType::RequestWardLandInfo:
{
auto pHousingMgr = g_fw.get< HousingMgr >();
auto pHousingMgr = pFw->get< HousingMgr >();
if( !pHousingMgr )
break;
@ -354,14 +351,14 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( const Packets::FFX
case ClientTriggerType::RequestLandRelinquish:
{
auto plot = static_cast< uint8_t >( param12 & 0xFF );
auto pHousingMgr = g_fw.get< HousingMgr >();
auto pHousingMgr = pFw->get< HousingMgr >();
pHousingMgr->relinquishLand( player, plot );
break;
}
case ClientTriggerType::RequestEstateRename:
{
auto pHousingMgr = g_fw.get< HousingMgr >();
auto pHousingMgr = pFw->get< HousingMgr >();
if( !pHousingMgr )
break;
@ -372,7 +369,7 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( const Packets::FFX
}
case ClientTriggerType::RequestEstateEditGreeting:
{
auto pHousingMgr = g_fw.get< HousingMgr >();
auto pHousingMgr = pFw->get< HousingMgr >();
if( !pHousingMgr )
break;
@ -383,7 +380,7 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( const Packets::FFX
}
case ClientTriggerType::RequestEstateEditGuestAccessSettings:
{
auto pHousingMgr = g_fw.get< HousingMgr >();
auto pHousingMgr = pFw->get< HousingMgr >();
if( !pHousingMgr )
break;
@ -412,7 +409,7 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( const Packets::FFX
}
case ClientTriggerType::RequestEstateGreeting:
{
auto housingMgr = g_fw.get< HousingMgr >();
auto housingMgr = pFw->get< HousingMgr >();
if( !housingMgr )
break;
@ -426,7 +423,7 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( const Packets::FFX
uint8_t plot = ( param12 & 0xFF );
auto housingMgr = g_fw.get< HousingMgr >();
auto housingMgr = pFw->get< HousingMgr >();
if( !housingMgr )
break;
@ -444,7 +441,7 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( const Packets::FFX
if( param1 != 1 )
return;
auto housingMgr = g_fw.get< HousingMgr >();
auto housingMgr = pFw->get< HousingMgr >();
if( !housingMgr )
break;
@ -455,8 +452,8 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( const Packets::FFX
default:
{
pLog->debug( "[" + std::to_string( m_pSession->getId() ) + "] Unhandled action: " +
Util::intToHexString( static_cast< uint32_t >( commandId & 0xFFFF ), 4 ) );
Logger::debug( "[" + std::to_string( m_pSession->getId() ) + "] Unhandled action: " +
Util::intToHexString( static_cast< uint32_t >( commandId & 0xFFFF ), 4 ) );
break;
}
}

View file

@ -18,7 +18,7 @@
#include <Util/Util.h>
#include "Event/EventHandler.h"
#include "Event/EventHelper.h"
#include "Manager/EventMgr.h"
#include "Territory/InstanceContent.h"
@ -26,17 +26,17 @@
#include "Framework.h"
extern Sapphire::Framework g_fw;
using namespace Sapphire::Common;
using namespace Sapphire::Network::Packets;
using namespace Sapphire::Network::Packets::Server;
void Sapphire::Network::GameConnection::eventHandlerTalk( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::eventHandlerTalk( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
auto pScriptMgr = g_fw.get< Scripting::ScriptMgr >();
auto pExdData = g_fw.get< Data::ExdDataGenerated >();
auto pScriptMgr = pFw->get< Scripting::ScriptMgr >();
auto pExdData = pFw->get< Data::ExdDataGenerated >();
auto pEventMgr = pFw->get< World::Manager::EventMgr >();
const auto packet = ZoneChannelPacket< Client::FFXIVIpcEventHandlerTalk >( inPacket );
@ -46,11 +46,11 @@ void Sapphire::Network::GameConnection::eventHandlerTalk( const Packets::FFXIVAR
auto eventType = static_cast< uint16_t >( eventId >> 16 );
std::string eventName = "onTalk";
std::string objName = Event::getEventName( eventId );
std::string objName = pEventMgr->getEventName( eventId );
player.sendDebug( "Chara: " +
std::to_string( actorId ) + " -> " +
std::to_string( Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ) ) +
std::to_string( pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ) ) +
" \neventId: " +
std::to_string( eventId ) +
" (0x" + Util::intToHexString( static_cast< uint64_t >( eventId & 0xFFFFFFF ), 8 ) + ")" );
@ -75,12 +75,13 @@ void Sapphire::Network::GameConnection::eventHandlerTalk( const Packets::FFXIVAR
}
void Sapphire::Network::GameConnection::eventHandlerEmote( const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
void Sapphire::Network::GameConnection::eventHandlerEmote( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
auto pScriptMgr = g_fw.get< Scripting::ScriptMgr >();
auto pExdData = g_fw.get< Data::ExdDataGenerated >();
auto pScriptMgr = pFw->get< Scripting::ScriptMgr >();
auto pExdData = pFw->get< Data::ExdDataGenerated >();
auto pEventMgr = pFw->get< World::Manager::EventMgr >();
const auto packet = ZoneChannelPacket< Client::FFXIVIpcEventHandlerEmote >( inPacket );
@ -90,11 +91,11 @@ void Sapphire::Network::GameConnection::eventHandlerEmote( const Packets::FFXIVA
const auto eventType = static_cast< uint16_t >( eventId >> 16 );
std::string eventName = "onEmote";
std::string objName = Event::getEventName( eventId );
std::string objName = pEventMgr->getEventName( eventId );
player.sendDebug( "Chara: " +
std::to_string( actorId ) + " -> " +
std::to_string( Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ) ) +
std::to_string( pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ) ) +
" \neventId: " +
std::to_string( eventId ) +
" (0x" + Util::intToHexString( static_cast< uint64_t >( eventId & 0xFFFFFFF ), 8 ) + ")" );
@ -114,10 +115,12 @@ void Sapphire::Network::GameConnection::eventHandlerEmote( const Packets::FFXIVA
player.checkEvent( eventId );
}
void Sapphire::Network::GameConnection::eventHandlerWithinRange( const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
void Sapphire::Network::GameConnection::eventHandlerWithinRange( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
auto pScriptMgr = g_fw.get< Scripting::ScriptMgr >();
auto pScriptMgr = pFw->get< Scripting::ScriptMgr >();
auto pEventMgr = pFw->get< World::Manager::EventMgr >();
const auto packet = ZoneChannelPacket< Client::FFXIVIpcEventHandlerWithinRange >( inPacket );
@ -126,7 +129,7 @@ void Sapphire::Network::GameConnection::eventHandlerWithinRange( const Packets::
const auto& pos = packet.data().position;
std::string eventName = "onWithinRange";
std::string objName = Event::getEventName( eventId );
std::string objName = pEventMgr->getEventName( eventId );
player.sendDebug( "Calling: " + objName + "." + eventName + " - " + std::to_string( eventId ) +
" p1: " + std::to_string( param1 ) );
@ -137,10 +140,12 @@ void Sapphire::Network::GameConnection::eventHandlerWithinRange( const Packets::
player.checkEvent( eventId );
}
void Sapphire::Network::GameConnection::eventHandlerOutsideRange( const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
void Sapphire::Network::GameConnection::eventHandlerOutsideRange( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
auto pScriptMgr = g_fw.get< Scripting::ScriptMgr >();
auto pScriptMgr = pFw->get< Scripting::ScriptMgr >();
auto pEventMgr = pFw->get< World::Manager::EventMgr >();
const auto packet = ZoneChannelPacket< Client::FFXIVIpcEventHandlerOutsideRange >( inPacket );
const auto eventId = packet.data().eventId;
@ -148,7 +153,7 @@ void Sapphire::Network::GameConnection::eventHandlerOutsideRange( const Packets:
const auto& pos = packet.data().position;
std::string eventName = "onOutsideRange";
std::string objName = Event::getEventName( eventId );
std::string objName = pEventMgr->getEventName( eventId );
player.sendDebug( "Calling: " + objName + "." + eventName + " - " + std::to_string( eventId ) +
" p1: " + std::to_string( param1 ) );
@ -159,10 +164,12 @@ void Sapphire::Network::GameConnection::eventHandlerOutsideRange( const Packets:
player.checkEvent( eventId );
}
void Sapphire::Network::GameConnection::eventHandlerEnterTerritory( const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
void Sapphire::Network::GameConnection::eventHandlerEnterTerritory( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
auto pScriptMgr = g_fw.get< Scripting::ScriptMgr >();
auto pScriptMgr = pFw->get< Scripting::ScriptMgr >();
auto pEventMgr = pFw->get< World::Manager::EventMgr >();
const auto packet = ZoneChannelPacket< Client::FFXIVIpcEnterTerritoryHandler >( inPacket );
@ -172,7 +179,7 @@ void Sapphire::Network::GameConnection::eventHandlerEnterTerritory( const Packet
std::string eventName = "onEnterTerritory";
std::string objName = Event::getEventName( eventId );
std::string objName = pEventMgr->getEventName( eventId );
player.sendDebug( "Calling: " + objName + "." + eventName + " - " + std::to_string( eventId ) );
@ -190,9 +197,12 @@ void Sapphire::Network::GameConnection::eventHandlerEnterTerritory( const Packet
player.checkEvent( eventId );
}
void Sapphire::Network::GameConnection::eventHandlerReturn( const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
void Sapphire::Network::GameConnection::eventHandlerReturn( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
auto pEventMgr = pFw->get< World::Manager::EventMgr >();
const auto packet = ZoneChannelPacket< Client::FFXIVIpcEventHandlerReturn >( inPacket );
const auto eventId = packet.data().eventId;
const auto scene = packet.data().scene;
@ -201,7 +211,7 @@ void Sapphire::Network::GameConnection::eventHandlerReturn( const Packets::FFXIV
const auto param3 = packet.data().param3;
const auto param4 = packet.data().param4;
std::string eventName = Event::getEventName( eventId );
std::string eventName = pEventMgr->getEventName( eventId );
player.sendDebug( "eventId: " +
std::to_string( eventId ) +
@ -239,8 +249,9 @@ void Sapphire::Network::GameConnection::eventHandlerReturn( const Packets::FFXIV
}
void Sapphire::Network::GameConnection::eventHandlerLinkshell( const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
void Sapphire::Network::GameConnection::eventHandlerLinkshell( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
const auto packet = ZoneChannelPacket< Client::FFXIVIpcLinkshellEventHandler >( inPacket );
@ -253,21 +264,23 @@ void Sapphire::Network::GameConnection::eventHandlerLinkshell( const Packets::FF
}
void Sapphire::Network::GameConnection::eventHandlerShop( const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
void Sapphire::Network::GameConnection::eventHandlerShop( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
auto pEventMgr = pFw->get< World::Manager::EventMgr >();
const auto packet = ZoneChannelPacket< Client::FFXIVIpcShopEventHandler >( inPacket );
auto pLog = g_fw.get< Logger >();
auto pScriptMgr = g_fw.get< Scripting::ScriptMgr >();
auto pExdData = g_fw.get< Data::ExdDataGenerated >();
auto pScriptMgr = pFw->get< Scripting::ScriptMgr >();
auto pExdData = pFw->get< Data::ExdDataGenerated >();
const auto eventId = packet.data().eventId;
auto eventType = static_cast< uint16_t >( eventId >> 16 );
std::string eventName = "onOpen";
std::string objName = Event::getEventName( eventId );
std::string objName = pEventMgr->getEventName( eventId );
player.sendDebug( "EventId: " +
std::to_string( eventId ) +

View file

@ -32,8 +32,6 @@
#include "ServerMgr.h"
#include "Framework.h"
extern Sapphire::Framework g_fw;
using namespace Sapphire::Common;
using namespace Sapphire::Network::Packets;
using namespace Sapphire::Network::Packets::Server;
@ -88,7 +86,9 @@ enum GmCommand
JumpNpc = 0x025F,
};
void Sapphire::Network::GameConnection::gm1Handler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player )
void Sapphire::Network::GameConnection::gm1Handler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
if( player.getGmRank() <= 0 )
return;
@ -101,11 +101,10 @@ void Sapphire::Network::GameConnection::gm1Handler( const Packets::FFXIVARR_PACK
const auto param4 = packet.data().param4;
const auto target = packet.data().target;
auto pLog = g_fw.get< Logger >();
pLog->debug( player.getName() + " used GM1 commandId: " + std::to_string( commandId ) +
", params: " + std::to_string( param1 ) + ", " +
std::to_string( param2 ) + ", " + std::to_string( param3 ) + ", " + std::to_string( param4 ) +
", target: " + std::to_string( target ) );
Logger::debug( player.getName() + " used GM1 commandId: " + std::to_string( commandId ) +
", params: " + std::to_string( param1 ) + ", " +
std::to_string( param2 ) + ", " + std::to_string( param3 ) + ", " + std::to_string( param4 ) +
", target: " + std::to_string( target ) );
Sapphire::Entity::ActorPtr targetActor;
@ -426,7 +425,7 @@ void Sapphire::Network::GameConnection::gm1Handler( const Packets::FFXIVARR_PACK
}
case GmCommand::Teri:
{
auto pTeriMgr = g_fw.get< TerritoryMgr >();
auto pTeriMgr = pFw->get< TerritoryMgr >();
if( auto instance = pTeriMgr->getInstanceZonePtr( param1 ) )
{
player.sendDebug( "Found instance: " + instance->getName() + ", id: " + std::to_string( param1 ) );
@ -467,7 +466,7 @@ void Sapphire::Network::GameConnection::gm1Handler( const Packets::FFXIVARR_PACK
bool doTeleport = false;
uint16_t teleport;
auto pExdData = g_fw.get< Data::ExdDataGenerated >();
auto pExdData = pFw->get< Data::ExdDataGenerated >();
auto idList = pExdData->getAetheryteIdList();
for( auto i : idList )
@ -546,13 +545,14 @@ void Sapphire::Network::GameConnection::gm1Handler( const Packets::FFXIVARR_PACK
}
void Sapphire::Network::GameConnection::gm2Handler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player )
void Sapphire::Network::GameConnection::gm2Handler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
if( player.getGmRank() <= 0 )
return;
auto pLog = g_fw.get< Logger >();
auto pServerZone = g_fw.get< World::ServerMgr >();
auto pServerZone = pFw->get< World::ServerMgr >();
const auto packet = ZoneChannelPacket< Client::FFXIVIpcGmCommand2 >( inPacket );
@ -563,10 +563,10 @@ void Sapphire::Network::GameConnection::gm2Handler( const Packets::FFXIVARR_PACK
const auto param4 = packet.data().param4;
const auto target = std::string( packet.data().target );
pLog->debug( player.getName() + " used GM2 commandId: " + std::to_string( commandId ) +
", params: " + std::to_string( param1 ) + ", " +
std::to_string( param2 ) + ", " + std::to_string( param3 ) + ", " + std::to_string( param4 ) +
", target: " + target );
Logger::debug( player.getName() + " used GM2 commandId: " + std::to_string( commandId ) +
", params: " + std::to_string( param1 ) + ", " +
std::to_string( param2 ) + ", " + std::to_string( param3 ) + ", " + std::to_string( param4 ) +
", target: " + target );
auto targetSession = pServerZone->getSession( target );
Sapphire::Entity::CharaPtr targetActor;

View file

@ -19,13 +19,12 @@
#include "Framework.h"
extern Sapphire::Framework g_fw;
using namespace Sapphire::Common;
using namespace Sapphire::Network::Packets;
using namespace Sapphire::Network::Packets::Server;
void Sapphire::Network::GameConnection::inventoryModifyHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::inventoryModifyHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
const auto packet = ZoneChannelPacket< Client::FFXIVIpcInventoryModifyHandler >( inPacket );
@ -43,9 +42,7 @@ void Sapphire::Network::GameConnection::inventoryModifyHandler( const Packets::F
ackPacket->data().type = 7;
player.queuePacket( ackPacket );
auto pLog = g_fw.get< Logger >();
pLog->debug( "InventoryAction: " + std::to_string( action ) );
Logger::debug( "InventoryAction: " + std::to_string( action ) );
// TODO: other inventory operations need to be implemented
switch( action )

View file

@ -35,8 +35,7 @@
#include "Network/PacketWrappers/PlayerStateFlagsPacket.h"
#include "Manager/DebugCommandMgr.h"
#include "Event/EventHelper.h"
#include "Manager/EventMgr.h"
#include "Action/Action.h"
#include "Action/ActionTeleport.h"
@ -46,15 +45,14 @@
#include "Forwards.h"
#include "Framework.h"
extern Sapphire::Framework g_fw;
using namespace Sapphire::Common;
using namespace Sapphire::Network::Packets;
using namespace Sapphire::Network::Packets::Server;
using namespace Sapphire::Network::ActorControl;
using namespace Sapphire::World::Manager;
void Sapphire::Network::GameConnection::fcInfoReqHandler( const Sapphire::Network::Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::fcInfoReqHandler( FrameworkPtr pFw,
const Sapphire::Network::Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
// TODO: use new packet struct for this
@ -63,7 +61,8 @@ void Sapphire::Network::GameConnection::fcInfoReqHandler( const Sapphire::Networ
//queueOutPacket( pPe );
}
void Sapphire::Network::GameConnection::setSearchInfoHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::setSearchInfoHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
const auto packet = ZoneChannelPacket< Client::FFXIVIpcSetSearchInfo >( inPacket );
@ -98,7 +97,8 @@ void Sapphire::Network::GameConnection::setSearchInfoHandler( const Packets::FFX
static_cast< uint8_t >( player.getOnlineStatus() ) ), true );
}
void Sapphire::Network::GameConnection::reqSearchInfoHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::reqSearchInfoHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
auto searchInfoPacket = makeZonePacket< FFXIVIpcInitSearchInfo >( player.getId() );
@ -108,14 +108,15 @@ void Sapphire::Network::GameConnection::reqSearchInfoHandler( const Packets::FFX
queueOutPacket( searchInfoPacket );
}
void Sapphire::Network::GameConnection::reqExamineSearchCommentHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::reqExamineSearchCommentHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
auto targetId = *reinterpret_cast< const uint32_t* >( &inPacket.data[ 0x10 ] );
auto pSession = g_fw.get< World::ServerMgr >()->getSession( targetId );
auto pSession = pFw->get< World::ServerMgr >()->getSession( targetId );
g_fw.get< Sapphire::Logger >()->debug( std::to_string( targetId ) );
Logger::debug( std::to_string( targetId ) );
if( pSession )
{
@ -135,14 +136,15 @@ void Sapphire::Network::GameConnection::reqExamineSearchCommentHandler( const Pa
}
}
void Sapphire::Network::GameConnection::reqExamineFcInfo( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::reqExamineFcInfo( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
auto targetId = *reinterpret_cast< const uint32_t* >( &inPacket.data[ 0x18 ] );
auto pSession = g_fw.get< World::ServerMgr >()->getSession( targetId );
auto pSession = pFw->get< World::ServerMgr >()->getSession( targetId );
g_fw.get< Sapphire::Logger >()->debug( std::to_string( targetId ) );
Logger::debug( std::to_string( targetId ) );
if( pSession )
{
@ -163,14 +165,16 @@ void Sapphire::Network::GameConnection::reqExamineFcInfo( const Packets::FFXIVAR
}
}
void Sapphire::Network::GameConnection::linkshellListHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::linkshellListHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
auto linkshellListPacket = makeZonePacket< FFXIVIpcLinkshellList >( player.getId() );
queueOutPacket( linkshellListPacket );
}
void Sapphire::Network::GameConnection::updatePositionHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::updatePositionHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
// if the player is marked for zoning we no longer want to update his pos
@ -213,9 +217,6 @@ void Sapphire::Network::GameConnection::updatePositionHandler( const Packets::FF
auto flags1 = *reinterpret_cast< uint32_t* >( &copy.data[ 0x18 ] );
memcpy( &IPC_OP_019A, &flags1, 4 );
auto pLog = g_fw.get< Logger >();
bool bPosChanged = false;
if( ( player.getPos().x != *reinterpret_cast< float* >( &copy.data[ 0x1C ] ) ) ||
( player.getPos().y != *reinterpret_cast< float* >( &copy.data[ 0x20 ] ) ) ||
@ -245,8 +246,8 @@ void Sapphire::Network::GameConnection::updatePositionHandler( const Packets::FF
uint16_t unk4 = 0;
// HACK: This part is hackish, we need to find out what all theese things really do.
//pLog->debug( std::to_string( moveState ) + " -- moveState " );
//pLog->debug( std::to_string( moveType ) + " -- moveType " );
//Logger::debug( std::to_string( moveState ) + " -- moveState " );
//Logger::debug( std::to_string( moveType ) + " -- moveType " );
if( moveType & MoveType::Running )
{
@ -306,7 +307,8 @@ void Sapphire::Network::GameConnection::updatePositionHandler( const Packets::FF
}
void
Sapphire::Network::GameConnection::reqEquipDisplayFlagsHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
Sapphire::Network::GameConnection::reqEquipDisplayFlagsHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
player.setEquipDisplayFlags( inPacket.data[ 0x10 ] );
@ -314,10 +316,11 @@ Sapphire::Network::GameConnection::reqEquipDisplayFlagsHandler( const Packets::F
player.sendDebug( "EquipDisplayFlag CHANGE: " + std::to_string( player.getEquipDisplayFlags() ) );
}
void Sapphire::Network::GameConnection::zoneLineHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::zoneLineHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
auto pTeriMgr = g_fw.get< TerritoryMgr >();
auto pTeriMgr = pFw->get< TerritoryMgr >();
const auto packet = ZoneChannelPacket< Client::FFXIVIpcZoneLineHandler >( inPacket );
const auto zoneLineId = packet.data().zoneLineId;
@ -360,13 +363,14 @@ void Sapphire::Network::GameConnection::zoneLineHandler( const Packets::FFXIVARR
}
void Sapphire::Network::GameConnection::discoveryHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::discoveryHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
const auto packet = ZoneChannelPacket< Client::FFXIVIpcDiscoveryHandler >( inPacket );
const auto positionRef = packet.data().positionRef;
auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >();
auto pDb = pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >();
auto pQR = pDb->query( "SELECT id, map_id, discover_id "
"FROM discoveryinfo "
@ -390,7 +394,8 @@ void Sapphire::Network::GameConnection::discoveryHandler( const Packets::FFXIVAR
}
void Sapphire::Network::GameConnection::playTimeHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::playTimeHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
auto playTimePacket = makeZonePacket< FFXIVIpcPlayTime >( player.getId() );
@ -399,7 +404,8 @@ void Sapphire::Network::GameConnection::playTimeHandler( const Packets::FFXIVARR
}
void Sapphire::Network::GameConnection::initHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::initHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
// init handler means this is a login procedure
@ -409,7 +415,8 @@ void Sapphire::Network::GameConnection::initHandler( const Packets::FFXIVARR_PAC
}
void Sapphire::Network::GameConnection::blackListHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::blackListHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
uint8_t count = inPacket.data[ 0x11 ];
@ -424,7 +431,8 @@ void Sapphire::Network::GameConnection::blackListHandler( const Packets::FFXIVAR
}
void Sapphire::Network::GameConnection::pingHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::pingHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
const auto packet = ZoneChannelPacket< Client::FFXIVIpcPingHandler >( inPacket );
@ -435,7 +443,8 @@ void Sapphire::Network::GameConnection::pingHandler( const Packets::FFXIVARR_PAC
}
void Sapphire::Network::GameConnection::finishLoadingHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::finishLoadingHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
player.sendQuestInfo();
@ -468,7 +477,8 @@ void Sapphire::Network::GameConnection::finishLoadingHandler( const Packets::FFX
player.getCurrentZone()->updateActorPosition( player );
}
void Sapphire::Network::GameConnection::socialListHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::socialListHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
@ -525,10 +535,11 @@ void Sapphire::Network::GameConnection::socialListHandler( const Packets::FFXIVA
}
void Sapphire::Network::GameConnection::chatHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::chatHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
auto pDebugCom = g_fw.get< DebugCommandMgr >();
auto pDebugCom = pFw->get< DebugCommandMgr >();
const auto packet = ZoneChannelPacket< Client::FFXIVIpcChatHandler >( inPacket );
@ -583,7 +594,8 @@ void Sapphire::Network::GameConnection::chatHandler( const Packets::FFXIVARR_PAC
// currently we wait for the session to just time out after logout, this can be a problem is the user tries to
// log right back in.
// Also the packet needs to be converted to an ipc structure
void Sapphire::Network::GameConnection::logoutHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::logoutHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
auto logoutPacket = makeZonePacket< FFXIVIpcLogout >( player.getId() );
@ -595,12 +607,13 @@ void Sapphire::Network::GameConnection::logoutHandler( const Packets::FFXIVARR_P
}
void Sapphire::Network::GameConnection::tellHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::tellHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
const auto packet = ZoneChannelPacket< Client::FFXIVIpcTellHandler >( inPacket );
auto pZoneServer = g_fw.get< World::ServerMgr >();
auto pZoneServer = pFw->get< World::ServerMgr >();
auto pSession = pZoneServer->getSession( packet.data().targetPCName );
@ -646,7 +659,8 @@ void Sapphire::Network::GameConnection::tellHandler( const Packets::FFXIVARR_PAC
}
void Sapphire::Network::GameConnection::performNoteHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::performNoteHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
auto performPacket = makeZonePacket< FFXIVIpcPerformNote >( player.getId() );
@ -654,12 +668,13 @@ void Sapphire::Network::GameConnection::performNoteHandler( const Packets::FFXIV
player.sendToInRangeSet( performPacket );
}
void Sapphire::Network::GameConnection::landRenameHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::landRenameHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
const auto packet = ZoneChannelPacket< Client::FFXIVIpcRenameLandHandler >( inPacket );
auto pHousingMgr = g_fw.get< HousingMgr >();
auto pHousingMgr = pFw->get< HousingMgr >();
auto landSetId = pHousingMgr->toLandSetId( packet.data().ident.territoryTypeId, packet.data().ident.wardNum );
@ -687,21 +702,23 @@ void Sapphire::Network::GameConnection::landRenameHandler( const Packets::FFXIVA
player.queuePacket( nameUpdatePacket );
}
void Sapphire::Network::GameConnection::buildPresetHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::buildPresetHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
const auto packet = ZoneChannelPacket< Client::FFXIVIpcBuildPresetHandler >( inPacket );
auto pHousingMgr = g_fw.get< HousingMgr >();
auto pHousingMgr = pFw->get< HousingMgr >();
pHousingMgr->buildPresetEstate( player, packet.data().plotNum, packet.data().itemId );
}
void Sapphire::Network::GameConnection::housingUpdateGreetingHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
void Sapphire::Network::GameConnection::housingUpdateGreetingHandler( FrameworkPtr pFw,
const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player )
{
const auto packet = ZoneChannelPacket< Client::FFXIVIpcHousingUpdateHouseGreeting >( inPacket );
auto pHousingMgr = g_fw.get< HousingMgr >();
auto pHousingMgr = pFw->get< HousingMgr >();
pHousingMgr->updateEstateGreeting( player, packet.data().ident, std::string( packet.data().greeting ) );
}

View file

@ -52,7 +52,7 @@ namespace Sapphire::ScriptAPI
/*!
* @brief Sets the ptr to the framework for use inside scripts
*
* @param fw The ptr to g_fw (Core::Framework)
* @param fw The ptr to a Framework
*/
virtual void setFramework( Sapphire::Framework* fw );

View file

@ -1,11 +1,10 @@
#include "NativeScriptMgr.h"
#include <Crypt/md5.h>
#include <Config/ConfigMgr.h>
#include "Framework.h"
extern Sapphire::Framework g_fw;
namespace Sapphire::Scripting
{
@ -33,7 +32,7 @@ namespace Sapphire::Scripting
auto script = scripts[ i ];
module->scripts.push_back( script );
script->setFramework( &g_fw );
script->setFramework( framework().get() );
m_scripts[ script->getType() ][ script->getId() ] = script;
@ -122,10 +121,17 @@ namespace Sapphire::Scripting
return m_loader.isModuleLoaded( name );
}
std::shared_ptr< NativeScriptMgr > createNativeScriptMgr()
NativeScriptMgr::NativeScriptMgr( FrameworkPtr pFw ) :
World::Manager::BaseManager( pFw )
{
return std::make_shared< NativeScriptMgr >();
auto pConfig = framework()->get< ConfigMgr >();
m_loader.setCachePath( pConfig->getValue< std::string >( "Scripts", "CachePath", "./cache/" ) );
}
std::shared_ptr< NativeScriptMgr > createNativeScriptMgr( FrameworkPtr pFw )
{
return std::make_shared< NativeScriptMgr >( pFw );
}
}

View file

@ -4,6 +4,7 @@
#include <unordered_map>
#include <set>
#include <queue>
#include "Manager/BaseManager.h"
#include "ScriptLoader.h"
@ -13,7 +14,7 @@ namespace Sapphire::Scripting
/*!
* @brief Contains all the functionality for easily loading, unloading, reloading and generally accessing scripts.
*/
class NativeScriptMgr
class NativeScriptMgr : public World::Manager::BaseManager
{
protected:
/*!
@ -40,7 +41,7 @@ namespace Sapphire::Scripting
bool unloadScript( ScriptInfo* info );
public:
NativeScriptMgr() = default;
NativeScriptMgr( FrameworkPtr pFw );
/*!
* @brief Loads a script from a path
@ -124,7 +125,7 @@ namespace Sapphire::Scripting
*
* @return a std::shared_ptr to NativeScriptMgr
*/
std::shared_ptr< NativeScriptMgr > createNativeScriptMgr();
std::shared_ptr< NativeScriptMgr > createNativeScriptMgr( FrameworkPtr pFw );
}
#endif

View file

@ -9,8 +9,6 @@
#include "Framework.h"
extern Sapphire::Framework g_fw;
namespace fs = std::experimental::filesystem;
const std::string Sapphire::Scripting::ScriptLoader::getModuleExtension()
@ -32,34 +30,30 @@ bool Sapphire::Scripting::ScriptLoader::unloadModule( ModuleHandle handle )
bool success = dlclose( handle ) == 0;
#endif
auto pLog = g_fw.get< Logger >();
if( !success )
{
pLog->error( "Failed to unload module " );
Logger::error( "Failed to unload module " );
return false;
}
pLog->debug( "Unloaded module" );
Logger::debug( "Unloaded module" );
return true;
}
Sapphire::Scripting::ScriptInfo* Sapphire::Scripting::ScriptLoader::loadModule( const std::string& path )
{
auto pLog = g_fw.get< Logger >();
auto pConfig = g_fw.get< ConfigMgr >();
fs::path f( path );
if( isModuleLoaded( f.stem().string() ) )
{
pLog->error( "Unable to load module '" + f.stem().string() + "' as it is already loaded" );
Logger::error( "Unable to load module '" + f.stem().string() + "' as it is already loaded" );
return nullptr;
}
// copy to temp dir
fs::path cacheDir( f.parent_path() /= pConfig->getValue< std::string >( "Scripts", "CachePath", "./cache/" ) );
fs::path cacheDir( f.parent_path() /= m_cachePath );
fs::create_directories( cacheDir );
fs::path dest( cacheDir /= f.filename().string() );
@ -69,7 +63,7 @@ Sapphire::Scripting::ScriptInfo* Sapphire::Scripting::ScriptLoader::loadModule(
}
catch( const fs::filesystem_error& err )
{
pLog->error( "Error copying file to cache: " + err.code().message() );
Logger::error( "Error copying file to cache: " + err.code().message() );
return nullptr;
}
@ -83,12 +77,12 @@ Sapphire::Scripting::ScriptInfo* Sapphire::Scripting::ScriptLoader::loadModule(
if( !handle )
{
pLog->error( "Failed to load module from: " + path );
Logger::error( "Failed to load module from: " + path );
return nullptr;
}
pLog->debug( "Loaded module '" + f.filename().string() );
Logger::debug( "Loaded module '" + f.filename().string() );
auto info = new ScriptInfo;
info->handle = handle;
@ -104,7 +98,6 @@ Sapphire::Scripting::ScriptInfo* Sapphire::Scripting::ScriptLoader::loadModule(
Sapphire::ScriptAPI::ScriptObject** Sapphire::Scripting::ScriptLoader::getScripts( ModuleHandle handle )
{
using getScripts = Sapphire::ScriptAPI::ScriptObject** ( * )();
auto pLog = g_fw.get< Logger >();
#ifdef _WIN32
getScripts func = reinterpret_cast< getScripts >( GetProcAddress( handle, "getScripts" ) );
@ -129,7 +122,6 @@ bool Sapphire::Scripting::ScriptLoader::unloadScript( Sapphire::Scripting::Scrip
bool Sapphire::Scripting::ScriptLoader::unloadScript( ModuleHandle handle )
{
auto pLog = g_fw.get< Logger >();
for( auto it = m_scriptMap.begin(); it != m_scriptMap.end(); ++it )
{
if( it->second->handle == handle )
@ -148,7 +140,7 @@ bool Sapphire::Scripting::ScriptLoader::unloadScript( ModuleHandle handle )
return true;
}
pLog->error( "failed to unload module: " + info->library_name );
Logger::error( "failed to unload module: " + info->library_name );
return false;
}
@ -183,7 +175,7 @@ Sapphire::Scripting::ScriptInfo* Sapphire::Scripting::ScriptLoader::getScriptInf
}
void Sapphire::Scripting::ScriptLoader::findScripts( std::set< Sapphire::Scripting::ScriptInfo* >& scripts,
const std::string& search )
const std::string& search )
{
for( auto it = m_scriptMap.begin(); it != m_scriptMap.end(); ++it )
{
@ -193,3 +185,13 @@ void Sapphire::Scripting::ScriptLoader::findScripts( std::set< Sapphire::Scripti
}
}
}
const std::string& Sapphire::Scripting::ScriptLoader::getCachePath() const
{
return m_cachePath;
}
void Sapphire::Scripting::ScriptLoader::setCachePath( const string& m_cachePath )
{
ScriptLoader::m_cachePath = m_cachePath;
}

View file

@ -32,6 +32,13 @@ namespace Sapphire::Scripting
*/
std::unordered_map< std::string, ScriptInfo* > m_scriptMap;
/*!
* @brief The path for script caching.
*/
std::string m_cachePath;
protected:
/*!
* @brief Unload a loaded module from it's ModuleHandle
*
@ -103,6 +110,18 @@ namespace Sapphire::Scripting
* @param search the search term
*/
void findScripts( std::set< Sapphire::Scripting::ScriptInfo* >& scripts, const std::string& search );
/*!
* @brief return cache path
*/
const std::string& getCachePath() const;
/*!
* @brief set the cache path
*
* @param cache path
*/
void setCachePath( const std::string& m_cachePath );
};
}

View file

@ -10,7 +10,8 @@
#include "Actor/EventObject.h"
#include "ServerMgr.h"
#include "Event/EventHandler.h"
#include "Event/EventHelper.h"
#include "Manager/EventMgr.h"
#include "StatusEffect/StatusEffect.h"
@ -25,14 +26,13 @@
// enable the ambiguity fix for every platform to avoid #define nonsense
#define WIN_AMBIGUITY_FIX
extern Sapphire::Framework g_fw;
namespace fs = std::experimental::filesystem;
Sapphire::Scripting::ScriptMgr::ScriptMgr() :
Sapphire::Scripting::ScriptMgr::ScriptMgr( FrameworkPtr pFw ) :
World::Manager::BaseManager( pFw ),
m_firstScriptChangeNotificiation( false )
{
m_nativeScriptMgr = createNativeScriptMgr();
m_nativeScriptMgr = createNativeScriptMgr( pFw );
}
Sapphire::Scripting::ScriptMgr::~ScriptMgr()
@ -48,16 +48,15 @@ void Sapphire::Scripting::ScriptMgr::update()
bool Sapphire::Scripting::ScriptMgr::init()
{
std::set< std::string > files;
auto pConfig = g_fw.get< ConfigMgr >();
auto pLog = g_fw.get< Logger >();
auto pConfig = framework()->get< ConfigMgr >();
auto status = loadDir( pConfig->getValue< std::string >( "Scripts", "Path", "./compiledscripts/" ),
files, m_nativeScriptMgr->getModuleExtension() );
if( !status )
{
pLog->error( std::string( __func__ ) +
": failed to load scripts, the server will not function correctly without scripts loaded." );
Logger::error( std::string( __func__ ) +
": failed to load scripts, the server will not function correctly without scripts loaded." );
return false;
}
@ -74,7 +73,7 @@ bool Sapphire::Scripting::ScriptMgr::init()
scriptsLoaded++;
}
pLog->info(
Logger::info(
"ScriptMgr: Loaded " + std::to_string( scriptsLoaded ) + "/" + std::to_string( scriptsFound ) + " modules" );
watchDirectories();
@ -84,7 +83,7 @@ bool Sapphire::Scripting::ScriptMgr::init()
void Sapphire::Scripting::ScriptMgr::watchDirectories()
{
auto pConfig = g_fw.get< ConfigMgr >();
auto pConfig = framework()->get< ConfigMgr >();
auto shouldWatch = pConfig->getValue< bool >( "Scripts", "HotSwap", true );
if( !shouldWatch )
return;
@ -100,19 +99,18 @@ void Sapphire::Scripting::ScriptMgr::watchDirectories()
m_firstScriptChangeNotificiation = true;
return;
}
auto pLog = g_fw.get< Logger >();
for( auto path : paths )
for( const auto& path : paths )
{
if( m_nativeScriptMgr->isModuleLoaded( path.stem().string() ) )
{
pLog->debug( "Reloading changed script: " + path.stem().string() );
Logger::debug( "Reloading changed script: " + path.stem().string() );
m_nativeScriptMgr->queueScriptReload( path.stem().string() );
}
else
{
pLog->debug( "Loading new script: " + path.stem().string() );
Logger::debug( "Loading new script: " + path.stem().string() );
m_nativeScriptMgr->loadScript( path.string() );
}
@ -123,13 +121,11 @@ void Sapphire::Scripting::ScriptMgr::watchDirectories()
bool Sapphire::Scripting::ScriptMgr::loadDir( const std::string& dirname, std::set< std::string >& files,
const std::string& ext )
{
auto pLog = g_fw.get< Logger >();
pLog->info( "ScriptMgr: loading scripts from " + dirname );
Logger::info( "ScriptMgr: loading scripts from " + dirname );
if( !fs::exists( dirname ) )
{
pLog->error( "ScriptMgr: scripts directory doesn't exist" );
Logger::error( "ScriptMgr: scripts directory doesn't exist" );
return false;
}
@ -145,11 +141,11 @@ bool Sapphire::Scripting::ScriptMgr::loadDir( const std::string& dirname, std::s
}
}
if( files.size() )
if( !files.empty() )
return true;
else
{
pLog->error( "ScriptMgr: couldn't find any script modules" );
Logger::error( "ScriptMgr: couldn't find any script modules" );
return false;
}
}
@ -263,8 +259,10 @@ bool Sapphire::Scripting::ScriptMgr::onEventHandlerTradeReturn( Entity::Player&
bool Sapphire::Scripting::ScriptMgr::onEventItem( Entity::Player& player, uint32_t eventItemId,
uint32_t eventId, uint32_t castTime, uint64_t targetId )
{
auto pEventMgr = framework()->get< World::Manager::EventMgr >();
std::string eventName = "onEventItem";
std::string objName = Event::getEventName( eventId );
std::string objName = pEventMgr->getEventName( eventId );
player.sendDebug( "Calling: " + objName + "." + eventName + " - " + std::to_string( eventId ) );
auto script = m_nativeScriptMgr->getScript< Sapphire::ScriptAPI::EventScript >( eventId );
@ -281,8 +279,9 @@ bool Sapphire::Scripting::ScriptMgr::onEventItem( Entity::Player& player, uint32
bool Sapphire::Scripting::ScriptMgr::onMobKill( Entity::Player& player, uint16_t nameId )
{
std::string eventName = "onBnpcKill_" + std::to_string( nameId );
auto pEventMgr = framework()->get< World::Manager::EventMgr >();
std::string eventName = "onBnpcKill_" + std::to_string( nameId );
// loop through all active quests and try to call available onMobKill callbacks
for( size_t i = 0; i < 30; i++ )
@ -296,7 +295,7 @@ bool Sapphire::Scripting::ScriptMgr::onMobKill( Entity::Player& player, uint16_t
auto script = m_nativeScriptMgr->getScript< Sapphire::ScriptAPI::EventScript >( questId );
if( script )
{
std::string objName = Event::getEventName( 0x00010000 | questId );
std::string objName = pEventMgr->getEventName( 0x00010000 | questId );
player.sendDebug( "Calling: " + objName + "." + eventName );

View file

@ -7,11 +7,12 @@
#include <Common.h>
#include "Forwards.h"
#include "Manager/BaseManager.h"
namespace Sapphire::Scripting
{
class ScriptMgr
class ScriptMgr : public World::Manager::BaseManager
{
private:
/*!
@ -28,7 +29,7 @@ namespace Sapphire::Scripting
bool m_firstScriptChangeNotificiation;
public:
ScriptMgr();
ScriptMgr( FrameworkPtr pFw );
~ScriptMgr();

View file

@ -37,6 +37,7 @@
#include "Manager/PlayerMgr.h"
#include "Manager/ShopMgr.h"
#include "Manager/InventoryMgr.h"
#include "Manager/EventMgr.h"
using namespace Sapphire::World::Manager;
@ -60,15 +61,14 @@ size_t Sapphire::World::ServerMgr::getSessionCount() const
bool Sapphire::World::ServerMgr::loadSettings( int32_t argc, char* argv[] )
{
auto pLog = framework()->get< Sapphire::Logger >();
auto pConfig = framework()->get< Sapphire::ConfigMgr >();
pLog->info( "Loading config " + m_configName );
Logger::info( "Loading config " + m_configName );
if( !pConfig->loadConfig( m_configName ) )
{
pLog->fatal( "Error loading config " + m_configName );
pLog->fatal( "If this is the first time starting the server, we've copied the default one for your editing pleasure." );
Logger::fatal( "Error loading config " + m_configName );
Logger::fatal( "If this is the first time starting the server, we've copied the default one for your editing pleasure." );
return false;
}
@ -83,10 +83,7 @@ void Sapphire::World::ServerMgr::run( int32_t argc, char* argv[] )
using namespace Sapphire;
using namespace Sapphire::World;
auto pLog = std::make_shared< Logger >();
pLog->setLogPath( "log/world" );
pLog->init();
framework()->set< Logger >( pLog );
Logger::init( "log/world" );
printBanner();
@ -94,17 +91,17 @@ void Sapphire::World::ServerMgr::run( int32_t argc, char* argv[] )
framework()->set< ConfigMgr >( pConfig );
if( !loadSettings( argc, argv ) )
{
pLog->fatal( "Unable to load settings!" );
Logger::fatal( "Unable to load settings!" );
return;
}
pLog->info( "Setting up generated EXD data" );
Logger::info( "Setting up generated EXD data" );
auto pExdData = std::make_shared< Data::ExdDataGenerated >();
auto dataPath = pConfig->getValue< std::string >( "GlobalParameters", "DataPath", "" );
if( !pExdData->init( dataPath ) )
{
pLog->fatal( "Error setting up generated EXD data. Make sure that DataPath is set correctly in config.ini" );
pLog->fatal( "DataPath: " + dataPath );
Logger::fatal( "Error setting up generated EXD data. Make sure that DataPath is set correctly in config.ini" );
Logger::fatal( "DataPath: " + dataPath );
return;
}
framework()->set< Data::ExdDataGenerated >( pExdData );
@ -123,43 +120,43 @@ void Sapphire::World::ServerMgr::run( int32_t argc, char* argv[] )
loader.addDb( *pDb, info );
if( !loader.initDbs() )
{
pLog->fatal( "Database not initialized properly!" );
Logger::fatal( "Database not initialized properly!" );
return;
}
framework()->set< Db::DbWorkerPool< Db::ZoneDbConnection > >( pDb );
pLog->info( "LinkshellMgr: Caching linkshells" );
Logger::info( "LinkshellMgr: Caching linkshells" );
auto pLsMgr = std::make_shared< Manager::LinkshellMgr >( framework() );
if( !pLsMgr->loadLinkshells() )
{
pLog->fatal( "Unable to load linkshells!" );
Logger::fatal( "Unable to load linkshells!" );
return;
}
framework()->set< Manager::LinkshellMgr >( pLsMgr );
auto pScript = std::make_shared< Scripting::ScriptMgr >();
auto pScript = std::make_shared< Scripting::ScriptMgr >( framework() );
if( !pScript->init() )
{
pLog->fatal( "Failed to setup scripts!" );
Logger::fatal( "Failed to setup scripts!" );
return;
}
framework()->set< Scripting::ScriptMgr >( pScript );
pLog->info( "TerritoryMgr: Setting up zones" );
Logger::info( "TerritoryMgr: Setting up zones" );
auto pTeriMgr = std::make_shared< Manager::TerritoryMgr >( framework() );
auto pHousingMgr = std::make_shared< Manager::HousingMgr >( framework() );
framework()->set< Manager::HousingMgr >( pHousingMgr );
framework()->set< Manager::TerritoryMgr >( pTeriMgr );
if( !pTeriMgr->init() )
{
pLog->fatal( "Failed to setup zones!" );
Logger::fatal( "Failed to setup zones!" );
return;
}
loadBNpcTemplates();
Network::HivePtr hive( new Network::Hive() );
Network::addServerToHive< Network::GameConnection >( m_ip, m_port, hive );
Network::addServerToHive< Network::GameConnection >( m_ip, m_port, hive, framework() );
std::vector< std::thread > thread_list;
thread_list.emplace_back( std::thread( std::bind( &Network::Hive::Run, hive.get() ) ) );
@ -168,13 +165,15 @@ void Sapphire::World::ServerMgr::run( int32_t argc, char* argv[] )
auto pPlayerMgr = std::make_shared< Manager::PlayerMgr >( framework() );
auto pShopMgr = std::make_shared< Manager::ShopMgr >( framework() );
auto pInventoryMgr = std::make_shared< Manager::InventoryMgr >();
auto pEventMgr = std::make_shared< Manager::EventMgr >( framework() );
framework()->set< DebugCommandMgr >( pDebugCom );
framework()->set< Manager::PlayerMgr >( pPlayerMgr );
framework()->set< Manager::ShopMgr >( pShopMgr );
framework()->set< Manager::InventoryMgr >( pInventoryMgr );
framework()->set< Manager::EventMgr >( pEventMgr );
pLog->info( "World server running on " + m_ip + ":" + std::to_string( m_port ) );
Logger::info( "World server running on " + m_ip + ":" + std::to_string( m_port ) );
mainLoop();
@ -197,19 +196,16 @@ void Sapphire::World::ServerMgr::setWorldId( uint16_t worldId )
void Sapphire::World::ServerMgr::printBanner() const
{
auto pLog = framework()->get< Sapphire::Logger >();
pLog->info( "===========================================================" );
pLog->info( "Sapphire Server Project " );
pLog->info( "Version: " + Version::VERSION );
pLog->info( "Git Hash: " + Version::GIT_HASH );
pLog->info( "Compiled: " __DATE__ " " __TIME__ );
pLog->info( "===========================================================" );
Logger::info( "===========================================================" );
Logger::info( "Sapphire Server Project " );
Logger::info( "Version: " + Version::VERSION );
Logger::info( "Git Hash: " + Version::GIT_HASH );
Logger::info( "Compiled: " __DATE__ " " __TIME__ );
Logger::info( "===========================================================" );
}
void Sapphire::World::ServerMgr::mainLoop()
{
auto pLog = framework()->get< Logger >();
auto pTeriMgr = framework()->get< TerritoryMgr >();
auto pScriptMgr = framework()->get< Scripting::ScriptMgr >();
auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >();
@ -245,7 +241,6 @@ void Sapphire::World::ServerMgr::mainLoop()
m_lastDBPingTime = currTime;
}
auto it = m_sessionMapById.begin();
for( ; it != m_sessionMapById.end(); )
{
@ -259,7 +254,7 @@ void Sapphire::World::ServerMgr::mainLoop()
it->second->close();
// if( it->second.unique() )
{
pLog->info( "[" + std::to_string( it->second->getId() ) + "] Session removal" );
Logger::info( "[" + std::to_string( it->second->getId() ) + "] Session removal" );
it = m_sessionMapById.erase( it );
removeSession( pPlayer->getName() );
continue;
@ -269,7 +264,7 @@ void Sapphire::World::ServerMgr::mainLoop()
// remove sessions that simply timed out
if( diff > 20 )
{
pLog->info( "[" + std::to_string( it->second->getId() ) + "] Session time out" );
Logger::info( "[" + std::to_string( it->second->getId() ) + "] Session time out" );
it->second->close();
// if( it->second.unique() )
@ -290,8 +285,6 @@ void Sapphire::World::ServerMgr::mainLoop()
bool Sapphire::World::ServerMgr::createSession( uint32_t sessionId )
{
auto pLog = framework()->get< Sapphire::Logger >();
std::lock_guard< std::mutex > lock( m_sessionMutex );
const auto session_id_str = std::to_string( sessionId );
@ -300,18 +293,18 @@ bool Sapphire::World::ServerMgr::createSession( uint32_t sessionId )
if( it != m_sessionMapById.end() )
{
pLog->error( "[" + session_id_str + "] Error creating session" );
Logger::error( "[" + session_id_str + "] Error creating session" );
return false;
}
pLog->info( "[" + session_id_str + "] Creating new session" );
Logger::info( "[" + session_id_str + "] Creating new session" );
std::shared_ptr< Session > newSession( new Session( sessionId ) );
m_sessionMapById[ sessionId ] = newSession;
if( !newSession->loadPlayer() )
{
pLog->error( "[" + session_id_str + "] Error loading player " + session_id_str );
Logger::error( "[" + session_id_str + "] Error loading player " + session_id_str );
return false;
}
@ -391,7 +384,6 @@ void Sapphire::World::ServerMgr::loadBNpcTemplates()
{
auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >();
auto pTeriMgr = framework()->get< TerritoryMgr >();
auto pLog = framework()->get< Logger >();
auto stmt = pDb->getPreparedStatement( Db::ZoneDbStatements::ZONE_SEL_BNPCTEMPLATES );
@ -426,7 +418,7 @@ void Sapphire::World::ServerMgr::loadBNpcTemplates()
m_bNpcTemplateMap[ name ] = bnpcTemplate;
}
pLog->debug( "BNpc Templates loaded: " + std::to_string( m_bNpcTemplateMap.size() ) );
Logger::debug( "BNpc Templates loaded: " + std::to_string( m_bNpcTemplateMap.size() ) );
}

View file

@ -117,7 +117,6 @@ void Sapphire::World::Session::updateLastSqlTime()
void Sapphire::World::Session::startReplay( const std::string& path )
{
auto pLog = g_fw.get< Logger >();
if( !fs::exists( path ) )
{
getPlayer()->sendDebug( "Couldn't find folder." );
@ -154,7 +153,7 @@ void Sapphire::World::Session::startReplay( const std::string& path )
m_replayCache.push_back( std::tuple< uint64_t, std::string >(
Util::getTimeMs() + ( std::get< 0 >( set ) - startTime ), std::get< 1 >( set ) ) );
pLog->info( "Registering " + std::get< 1 >( set ) + " for " + std::to_string( std::get< 0 >( set ) - startTime ) );
Logger::info( "Registering " + std::get< 1 >( set ) + " for " + std::to_string( std::get< 0 >( set ) - startTime ) );
}
getPlayer()->sendDebug( "Registered " + std::to_string( m_replayCache.size() ) + " sets for replay" );

View file

@ -37,7 +37,6 @@ void Sapphire::Cell::init( uint32_t x, uint32_t y, ZonePtr pZone )
void Sapphire::Cell::addActor( Entity::ActorPtr pAct )
{
auto pLog = g_fw.get< Sapphire::Logger >();
if( pAct->isPlayer() )
++m_playerCount;
@ -46,7 +45,6 @@ void Sapphire::Cell::addActor( Entity::ActorPtr pAct )
void Sapphire::Cell::removeActor( Entity::ActorPtr pAct )
{
auto pLog = g_fw.get< Sapphire::Logger >();
if( pAct->isPlayer() )
--m_playerCount;

View file

@ -25,7 +25,7 @@ Sapphire::House::House( uint32_t houseId, uint32_t landSetId, Common::LandIdent
if( !res->next() )
{
g_fw.get< Sapphire::Logger >()->info( "Creating house House#" + std::to_string( houseId ) + " in LandSet#" + std::to_string( landSetId ) );
Logger::info( "Creating house House#" + std::to_string( houseId ) + " in LandSet#" + std::to_string( landSetId ) );
auto stmt = pDB->getPreparedStatement( Db::HOUSING_HOUSE_INS );

View file

@ -51,8 +51,7 @@ bool Housing::HousingInteriorTerritory::init()
void Housing::HousingInteriorTerritory::onPlayerZoneIn( Entity::Player& player )
{
auto pHousingMgr = g_fw.get< HousingMgr >();
auto pLog = g_fw.get< Logger >();
pLog->debug(
Logger::debug(
"HousingInteriorTerritory::onPlayerZoneIn: Zone#" + std::to_string( getGuId() ) + "|" + std::to_string( getTerritoryTypeId() ) +
", Entity#" + std::to_string( player.getId() ) );

View file

@ -107,8 +107,7 @@ Sapphire::HousingZone::~HousingZone() = default;
void Sapphire::HousingZone::onPlayerZoneIn( Entity::Player& player )
{
auto pLog = g_fw.get< Logger >();
pLog->debug(
Logger::debug(
"HousingZone::onPlayerZoneIn: Zone#" + std::to_string( getGuId() ) + "|" + std::to_string( getTerritoryTypeId() ) +
", Entity#" + std::to_string( player.getId() ) );

View file

@ -74,10 +74,9 @@ Sapphire::Data::ExdDataGenerated::InstanceContentPtr Sapphire::InstanceContent::
void Sapphire::InstanceContent::onPlayerZoneIn( Entity::Player& player )
{
auto pLog = g_fw.get< Logger >();
pLog->debug( "InstanceContent::onPlayerZoneIn: Zone#" + std::to_string( getGuId() ) + "|"
+ std::to_string( getInstanceContentId() ) +
+", Entity#" + std::to_string( player.getId() ) );
Logger::debug( "InstanceContent::onPlayerZoneIn: Zone#" + std::to_string( getGuId() ) + "|"
+ std::to_string( getInstanceContentId() ) +
+", Entity#" + std::to_string( player.getId() ) );
// mark player as "bound by duty"
player.setStateFlag( PlayerStateFlag::BoundByDuty );
@ -91,10 +90,9 @@ void Sapphire::InstanceContent::onPlayerZoneIn( Entity::Player& player )
void Sapphire::InstanceContent::onLeaveTerritory( Entity::Player& player )
{
auto pLog = g_fw.get< Logger >();
pLog->debug( "InstanceContent::onLeaveTerritory: Zone#" + std::to_string( getGuId() ) + "|"
+ std::to_string( getInstanceContentId() ) +
+", Entity#" + std::to_string( player.getId() ) );
Logger::debug( "InstanceContent::onLeaveTerritory: Zone#" + std::to_string( getGuId() ) + "|"
+ std::to_string( getInstanceContentId() ) +
+", Entity#" + std::to_string( player.getId() ) );
sendDirectorClear( player );
player.setDirectorInitialized( false );
@ -315,16 +313,15 @@ void Sapphire::InstanceContent::onRegisterEObj( Entity::EventObjectPtr object )
if( object->getObjectId() == 2000182 ) // start
m_pEntranceEObj = object;
auto pLog = g_fw.get< Logger >();
auto pExdData = g_fw.get< Data::ExdDataGenerated >();
auto objData = pExdData->get< Sapphire::Data::EObj >( object->getObjectId() );
if( objData )
// todo: data should be renamed to eventId
m_eventIdToObjectMap[ objData->data ] = object;
else
pLog->error( "InstanceContent::onRegisterEObj Zone " +
m_internalName + ": No EObj data found for EObj with ID: " +
std::to_string( object->getObjectId() ) );
Logger::error( "InstanceContent::onRegisterEObj Zone " +
m_internalName + ": No EObj data found for EObj with ID: " +
std::to_string( object->getObjectId() ) );
}
bool Sapphire::InstanceContent::hasPlayerPreviouslySpawned( Entity::Player& player ) const

View file

@ -28,7 +28,7 @@ extern Sapphire::Framework g_fw;
using namespace Sapphire::Common;
Sapphire::Land::Land( uint16_t territoryTypeId, uint8_t wardNum, uint8_t landId, uint32_t landSetId,
Sapphire::Data::HousingLandSetPtr info ) :
Sapphire::Data::HousingLandSetPtr info ) :
m_currentPrice( 0 ),
m_minPrice( 0 ),
m_nextDrop( static_cast< uint32_t >( Util::getTimeSeconds() ) + 21600 ),
@ -119,7 +119,7 @@ void Sapphire::Land::loadItemContainerContents()
return;
auto ident = *reinterpret_cast< uint64_t* >( &m_landIdent );
g_fw.get< Sapphire::Logger >()->debug( "Loading housing inventory for ident: " + std::to_string( ident ) );
Logger::debug( "Loading housing inventory for ident: " + std::to_string( ident ) );
auto pDB = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >();

View file

@ -580,7 +580,6 @@ void Sapphire::Zone::updateActorPosition( Entity::Actor& actor )
if( pOldCell )
{
auto pLog = g_fw.get< Logger >();
pOldCell->removeActor( actor.shared_from_this() );
}
@ -678,16 +677,14 @@ void Sapphire::Zone::updateInRangeSet( Entity::ActorPtr pActor, Cell* pCell )
void Sapphire::Zone::onPlayerZoneIn( Entity::Player& player )
{
auto pLog = g_fw.get< Logger >();
pLog->debug(
Logger::debug(
"Zone::onEnterTerritory: Zone#" + std::to_string( getGuId() ) + "|" + std::to_string( getTerritoryTypeId() ) +
+", Entity#" + std::to_string( player.getId() ) );
}
void Sapphire::Zone::onLeaveTerritory( Entity::Player& player )
{
auto pLog = g_fw.get< Logger >();
pLog->debug(
Logger::debug(
"Zone::onLeaveTerritory: Zone#" + std::to_string( getGuId() ) + "|" + std::to_string( getTerritoryTypeId() ) +
+", Entity#" + std::to_string( player.getId() ) );
}
@ -716,7 +713,7 @@ void Sapphire::Zone::registerEObj( Entity::EventObjectPtr object )
{
if( !object )
return;
auto pLog = g_fw.get< Logger >();
object->setId( getNextEObjId() );
pushActor( object );
@ -724,7 +721,7 @@ void Sapphire::Zone::registerEObj( Entity::EventObjectPtr object )
onRegisterEObj( object );
//pLog->debug( "Registered instance eobj: " + std::to_string( object->getId() ) );
//Logger::debug( "Registered instance eobj: " + std::to_string( object->getId() ) );
}
Sapphire::Entity::EventObjectPtr Sapphire::Zone::getEObj( uint32_t objId )