(svn r23634) -Add: support language files for GameScript (Rubidium)

This commit is contained in:
truebrain
2011-12-19 21:05:46 +00:00
parent 9b6b2cabc1
commit 2ae87e7213
13 changed files with 593 additions and 0 deletions

View File

@@ -19,6 +19,7 @@
#include "../game/game_config.hpp"
#include "../network/network.h"
#include "../game/game_instance.hpp"
#include "../game/game_text.hpp"
static char _game_saveload_name[64];
static int _game_saveload_version;
@@ -111,6 +112,67 @@ static void Save_GSDT()
SlAutolength((AutolengthProc *)SaveReal_GSDT, NULL);
}
extern GameStrings *_current_data;
static const char *_game_saveload_string;
static uint _game_saveload_strings;
static const SaveLoad _game_language_header[] = {
SLEG_STR(_game_saveload_string, SLE_STR),
SLEG_VAR(_game_saveload_strings, SLE_UINT32),
SLE_END()
};
static const SaveLoad _game_language_string[] = {
SLEG_STR(_game_saveload_string, SLE_STR | SLF_ALLOW_CONTROL),
SLE_END()
};
static void SaveReal_GSTR(LanguageStrings *ls)
{
_game_saveload_string = ls->language;
_game_saveload_strings = ls->lines.Length();
SlObject(NULL, _game_language_header);
for (uint i = 0; i < _game_saveload_strings; i++) {
_game_saveload_string = ls->lines[i];
SlObject(NULL, _game_language_string);
}
}
static void Load_GSTR()
{
delete _current_data;
_current_data = new GameStrings();
while (SlIterateArray() != -1) {
_game_saveload_string = NULL;
SlObject(NULL, _game_language_header);
LanguageStrings *ls = new LanguageStrings(_game_saveload_string);
for (uint i = 0; i < _game_saveload_strings; i++) {
SlObject(NULL, _game_language_string);
*ls->lines.Append() = strdup(_game_saveload_string);
}
*_current_data->raw_strings.Append() = ls;
}
_current_data->Compile();
ReconsiderGameScriptLanguage();
}
static void Save_GSTR()
{
if (_current_data == NULL) return;
for (uint i = 0; i < _current_data->raw_strings.Length(); i++) {
SlSetArrayIndex(i);
SlAutolength((AutolengthProc *)SaveReal_GSTR, _current_data->raw_strings[i]);
}
}
extern const ChunkHandler _game_chunk_handlers[] = {
{ 'GSTR', Save_GSTR, Load_GSTR, NULL, NULL, CH_ARRAY },
{ 'GSDT', Save_GSDT, Load_GSDT, NULL, NULL, CH_ARRAY | CH_LAST},
};