mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 18:18:18 +00:00
58 lines
1.2 KiB
C++
58 lines
1.2 KiB
C++
#ifndef GAME_LOCALIZATION_H
|
|
#define GAME_LOCALIZATION_H
|
|
#include <base/tl/string.h>
|
|
#include <base/tl/sorted_array.h>
|
|
|
|
class CLocalizationDatabase
|
|
{
|
|
class CString
|
|
{
|
|
public:
|
|
unsigned m_Hash;
|
|
|
|
// TODO: do this as an const char * and put everything on a incremental heap
|
|
string m_Replacement;
|
|
|
|
bool operator <(const CString &Other) const { return m_Hash < Other.m_Hash; }
|
|
bool operator <=(const CString &Other) const { return m_Hash <= Other.m_Hash; }
|
|
bool operator ==(const CString &Other) const { return m_Hash == Other.m_Hash; }
|
|
};
|
|
|
|
sorted_array<CString> m_Strings;
|
|
int m_CurrentVersion;
|
|
|
|
public:
|
|
CLocalizationDatabase();
|
|
|
|
bool Load(const char *pFilename);
|
|
|
|
int Version() { return m_CurrentVersion; }
|
|
|
|
void AddString(const char *pOrgStr, const char *pNewStr);
|
|
const char *FindString(unsigned Hash);
|
|
};
|
|
|
|
extern CLocalizationDatabase g_Localization;
|
|
|
|
class CLocConstString
|
|
{
|
|
const char *m_pDefaultStr;
|
|
const char *m_pCurrentStr;
|
|
unsigned m_Hash;
|
|
int m_Version;
|
|
public:
|
|
CLocConstString(const char *pStr);
|
|
void Reload();
|
|
|
|
inline operator const char *()
|
|
{
|
|
if(m_Version != g_Localization.Version())
|
|
Reload();
|
|
return m_pCurrentStr;
|
|
}
|
|
};
|
|
|
|
|
|
extern const char *Localize(const char *pStr);
|
|
#endif
|