1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-28 15:17:46 +00:00
sapphire/src/servers/sapphire_zone/Event/EventHelper.cpp

102 lines
2.7 KiB
C++
Raw Normal View History

2018-03-06 22:22:19 +01:00
#include <Common.h>
#include <Exd/ExdDataGenerated.h>
2018-10-26 09:40:47 +02:00
#include <Util/Util.h>
2018-06-02 15:52:35 +02:00
#include "Framework.h"
#include "EventHelper.h"
#include "EventHandler.h"
2018-06-02 15:52:35 +02:00
2018-03-09 00:06:44 +01:00
extern Core::Framework g_fw;
2017-08-08 13:53:47 +02:00
using namespace Core::Common;
std::string Core::Event::getEventName( uint32_t eventId )
{
auto pExdData = g_fw.get< Data::ExdDataGenerated >();
uint16_t eventType = eventId >> 16;
2017-08-08 13:53:47 +02:00
auto unknown = std::string{ "unknown" };
2017-11-28 17:16:12 +01:00
switch( eventType )
{
case Event::EventHandler::EventHandlerType::Quest:
{
2018-03-09 00:06:44 +01:00
auto questInfo = pExdData->get< Core::Data::Quest >( eventId );
2017-11-28 17:16:12 +01:00
if( !questInfo )
return unknown + "Quest";
2017-11-28 17:16:12 +01:00
std::string name = questInfo->id;
2017-11-28 17:16:12 +01:00
std::size_t pos = name.find_first_of( "_" );
2017-08-08 13:53:47 +02:00
2018-02-03 01:51:46 +01:00
return name.substr( 0, pos );
}
case Event::EventHandler::EventHandlerType::CustomTalk:
{
2018-03-09 00:06:44 +01:00
auto customTalkInfo = pExdData->get< Core::Data::CustomTalk >( eventId );
2017-11-28 17:16:12 +01:00
if( !customTalkInfo )
return unknown + "CustomTalk";
2017-08-08 13:53:47 +02:00
2018-01-31 02:06:11 +11:00
std::string name = customTalkInfo->name;
2017-11-28 17:16:12 +01:00
std::size_t pos = name.find_first_of( "_" );
2017-08-08 13:53:47 +02:00
2018-01-31 02:06:11 +11:00
return customTalkInfo->name.substr( 0, pos );
}
case Event::EventHandler::EventHandlerType::Opening:
{
2018-03-09 00:06:44 +01:00
auto openingInfo = pExdData->get< Core::Data::Opening >( eventId );
2017-08-08 13:53:47 +02:00
if( openingInfo )
return openingInfo->name;
2017-11-28 17:16:12 +01:00
return unknown + "Opening";
}
case Event::EventHandler::EventHandlerType::Aetheryte:
{
2018-03-09 00:06:44 +01:00
auto aetherInfo = pExdData->get< Core::Data::Aetheryte >( eventId & 0xFFFF );
2017-08-08 13:53:47 +02:00
if( aetherInfo->isAetheryte )
return "Aetheryte";
2017-08-08 13:53:47 +02:00
return "Aethernet";
}
case Event::EventHandler::EventHandlerType::ICDirector:
{
2018-03-09 00:06:44 +01:00
auto contentInfo = pExdData->get< Core::Data::InstanceContent >( eventId & 0xFFFF );
std::string name = contentInfo->name;
2018-10-26 09:40:47 +02:00
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:
{
2018-07-12 01:39:16 +02:00
auto warpInfo = pExdData->get< Core::Data::Warp >( eventId );
if( warpInfo )
return "WarpTaxi";
2018-07-12 01:39:16 +02:00
return unknown + "ChocoboWarp"; //who know
}
case Event::EventHandler::EventHandlerType::Shop:
{
2018-07-12 01:39:16 +02:00
auto shopInfo = pExdData->get< Core::Data::GilShop >( eventId );
std::string name = shopInfo->name;
if( shopInfo )
return name;
2018-07-17 16:11:09 +02:00
return unknown + "GilShop";
}
default:
{
2017-11-28 17:16:12 +01:00
return unknown;
}
}
2017-08-08 13:53:47 +02:00
}
uint32_t Core::Event::mapEventActorToRealActor( uint32_t eventActorId )
{
auto pExdData = g_fw.get< Data::ExdDataGenerated >();
auto levelInfo = pExdData->get< Core::Data::Level >( eventActorId );
if( levelInfo )
2018-09-18 22:45:48 +02:00
return levelInfo->object;
2017-08-08 13:53:47 +02:00
return 0;
2017-08-08 13:53:47 +02:00
}