1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-03 17:27:47 +00:00
sapphire/src/world/Manager/EventMgr.cpp

116 lines
3.4 KiB
C++
Raw Normal View History

#include <Common.h>
#include <Exd/ExdDataGenerated.h>
#include <Util/Util.h>
2020-03-01 01:00:57 +11:00
#include <Service.h>
2018-12-23 03:53:08 +01:00
#include "EventMgr.h"
#include "Event/EventHandler.h"
2018-12-23 03:53:08 +01:00
using namespace Sapphire::Common;
2018-12-23 03:53:08 +01:00
std::string Sapphire::World::Manager::EventMgr::getEventName( uint32_t eventId )
{
2020-03-01 01:00:57 +11:00
auto& exdData = Common::Service< Data::ExdDataGenerated >::ref();
uint16_t eventType = eventId >> 16;
auto unknown = std::string{ "unknown" };
switch( eventType )
{
case Event::EventHandler::EventHandlerType::Quest:
{
2020-03-01 01:00:57 +11:00
auto questInfo = exdData.get< Sapphire::Data::Quest >( eventId );
if( !questInfo )
return unknown + "Quest";
std::string name = questInfo->id;
std::size_t pos = name.find_first_of( "_" );
return name.substr( 0, pos );
}
case Event::EventHandler::EventHandlerType::CustomTalk:
{
2020-03-01 01:00:57 +11:00
auto customTalkInfo = exdData.get< Sapphire::Data::CustomTalk >( eventId );
if( !customTalkInfo )
return unknown + "CustomTalk";
std::string name = customTalkInfo->name;
std::size_t pos = name.find_first_of( "_" );
return customTalkInfo->name.substr( 0, pos );
}
case Event::EventHandler::EventHandlerType::Opening:
{
2020-03-01 01:00:57 +11:00
auto openingInfo = exdData.get< Sapphire::Data::Opening >( eventId );
if( openingInfo )
return openingInfo->name;
return unknown + "Opening";
}
case Event::EventHandler::EventHandlerType::Aetheryte:
{
2020-03-01 01:00:57 +11:00
auto aetherInfo = exdData.get< Sapphire::Data::Aetheryte >( eventId & 0xFFFF );
if( aetherInfo->isAetheryte )
return "Aetheryte";
return "Aethernet";
}
case Event::EventHandler::EventHandlerType::ICDirector:
{
2020-02-24 23:04:25 +11:00
// auto contentInfo = pExdData->get< Sapphire::Data::InstanceContent >( eventId & 0xFFFF );
return "InstanceContentDirector#" + std::to_string( eventId & 0xFFFF );
}
case Event::EventHandler::EventHandlerType::QuestBattleDirector:
{
2020-03-01 01:00:57 +11:00
auto qbInfo = exdData.get< Sapphire::Data::QuestBattle >( eventId & 0xFFFF );
if( !qbInfo )
return "unknown";
2020-03-01 01:00:57 +11:00
auto questInfo = exdData.get< Sapphire::Data::Quest >( qbInfo->quest );
if( !questInfo )
return "unknown";
std::string name = questInfo->name;
std::string remove( "˜…_ '()[]-\x1a\x1\x2\x1f\x1\x3.:" );
Util::eraseAllIn( name, remove );
name[ 0 ] = toupper( name[ 0 ] );
return name;
}
case Event::EventHandler::EventHandlerType::Warp:
{
2020-03-01 01:00:57 +11:00
auto warpInfo = exdData.get< Sapphire::Data::Warp >( eventId );
if( warpInfo )
return "WarpTaxi";
return unknown + "ChocoboWarp"; //who know
}
case Event::EventHandler::EventHandlerType::Shop:
{
2020-03-01 01:00:57 +11:00
auto shopInfo = exdData.get< Sapphire::Data::GilShop >( eventId );
return "GilShop" + std::to_string( eventId );
/*if( shopInfo )
{
if( shopInfo->name.empty() || shopInfo->name == " " )
return "GilShop" + std::to_string( eventId );
return shopInfo->name;
}*/
//return unknown + "GilShop";
}
default:
{
return unknown;
}
}
}
2018-12-23 03:53:08 +01:00
uint32_t Sapphire::World::Manager::EventMgr::mapEventActorToRealActor( uint32_t eventActorId )
{
2020-03-01 01:00:57 +11:00
auto& exdData = Common::Service< Data::ExdDataGenerated >::ref();
auto levelInfo = exdData.get< Sapphire::Data::Level >( eventActorId );
if( levelInfo )
return levelInfo->object;
return 0;
}