GameSaveContainerReader::GameSaveContainerReader(ContainerInfoType& containerInfo, std::istream& inStream)
    : m_containerInfo(containerInfo), m_inStream(inStream)
{
    StreamHelperReader stream(getInStream());
    auto& signature = stream.ReadString(5);
    if (signature.compare(std::string("C2AR\0", 5)) != 0) {
        throw std::runtime_error("Invalid signature");
    }

    m_containerInfo.Signature = signature;
    m_containerInfo.Version = stream.Read<unsigned int>();
    m_containerInfo.Unknown.v1 = stream.Read<int>();
    
    m_containerInfo.Unknown.v2 = stream.Read<char>();
    if (m_containerInfo.Unknown.v2 != 0) {
        throw std::runtime_error("Not supported");
    }
}
GameSaveContainerReader::GameSaveContainerReader(ContainerInfoType& containerInfo, std::istream& inStream)
    : m_containerInfo(containerInfo), m_inStream(inStream)
{
    StreamHelperReader stream(getInStream());
    auto& signature = stream.ReadString(5);
    if (signature.compare(std::string("C2AR\0", 5)) != 0) {
        throw VanHelsingEngineError("Invalid signature");
    }

    m_containerInfo.Signature = signature;
    stream.Read(m_containerInfo.Version);

    checkVersion();

    stream.Read(m_containerInfo.Unknown.v1);
    
    stream.Read(m_containerInfo.Unknown.v2);
    if (m_containerInfo.Unknown.v2 != 0) {
        throw VanHelsingEngineError("This file must be investigated");
    }
}