demboyz/demboyz/game/stringtables.h

49 lines
919 B
C++

#pragma once
#include <string>
#include <vector>
#include <cstdint>
#include <functional>
class bf_read;
class SourceGameContext;
struct StringTableEntry
{
std::string string;
std::string data;
};
struct StringTable
{
int id;
std::string tableName;
uint16_t maxEntries;
bool isUserDataFixedSize;
uint16_t userDataSize;
uint8_t userDataSizeBits;
int entryBits;
void ParseUpdate(bf_read& bitbuf, int numEntries, SourceGameContext& context);
void AddEntry(StringTableEntry *entry);
StringTableEntry *FindEntry(const char *string);
std::vector<StringTableEntry> entries;
std::function<void(int, int)> callback;
};
struct StringTableContainer
{
StringTableContainer(SourceGameContext *context);
StringTable *GetStringTable(const char *name, bool create);
void DumpAll();
SourceGameContext *context;
std::vector<StringTable> tables;
};