1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-25 05:57:45 +00:00

Actually generate a pseudostruct

This commit is contained in:
Mordred Admin 2017-10-11 15:03:08 +02:00
parent ae9bdd6674
commit e4cfb9ffef

View file

@ -25,6 +25,8 @@ Core::Data::ExdData g_exdData;
const std::string datLocation( "/opt/sapphire_3_15_0/bin/sqpack" ); 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\\ffxiv" ); //const std::string datLocation( "C:\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack\\ffxiv" );
std::map< uint8_t, std::string > g_typeMap;
std::string generateEnum( const std::string& exd ) std::string generateEnum( const std::string& exd )
{ {
@ -33,16 +35,43 @@ std::string generateEnum( const std::string& exd )
auto exh = cat.get_header(); auto exh = cat.get_header();
auto exhMem = exh.get_exh_members(); auto exhMem = exh.get_exh_members();
int count = 0;
std::string result = "struct " + exd +"\n{\n";
for( auto member : exhMem ) for( auto member : exhMem )
{ {
g_log.info( std::to_string( static_cast< uint8_t >( member.type ) ) + "\n" ); auto typei = static_cast< uint8_t >( member.type );
auto it = g_typeMap.find( typei );
std::string type;
if( it != g_typeMap.end() )
type = it->second;
else
type = "bool(" + std::to_string( static_cast< uint8_t >( member.type ) ) + ")";
result += " " + type + " field" + std::to_string( count ) + ";\n";
count++;
} }
return ""; result += "};\n";
return result;
} }
int main() int main()
{ {
g_typeMap[0] = "char";
g_typeMap[1] = "bool";
g_typeMap[2] = "int8_t";
g_typeMap[3] = "uint8_t";
g_typeMap[4] = "int16_t";
g_typeMap[5] = "uint16_t";
g_typeMap[6] = "int32";
g_typeMap[7] = "uint32_t";
g_typeMap[9] = "float";
g_typeMap[11] = "uint64_t";
g_log.init(); g_log.init();
@ -57,7 +86,7 @@ int main()
std::string result = std::string result =
"/* This file has been automatically generated.\n Changes will be lost upon regeneration.\n To change the content edit tools/exd_struct_gen */\n"; "/* This file has been automatically generated.\n Changes will be lost upon regeneration.\n To change the content edit tools/exd_struct_gen */\n";
result += generateEnum( "Quest" ); result += generateEnum( "TerritoryType" );
g_log.info( result ); g_log.info( result );
return 0; return 0;
} }