diff --git a/common/database.cpp b/common/database.cpp index c79ae0117..f5341c3c9 100644 --- a/common/database.cpp +++ b/common/database.cpp @@ -2224,7 +2224,7 @@ void Database::PurgeCharacterParcels() pd.char_id = r.char_id; { cereal::JSONOutputArchiveSingleLine ar(ss); - pd.serialize(ar); + ar(pd); } pel.event_data = ss.str(); diff --git a/common/events/player_event_logs.cpp b/common/events/player_event_logs.cpp index 41be9f7d1..0bbcb6818 100644 --- a/common/events/player_event_logs.cpp +++ b/common/events/player_event_logs.cpp @@ -189,7 +189,7 @@ void PlayerEventLogs::ProcessBatchQueue() try { std::stringstream ss(data); cereal::JSONInputArchive ar(ss); - out.serialize(ar); + ar(out); } catch (const std::exception &e) {} }; @@ -588,7 +588,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatAAGainedEvent(e, n); break; @@ -599,7 +599,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatAAPurchasedEvent(e, n); break; @@ -611,7 +611,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatCombineEvent(e, n); break; @@ -622,7 +622,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatDeathEvent(e, n); break; @@ -633,7 +633,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatDiscoverItemEvent(e, n); break; @@ -644,7 +644,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatDroppedItemEvent(e, n); break; @@ -662,7 +662,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatFishSuccessEvent(e, n); break; @@ -673,7 +673,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatForageSuccessEvent(e, n); break; @@ -684,7 +684,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatDestroyItemEvent(e, n); break; @@ -695,7 +695,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatLevelGainedEvent(e, n); break; @@ -706,7 +706,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatLevelLostEvent(e, n); break; @@ -717,7 +717,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatLootItemEvent(e, n); break; @@ -728,7 +728,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatGroundSpawnPickupEvent(e, n); break; @@ -739,7 +739,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatNPCHandinEvent(e, n); break; @@ -750,7 +750,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatEventSay(e, n); break; @@ -761,7 +761,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatGMCommand(e, n); break; @@ -772,7 +772,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatSkillUpEvent(e, n); break; @@ -783,7 +783,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatSplitMoneyEvent(e, n); break; @@ -794,7 +794,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatTaskAcceptEvent(e, n); break; @@ -805,7 +805,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatTaskCompleteEvent(e, n); break; @@ -816,7 +816,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatTaskUpdateEvent(e, n); break; @@ -827,7 +827,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatTradeEvent(e, n); break; @@ -838,7 +838,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatTraderPurchaseEvent(e, n); break; @@ -849,7 +849,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatTraderSellEvent(e, n); break; @@ -860,7 +860,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatResurrectAcceptEvent(e, n); break; @@ -871,7 +871,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatMerchantPurchaseEvent(e, n); @@ -883,7 +883,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatMerchantSellEvent(e, n); @@ -895,7 +895,7 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe { ss << e.player_event_log.event_data; cereal::JSONInputArchive ar(ss); - n.serialize(ar); + ar(n); } payload = PlayerEventDiscordFormatter::FormatZoningEvent(e, n); diff --git a/common/events/player_event_logs.h b/common/events/player_event_logs.h index 8a9ccb202..d7cbcafcf 100644 --- a/common/events/player_event_logs.h +++ b/common/events/player_event_logs.h @@ -58,7 +58,7 @@ public: std::stringstream ss; { cereal::JSONOutputArchiveSingleLine ar(ss); - e.serialize(ar); + ar(e); } n.event_type_name = PlayerEvent::EventName[t]; diff --git a/common/events/player_events.h b/common/events/player_events.h index 78b9fc10d..819424c00 100644 --- a/common/events/player_events.h +++ b/common/events/player_events.h @@ -7,6 +7,15 @@ #include "../rulesys.h" #include "../repositories/player_event_logs_repository.h" +#define CEREAL_NVP_IF_NONZERO(ar, name) \ +if ((name) != 0) ar(cereal::make_nvp(#name, name)) + +#define CEREAL_NVP_IF_NOT_EMPTY(ar, name) \ +if (!(name).empty()) ar(cereal::make_nvp(#name, name)) + +#define CEREAL_NVP_IF_TRUE(ar, name) \ +if ((name)) ar(cereal::make_nvp(#name, name)) + namespace PlayerEvent { enum EventType { @@ -225,8 +234,25 @@ namespace PlayerEvent { // cereal template - void serialize(Archive &ar) - { + void save(Archive& ar) const { + ar( + CEREAL_NVP(item_id), + CEREAL_NVP(item_name), + CEREAL_NVP(to_slot), + CEREAL_NVP(charges) + ); + + CEREAL_NVP_IF_NONZERO(ar, augment_1_id); + CEREAL_NVP_IF_NONZERO(ar, augment_2_id); + CEREAL_NVP_IF_NONZERO(ar, augment_3_id); + CEREAL_NVP_IF_NONZERO(ar, augment_4_id); + CEREAL_NVP_IF_NONZERO(ar, augment_5_id); + CEREAL_NVP_IF_NONZERO(ar, augment_6_id); + CEREAL_NVP_IF_TRUE(ar, attuned); + } + + template + void load(Archive& ar) { ar( CEREAL_NVP(item_id), CEREAL_NVP(item_name), @@ -285,8 +311,35 @@ namespace PlayerEvent { // cereal template - void serialize(Archive &ar) - { + void save(Archive& ar) const { + ar( + CEREAL_NVP(slot), + CEREAL_NVP(item_id) + ); + + CEREAL_NVP_IF_NONZERO(ar, augment_1_id); + CEREAL_NVP_IF_NOT_EMPTY(ar, augment_1_name); + CEREAL_NVP_IF_NONZERO(ar, augment_2_id); + CEREAL_NVP_IF_NOT_EMPTY(ar, augment_2_name); + CEREAL_NVP_IF_NONZERO(ar, augment_3_id); + CEREAL_NVP_IF_NOT_EMPTY(ar, augment_3_name); + CEREAL_NVP_IF_NONZERO(ar, augment_4_id); + CEREAL_NVP_IF_NOT_EMPTY(ar, augment_4_name); + CEREAL_NVP_IF_NONZERO(ar, augment_5_id); + CEREAL_NVP_IF_NOT_EMPTY(ar, augment_5_name); + CEREAL_NVP_IF_NONZERO(ar, augment_6_id); + CEREAL_NVP_IF_NOT_EMPTY(ar, augment_6_name); + + ar( + CEREAL_NVP(item_name), + CEREAL_NVP(charges) + ); + + CEREAL_NVP_IF_TRUE(ar, in_bag); + } + + template + void load(Archive& ar) { ar( CEREAL_NVP(slot), CEREAL_NVP(item_id), @@ -295,7 +348,7 @@ namespace PlayerEvent { CEREAL_NVP(augment_2_id), CEREAL_NVP(augment_2_name), CEREAL_NVP(augment_3_id), - CEREAL_NVP(augment_1_name), + CEREAL_NVP(augment_3_name), CEREAL_NVP(augment_4_id), CEREAL_NVP(augment_4_name), CEREAL_NVP(augment_5_id), @@ -444,10 +497,22 @@ namespace PlayerEvent { uint32 augment_6_id; std::string item_name; - // cereal template - void serialize(Archive &ar) - { + void save(Archive& ar) const { + ar(CEREAL_NVP(item_id)); + + CEREAL_NVP_IF_NONZERO(ar, augment_1_id); + CEREAL_NVP_IF_NONZERO(ar, augment_2_id); + CEREAL_NVP_IF_NONZERO(ar, augment_3_id); + CEREAL_NVP_IF_NONZERO(ar, augment_4_id); + CEREAL_NVP_IF_NONZERO(ar, augment_5_id); + CEREAL_NVP_IF_NONZERO(ar, augment_6_id); + + ar(CEREAL_NVP(item_name)); + } + + template + void load(Archive& ar) { ar( CEREAL_NVP(item_id), CEREAL_NVP(augment_1_id), @@ -471,10 +536,22 @@ namespace PlayerEvent { uint32 augment_6_id; std::string item_name; - // cereal template - void serialize(Archive &ar) - { + void save(Archive& ar) const { + ar(CEREAL_NVP(item_id)); + + CEREAL_NVP_IF_NONZERO(ar, augment_1_id); + CEREAL_NVP_IF_NONZERO(ar, augment_2_id); + CEREAL_NVP_IF_NONZERO(ar, augment_3_id); + CEREAL_NVP_IF_NONZERO(ar, augment_4_id); + CEREAL_NVP_IF_NONZERO(ar, augment_5_id); + CEREAL_NVP_IF_NONZERO(ar, augment_6_id); + + ar(CEREAL_NVP(item_name)); + } + + template + void load(Archive& ar) { ar( CEREAL_NVP(item_id), CEREAL_NVP(augment_1_id), @@ -501,10 +578,29 @@ namespace PlayerEvent { bool attuned; std::string reason; - // cereal template - void serialize(Archive &ar) - { + void save(Archive& ar) const { + ar( + CEREAL_NVP(item_id), + CEREAL_NVP(item_name), + CEREAL_NVP(charges) + ); + + CEREAL_NVP_IF_NONZERO(ar, augment_1_id); + CEREAL_NVP_IF_NONZERO(ar, augment_2_id); + CEREAL_NVP_IF_NONZERO(ar, augment_3_id); + CEREAL_NVP_IF_NONZERO(ar, augment_4_id); + CEREAL_NVP_IF_NONZERO(ar, augment_5_id); + CEREAL_NVP_IF_NONZERO(ar, augment_6_id); + + ar( + CEREAL_NVP(attuned), + CEREAL_NVP(reason) + ); + } + + template + void load(Archive& ar) { ar( CEREAL_NVP(item_id), CEREAL_NVP(item_name), @@ -521,6 +617,7 @@ namespace PlayerEvent { } }; + struct LevelGainedEvent { uint32 from_level; uint8 to_level; @@ -570,8 +667,28 @@ namespace PlayerEvent { // cereal template - void serialize(Archive &ar) - { + void save(Archive& ar) const { + ar( + CEREAL_NVP(item_id), + CEREAL_NVP(item_name), + CEREAL_NVP(charges) + ); + + CEREAL_NVP_IF_NONZERO(ar, augment_1_id); + CEREAL_NVP_IF_NONZERO(ar, augment_2_id); + CEREAL_NVP_IF_NONZERO(ar, augment_3_id); + CEREAL_NVP_IF_NONZERO(ar, augment_4_id); + CEREAL_NVP_IF_NONZERO(ar, augment_5_id); + CEREAL_NVP_IF_NONZERO(ar, augment_6_id); + + ar( + CEREAL_NVP(npc_id), + CEREAL_NVP(corpse_name) + ); + } + + template + void load(Archive& ar) { ar( CEREAL_NVP(item_id), CEREAL_NVP(item_name), @@ -806,8 +923,25 @@ namespace PlayerEvent { // cereal template - void serialize(Archive &ar) - { + void save(Archive& ar) const { + ar(CEREAL_NVP(item_id)); + + CEREAL_NVP_IF_NONZERO(ar, augment_1_id); + CEREAL_NVP_IF_NONZERO(ar, augment_2_id); + CEREAL_NVP_IF_NONZERO(ar, augment_3_id); + CEREAL_NVP_IF_NONZERO(ar, augment_4_id); + CEREAL_NVP_IF_NONZERO(ar, augment_5_id); + CEREAL_NVP_IF_NONZERO(ar, augment_6_id); + + ar( + CEREAL_NVP(item_name), + CEREAL_NVP(slot_id), + CEREAL_NVP(charges) + ); + } + + template + void load(Archive& ar) { ar( CEREAL_NVP(item_id), CEREAL_NVP(augment_1_id), @@ -886,11 +1020,32 @@ namespace PlayerEvent { uint64 total_cost; uint64 player_money_balance; - // cereal template - void serialize(Archive &ar) - { + void save(Archive& ar) const { + ar(CEREAL_NVP(item_id)); + + CEREAL_NVP_IF_NONZERO(ar, augment_1_id); + CEREAL_NVP_IF_NONZERO(ar, augment_2_id); + CEREAL_NVP_IF_NONZERO(ar, augment_3_id); + CEREAL_NVP_IF_NONZERO(ar, augment_4_id); + CEREAL_NVP_IF_NONZERO(ar, augment_5_id); + CEREAL_NVP_IF_NONZERO(ar, augment_6_id); + + ar( + CEREAL_NVP(item_name), + CEREAL_NVP(trader_id), + CEREAL_NVP(trader_name), + CEREAL_NVP(price), + CEREAL_NVP(quantity), + CEREAL_NVP(charges), + CEREAL_NVP(total_cost), + CEREAL_NVP(player_money_balance) + ); + } + + template + void load(Archive& ar) { ar( CEREAL_NVP(item_id), CEREAL_NVP(augment_1_id), @@ -928,11 +1083,31 @@ namespace PlayerEvent { uint64 total_cost; uint64 player_money_balance; - - // cereal template - void serialize(Archive &ar) - { + void save(Archive& ar) const { + ar(CEREAL_NVP(item_id)); + + CEREAL_NVP_IF_NONZERO(ar, augment_1_id); + CEREAL_NVP_IF_NONZERO(ar, augment_2_id); + CEREAL_NVP_IF_NONZERO(ar, augment_3_id); + CEREAL_NVP_IF_NONZERO(ar, augment_4_id); + CEREAL_NVP_IF_NONZERO(ar, augment_5_id); + CEREAL_NVP_IF_NONZERO(ar, augment_6_id); + + ar( + CEREAL_NVP(item_name), + CEREAL_NVP(buyer_id), + CEREAL_NVP(buyer_name), + CEREAL_NVP(price), + CEREAL_NVP(quantity), + CEREAL_NVP(charges), + CEREAL_NVP(total_cost), + CEREAL_NVP(player_money_balance) + ); + } + + template + void load(Archive& ar) { ar( CEREAL_NVP(item_id), CEREAL_NVP(augment_1_id), @@ -1083,10 +1258,24 @@ namespace PlayerEvent { bool attuned; uint32 guild_favor; - // cereal template - void serialize(Archive &ar) - { + void save(Archive& ar) const { + ar(CEREAL_NVP(item_id)); + + CEREAL_NVP_IF_NONZERO(ar, augment_1_id); + CEREAL_NVP_IF_NONZERO(ar, augment_2_id); + CEREAL_NVP_IF_NONZERO(ar, augment_3_id); + CEREAL_NVP_IF_NONZERO(ar, augment_4_id); + CEREAL_NVP_IF_NONZERO(ar, augment_5_id); + CEREAL_NVP_IF_NONZERO(ar, augment_6_id); + CEREAL_NVP_IF_NONZERO(ar, charges); + CEREAL_NVP_IF_TRUE(ar, attuned); + + ar(CEREAL_NVP(guild_favor)); + } + + template + void load(Archive& ar) { ar( CEREAL_NVP(item_id), CEREAL_NVP(augment_1_id), @@ -1095,6 +1284,8 @@ namespace PlayerEvent { CEREAL_NVP(augment_4_id), CEREAL_NVP(augment_5_id), CEREAL_NVP(augment_6_id), + CEREAL_NVP(charges), + CEREAL_NVP(attuned), CEREAL_NVP(guild_favor) ); } @@ -1127,10 +1318,26 @@ namespace PlayerEvent { std::string from_player_name; uint32 sent_date; - // cereal template - void serialize(Archive &ar) - { + void save(Archive& ar) const { + ar(CEREAL_NVP(item_id)); + + CEREAL_NVP_IF_NONZERO(ar, augment_1_id); + CEREAL_NVP_IF_NONZERO(ar, augment_2_id); + CEREAL_NVP_IF_NONZERO(ar, augment_3_id); + CEREAL_NVP_IF_NONZERO(ar, augment_4_id); + CEREAL_NVP_IF_NONZERO(ar, augment_5_id); + CEREAL_NVP_IF_NONZERO(ar, augment_6_id); + + ar( + CEREAL_NVP(quantity), + CEREAL_NVP(from_player_name), + CEREAL_NVP(sent_date) + ); + } + + template + void load(Archive& ar) { ar( CEREAL_NVP(item_id), CEREAL_NVP(augment_1_id), @@ -1160,10 +1367,28 @@ namespace PlayerEvent { std::string to_player_name; uint32 sent_date; - // cereal template - void serialize(Archive &ar) - { + void save(Archive& ar) const { + ar(CEREAL_NVP(item_id)); + + CEREAL_NVP_IF_NONZERO(ar, augment_1_id); + CEREAL_NVP_IF_NONZERO(ar, augment_2_id); + CEREAL_NVP_IF_NONZERO(ar, augment_3_id); + CEREAL_NVP_IF_NONZERO(ar, augment_4_id); + CEREAL_NVP_IF_NONZERO(ar, augment_5_id); + CEREAL_NVP_IF_NONZERO(ar, augment_6_id); + CEREAL_NVP_IF_NONZERO(ar, charges); + + ar( + CEREAL_NVP(quantity), + CEREAL_NVP(from_player_name), + CEREAL_NVP(to_player_name), + CEREAL_NVP(sent_date) + ); + } + + template + void load(Archive& ar) { ar( CEREAL_NVP(item_id), CEREAL_NVP(augment_1_id), @@ -1195,10 +1420,28 @@ namespace PlayerEvent { std::string from_name; std::string note; - // cereal template - void serialize(Archive &ar) - { + void save(Archive& ar) const { + ar(CEREAL_NVP(item_id)); + + CEREAL_NVP_IF_NONZERO(ar, augment_1_id); + CEREAL_NVP_IF_NONZERO(ar, augment_2_id); + CEREAL_NVP_IF_NONZERO(ar, augment_3_id); + CEREAL_NVP_IF_NONZERO(ar, augment_4_id); + CEREAL_NVP_IF_NONZERO(ar, augment_5_id); + CEREAL_NVP_IF_NONZERO(ar, augment_6_id); + + ar( + CEREAL_NVP(quantity), + CEREAL_NVP(char_id), + CEREAL_NVP(from_name), + CEREAL_NVP(note), + CEREAL_NVP(sent_date) + ); + } + + template + void load(Archive& ar) { ar( CEREAL_NVP(item_id), CEREAL_NVP(augment_1_id), @@ -1300,10 +1543,29 @@ namespace PlayerEvent { uint32 quantity; uint32 permission; - // cereal template - void serialize(Archive &ar) - { + void save(Archive& ar) const { + ar( + CEREAL_NVP(char_id), + CEREAL_NVP(guild_id), + CEREAL_NVP(item_id) + ); + + CEREAL_NVP_IF_NONZERO(ar, aug_slot_one); + CEREAL_NVP_IF_NONZERO(ar, aug_slot_two); + CEREAL_NVP_IF_NONZERO(ar, aug_slot_three); + CEREAL_NVP_IF_NONZERO(ar, aug_slot_four); + CEREAL_NVP_IF_NONZERO(ar, aug_slot_five); + CEREAL_NVP_IF_NONZERO(ar, aug_slot_six); + + ar( + CEREAL_NVP(quantity), + CEREAL_NVP(permission) + ); + } + + template + void load(Archive& ar) { ar( CEREAL_NVP(char_id), CEREAL_NVP(guild_id), @@ -1314,10 +1576,12 @@ namespace PlayerEvent { CEREAL_NVP(aug_slot_four), CEREAL_NVP(aug_slot_five), CEREAL_NVP(aug_slot_six), - CEREAL_NVP(quantity) - ); + CEREAL_NVP(quantity), + CEREAL_NVP(permission) + ); } }; + } #endif //EQEMU_PLAYER_EVENTS_H