2017-12-18 12:36:52 +01:00
|
|
|
|
#include <common/Common.h>
|
2018-01-31 02:06:11 +11:00
|
|
|
|
#include <common/Exd/ExdDataGenerated.h>
|
2018-03-02 07:22:25 -03:00
|
|
|
|
#include "Framework.h"
|
|
|
|
|
#include "EventHelper.h"
|
|
|
|
|
#include "EventHandler.h"
|
2018-02-24 15:19:32 +01:00
|
|
|
|
#include <boost/range/algorithm/remove_if.hpp>
|
|
|
|
|
#include <boost/algorithm/string/classification.hpp>
|
|
|
|
|
|
2018-03-02 07:22:25 -03:00
|
|
|
|
extern Core::Framework g_framework;
|
2017-08-08 13:53:47 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
using namespace Core::Common;
|
|
|
|
|
|
|
|
|
|
std::string Core::Event::getEventName( uint32_t eventId )
|
|
|
|
|
{
|
|
|
|
|
uint16_t eventType = eventId >> 16;
|
|
|
|
|
|
2017-11-28 17:16:12 +01:00
|
|
|
|
auto unknown = std::string{ "unknown" };
|
|
|
|
|
|
2017-08-08 13:53:47 +02:00
|
|
|
|
switch( eventType )
|
|
|
|
|
{
|
2018-01-10 10:47:47 +01:00
|
|
|
|
case Event::EventHandler::EventHandlerType::Quest:
|
2017-08-08 13:53:47 +02:00
|
|
|
|
{
|
2018-03-02 07:22:25 -03:00
|
|
|
|
auto questInfo = g_framework.getExdDataGen().get< Core::Data::Quest >( eventId );
|
2017-11-28 17:16:12 +01:00
|
|
|
|
if( !questInfo )
|
|
|
|
|
return unknown + "Quest";
|
|
|
|
|
|
2018-02-02 17:37:51 +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 );
|
2017-08-08 13:53:47 +02:00
|
|
|
|
}
|
2018-01-10 10:47:47 +01:00
|
|
|
|
case Event::EventHandler::EventHandlerType::CustomTalk:
|
2017-08-08 13:53:47 +02:00
|
|
|
|
{
|
2018-03-02 07:22:25 -03:00
|
|
|
|
auto customTalkInfo = g_framework.getExdDataGen().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 );
|
2017-08-08 13:53:47 +02:00
|
|
|
|
}
|
2018-01-10 10:47:47 +01:00
|
|
|
|
case Event::EventHandler::EventHandlerType::Opening:
|
2017-08-08 13:53:47 +02:00
|
|
|
|
{
|
2018-03-02 07:22:25 -03:00
|
|
|
|
auto openingInfo = g_framework.getExdDataGen().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";
|
2017-08-08 13:53:47 +02:00
|
|
|
|
}
|
2018-01-10 10:47:47 +01:00
|
|
|
|
case Event::EventHandler::EventHandlerType::Aetheryte:
|
2017-08-08 13:53:47 +02:00
|
|
|
|
{
|
2018-03-02 07:22:25 -03:00
|
|
|
|
auto aetherInfo = g_framework.getExdDataGen().get< Core::Data::Aetheryte >( eventId & 0xFFFF );
|
2017-08-08 13:53:47 +02:00
|
|
|
|
if( aetherInfo->isAetheryte )
|
|
|
|
|
return "Aetheryte";
|
|
|
|
|
return "Aethernet";
|
|
|
|
|
}
|
2018-02-24 15:19:32 +01:00
|
|
|
|
case Event::EventHandler::EventHandlerType::ICDirector:
|
|
|
|
|
{
|
2018-03-06 00:10:36 +01:00
|
|
|
|
auto contentInfo = g_framework.getExdDataGen().get< Core::Data::InstanceContent >( eventId & 0xFFFF );
|
2018-02-24 15:19:32 +01:00
|
|
|
|
std::string name = contentInfo->name;
|
|
|
|
|
|
2018-02-25 01:23:40 +01:00
|
|
|
|
name.erase( boost::remove_if( name, boost::is_any_of( "★_ '()[]-\x1a\x1\x2\x1f\x1\x3.:" ) ), name.end() );
|
|
|
|
|
name[0] = toupper( name[0] );
|
2018-02-24 15:19:32 +01:00
|
|
|
|
return name;
|
|
|
|
|
}
|
2018-01-28 00:30:16 +01:00
|
|
|
|
|
2018-01-10 10:47:47 +01:00
|
|
|
|
case Event::EventHandler::EventHandlerType::Warp:
|
2017-08-08 13:53:47 +02:00
|
|
|
|
{
|
|
|
|
|
return "ChocoboTaxi";
|
|
|
|
|
}
|
|
|
|
|
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 )
|
|
|
|
|
{
|
2018-03-02 07:22:25 -03:00
|
|
|
|
auto levelInfo = g_framework.getExdDataGen().get< Core::Data::Level >( eventActorId );
|
2017-08-08 13:53:47 +02:00
|
|
|
|
if( levelInfo )
|
2018-01-31 11:43:22 +01:00
|
|
|
|
return levelInfo->objectKey;
|
2017-08-08 13:53:47 +02:00
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|