//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================

#ifndef ISCENEFILECACHE_H
#define ISCENEFILECACHE_H
#ifdef _WIN32
#pragma once
#endif

#include "interface.h"
#include "appframework/IAppSystem.h"

// the file cache can support persisting some calcs
struct SceneCachedData_t
{
    unsigned int    msecs;
    int             numSounds;
    int             sceneId;
};

class ISceneFileCache : public IAppSystem
{
public:

    // async implemenation
    virtual size_t      GetSceneBufferSize( char const *filename ) = 0;
    virtual bool        GetSceneData( char const *filename, byte *buf, size_t bufsize ) = 0;

    // persisted scene data, returns true if valid, false otherwise
    virtual bool        GetSceneCachedData( char const *pFilename, SceneCachedData_t *pData ) = 0;
    virtual short       GetSceneCachedSound( int iScene, int iSound ) = 0;
    virtual const char  *GetSceneString( short stringId ) = 0;

    // Physically reloads image from disk
    virtual void        Reload() = 0;
};

#define SCENE_FILE_CACHE_INTERFACE_VERSION "SceneFileCache002"

#endif // ISCENEFILECACHE_H
