Exemplo n.º 1
0
bool ChunkedFile::loadFile(HANDLE mpq, char* filename, bool log)
{
    free();
    HANDLE file;
    if (!SFileOpenFileEx(mpq, filename, SFILE_OPEN_PATCHED_FILE, &file))
    {
        if (log)
            printf("No such file %s\n", filename);
        return false;
    }

    data_size = SFileGetFileSize(file, NULL);
    data = new uint8[data_size];
    SFileReadFile(file, data, data_size, NULL/*bytesRead*/, NULL);
    parseChunks();
    if (prepareLoadedData())
    {
        SFileCloseFile(file);
        return true;
    }

    printf("Error loading %s\n", filename);
    SFileCloseFile(file);
    free();
    return false;
}
Exemplo n.º 2
0
bool ChunkedFile::loadFile(HANDLE mpq, std::string const& fileName, bool log)
{
    free();
    HANDLE file;
    if (!CascOpenFile(mpq, fileName.c_str(), CASC_LOCALE_ALL, 0, &file))
    {
        if (log)
            printf("No such file %s\n", fileName.c_str());
        return false;
    }

    data_size = CascGetFileSize(file, nullptr);
    data = new uint8[data_size];
    CascReadFile(file, data, data_size, nullptr/*bytesRead*/);
    parseChunks();
    if (prepareLoadedData())
    {
        CascCloseFile(file);
        return true;
    }

    printf("Error loading %s\n", fileName.c_str());
    CascCloseFile(file);
    free();

    return false;
}
Exemplo n.º 3
0
bool ChunkedFile::loadFile(CASC::StorageHandle const& mpq, std::string const& fileName, bool log)
{
    free();
    CASC::FileHandle file = CASC::OpenFile(mpq, fileName.c_str(), CASC_LOCALE_ALL, log);
    if (!file)
        return false;

    DWORD fileSize = CASC::GetFileSize(file, nullptr);
    if (fileSize == CASC_INVALID_SIZE)
        return false;

    data_size = fileSize;
    data = new uint8[data_size];
    DWORD bytesRead = 0;
    if (!CASC::ReadFile(file, data, data_size, &bytesRead) || bytesRead != data_size)
        return false;

    parseChunks();
    if (prepareLoadedData())
        return true;

    printf("Error loading %s\n", fileName.c_str());
    free();

    return false;
}