COMPOSER: Implement kFuncLoadData.
This commit is contained in:
parent
0366a982c3
commit
2e89bd73f6
1 changed files with 19 additions and 2 deletions
|
@ -1578,8 +1578,25 @@ int16 ComposerEngine::scriptFuncCall(uint16 id, int16 param1, int16 param2, int1
|
|||
warning("ignoring kFuncSaveData(%d, %d, %d)", param1, param2, param3);
|
||||
return 1;
|
||||
case kFuncLoadData:
|
||||
// TODO
|
||||
warning("ignoring kFuncLoadData(%d, %d, %d)", param1, param2, param3);
|
||||
debug(3, "ignoring kFuncLoadData(%d, %d, %d)", param1, param2, param3);
|
||||
{
|
||||
Common::String filename = getFilename("Data", param1);
|
||||
Common::File *file = new Common::File();
|
||||
if (!file->open(filename))
|
||||
error("couldn't open '%s' to get data id '%d'", filename.c_str(), param1);
|
||||
if (param3 == 0)
|
||||
param3 = 1000;
|
||||
else
|
||||
param3 = param3 / 2;
|
||||
if (param2 < 0 || param3 < 0 || param2 + param3 > 1000)
|
||||
error("can't read %d entries into %d from file '%s' for data id '%d'", param3, param2, filename.c_str(), param1);
|
||||
for (uint i = 0; i < (uint)param3; i++) {
|
||||
if (file->pos() + 1 > file->size())
|
||||
break;
|
||||
_vars[param2 + i] = file->readUint16LE();
|
||||
}
|
||||
delete file;
|
||||
}
|
||||
return 1;
|
||||
case kFuncGetSpriteSize:
|
||||
debug(3, "kFuncGetSpriteSize(%d, %d, %d)", param1, param2, param3);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue