1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-27 06:47:45 +00:00
sapphire/src/world/Manager/EventMgr.cpp
2018-12-23 03:53:08 +01:00

108 lines
3.1 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <Common.h>
#include <Exd/ExdDataGenerated.h>
#include <Util/Util.h>
#include "Framework.h"
#include "EventMgr.h"
#include "Event/EventHandler.h"
using namespace Sapphire::Common;
Sapphire::World::Manager::EventMgr::EventMgr( Sapphire::FrameworkPtr pFw ) :
BaseManager( pFw )
{
}
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" };
switch( eventType )
{
case Event::EventHandler::EventHandlerType::Quest:
{
auto questInfo = pExdData->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:
{
auto customTalkInfo = pExdData->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:
{
auto openingInfo = pExdData->get< Sapphire::Data::Opening >( eventId );
if( openingInfo )
return openingInfo->name;
return unknown + "Opening";
}
case Event::EventHandler::EventHandlerType::Aetheryte:
{
auto aetherInfo = pExdData->get< Sapphire::Data::Aetheryte >( eventId & 0xFFFF );
if( aetherInfo->isAetheryte )
return "Aetheryte";
return "Aethernet";
}
case Event::EventHandler::EventHandlerType::ICDirector:
{
auto contentInfo = pExdData->get< Sapphire::Data::InstanceContent >( eventId & 0xFFFF );
std::string name = contentInfo->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:
{
auto warpInfo = pExdData->get< Sapphire::Data::Warp >( eventId );
if( warpInfo )
return "WarpTaxi";
return unknown + "ChocoboWarp"; //who know
}
case Event::EventHandler::EventHandlerType::Shop:
{
auto shopInfo = pExdData->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;
}
}
}
uint32_t Sapphire::World::Manager::EventMgr::mapEventActorToRealActor( uint32_t eventActorId )
{
auto pExdData = framework()->get< Data::ExdDataGenerated >();
auto levelInfo = pExdData->get< Sapphire::Data::Level >( eventActorId );
if( levelInfo )
return levelInfo->object;
return 0;
}