mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8755 3b4a5df2-a311-0410-b5c6-a8a6f20db521
50 lines
1.2 KiB
C++
50 lines
1.2 KiB
C++
#pragma once
|
|
#ifndef _LBT_SURFACECACHE__H_
|
|
#define _LBT_SURFACECACHE__H_
|
|
|
|
#include "Animation Data.h"
|
|
#include "Utilities.h"
|
|
#include "Sys Globals.h"
|
|
#include "Debug Control.h"
|
|
|
|
namespace LogicalBodyTypes {
|
|
|
|
class SurfaceCache {
|
|
|
|
private:
|
|
struct CacheEntry {
|
|
CacheEntry(AnimationSurfaceType* animSurface, STRUCTURE_FILE_REF* pStructFile) {
|
|
surface = animSurface;
|
|
structFile = pStructFile;
|
|
loaded = false;
|
|
prev = next = NULL;
|
|
}
|
|
bool loaded;
|
|
AnimationSurfaceType* surface;
|
|
STRUCTURE_FILE_REF* structFile;
|
|
CacheEntry* prev;
|
|
CacheEntry* next;
|
|
} typedef CacheEntry;
|
|
typedef std::vector<CacheEntry*> SurfaceVector;
|
|
|
|
public:
|
|
SurfaceCache(UINT32 size);
|
|
~SurfaceCache();
|
|
AnimationSurfaceType* GetLoadedSurface(UINT32 idx);
|
|
UINT32 AddSurface(AnimationSurfaceType* surface, STRUCTURE_FILE_REF* pStructFile);
|
|
|
|
private:
|
|
UINT32 loadedElementsMax;
|
|
UINT32 loadedElements;
|
|
CacheEntry* newest;
|
|
CacheEntry* oldest;
|
|
SurfaceVector surfaceVector;
|
|
static bool LoadSurface(AnimationSurfaceType* animSurfaceType, STRUCTURE_FILE_REF* pStructureFileRef);
|
|
static bool SurfaceCache::UnloadSurface(AnimationSurfaceType* animSurfaceType);
|
|
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|