#pragma once using TiltedPhoques::Buffer; struct GameId { GameId() = default; GameId(uint32_t aModId, uint32_t aBaseId) noexcept; ~GameId() = default; bool operator==(const GameId& acRhs) const noexcept; bool operator!=(const GameId& acRhs) const noexcept; operator bool() const noexcept; void Serialize(TiltedPhoques::Buffer::Writer& aWriter) const noexcept; void Deserialize(TiltedPhoques::Buffer::Reader& aReader) noexcept; inline uint64_t LogFormat() const noexcept { return static_cast(ModId) << 32 | BaseId; } uint32_t BaseId; uint32_t ModId; }; namespace std { template <> class hash { public: size_t operator()(const GameId& gameId) const { return hash()(gameId.BaseId) ^ (hash()(gameId.ModId) << 1); } }; } // namespace std