mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-11 05:36:12 +00:00
AGS: Made script module index an unsigned value
From upstream bd4e65677eb0319ff746e519ee40016000a4f4f9
This commit is contained in:
parent
14cffd13e7
commit
9533c0e028
@ -69,8 +69,8 @@ int run_claimable_event(const char *tsname, bool includeRoom, int numParams, con
|
||||
}
|
||||
|
||||
// run script modules
|
||||
for (int kk = 0; kk < _G(numScriptModules); kk++) {
|
||||
toret = RunScriptFunction(_GP(moduleInst)[kk], tsname, numParams, params);
|
||||
for (auto &module_inst : _GP(moduleInst)) {
|
||||
toret = RunScriptFunction(module_inst, tsname, numParams, params);
|
||||
|
||||
if (_G(eventClaimed) == EVENT_CLAIMED) {
|
||||
_G(eventClaimed) = eventClaimedOldValue;
|
||||
|
@ -393,7 +393,7 @@ void unload_game_file() {
|
||||
|
||||
_GP(dialogScriptsScript).reset();
|
||||
|
||||
for (int i = 0; i < _G(numScriptModules); ++i) {
|
||||
for (size_t i = 0; i < _G(numScriptModules); ++i) {
|
||||
delete _GP(moduleInstFork)[i];
|
||||
delete _GP(moduleInst)[i];
|
||||
_GP(scriptModules)[i].reset();
|
||||
|
@ -329,8 +329,8 @@ void AllocScriptModules() {
|
||||
_GP(runDialogOptionKeyPressHandlerFunc).moduleHasFunction.resize(_G(numScriptModules), true);
|
||||
_GP(runDialogOptionTextInputHandlerFunc).moduleHasFunction.resize(_G(numScriptModules), true);
|
||||
_GP(runDialogOptionRepExecFunc).moduleHasFunction.resize(_G(numScriptModules), true);
|
||||
for (int i = 0; i < _G(numScriptModules); ++i) {
|
||||
_GP(moduleRepExecAddr)[i].Invalidate();
|
||||
for (auto &val : _GP(moduleRepExecAddr)) {
|
||||
val.Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -355,7 +355,7 @@ void DoBeforeRestore(PreservedParams &pp) {
|
||||
_G(gameinstFork) = nullptr;
|
||||
_G(gameinst) = nullptr;
|
||||
pp.ScMdDataSize.resize(_G(numScriptModules));
|
||||
for (int i = 0; i < _G(numScriptModules); ++i) {
|
||||
for (size_t i = 0; i < _G(numScriptModules); ++i) {
|
||||
pp.ScMdDataSize[i] = _GP(moduleInst)[i]->globaldatasize;
|
||||
delete _GP(moduleInstFork)[i];
|
||||
delete _GP(moduleInst)[i];
|
||||
@ -467,7 +467,7 @@ HSaveError DoAfterRestore(const PreservedParams &pp, const RestoredData &r_data)
|
||||
Math::Min((size_t)_G(gameinst)->globaldatasize, r_data.GlobalScript.Len));
|
||||
|
||||
// restore the script module data
|
||||
for (int i = 0; i < _G(numScriptModules); ++i) {
|
||||
for (size_t i = 0; i < _G(numScriptModules); ++i) {
|
||||
if (r_data.ScriptModules[i].Data.get())
|
||||
memcpy(_GP(moduleInst)[i]->globaldata, r_data.ScriptModules[i].Data.get(),
|
||||
Math::Min((size_t)_GP(moduleInst)[i]->globaldatasize, r_data.ScriptModules[i].Len));
|
||||
|
@ -815,7 +815,7 @@ HSaveError WriteScriptModules(Stream *out) {
|
||||
out->Write(_G(gameinst)->globaldata, data_len);
|
||||
// write the script modules data segments
|
||||
out->WriteInt32(_G(numScriptModules));
|
||||
for (int i = 0; i < _G(numScriptModules); ++i) {
|
||||
for (size_t i = 0; i < _G(numScriptModules); ++i) {
|
||||
data_len = _GP(moduleInst)[i]->globaldatasize;
|
||||
out->WriteInt32(data_len);
|
||||
if (data_len > 0)
|
||||
@ -837,7 +837,7 @@ HSaveError ReadScriptModules(Stream *in, int32_t cmp_ver, const PreservedParams
|
||||
if (!AssertGameContent(err, in->ReadInt32(), _G(numScriptModules), "Script Modules"))
|
||||
return err;
|
||||
r_data.ScriptModules.resize(_G(numScriptModules));
|
||||
for (int i = 0; i < _G(numScriptModules); ++i) {
|
||||
for (size_t i = 0; i < _G(numScriptModules); ++i) {
|
||||
data_len = in->ReadInt32();
|
||||
if (!AssertGameObjectContent(err, data_len, pp.ScMdDataSize[i], "script module data", "module", i))
|
||||
return err;
|
||||
|
@ -100,7 +100,7 @@ static HSaveError restore_game_scripts(Stream *in, const PreservedParams &pp, Re
|
||||
return new SavegameError(kSvgErr_GameContentAssertion, "Mismatching number of script modules.");
|
||||
}
|
||||
r_data.ScriptModules.resize(_G(numScriptModules));
|
||||
for (int i = 0; i < _G(numScriptModules); ++i) {
|
||||
for (size_t i = 0; i < _G(numScriptModules); ++i) {
|
||||
int module_size = in->ReadInt32();
|
||||
if (pp.ScMdDataSize[i] != module_size) {
|
||||
return new SavegameError(kSvgErr_GameContentAssertion, String::FromFormat("Mismatching size of script module data, module %d.", i));
|
||||
|
@ -90,8 +90,8 @@ void run_function_on_non_blocking_thread(NonBlockingScriptFunction *funcToRun) {
|
||||
|
||||
// run modules
|
||||
// modules need a forkedinst for this to work
|
||||
for (int kk = 0; kk < _G(numScriptModules); kk++) {
|
||||
funcToRun->moduleHasFunction[kk] = DoRunScriptFuncCantBlock(_GP(moduleInstFork)[kk], funcToRun, funcToRun->moduleHasFunction[kk]);
|
||||
for (size_t i = 0; i < _G(numScriptModules); ++i) {
|
||||
funcToRun->moduleHasFunction[i] = DoRunScriptFuncCantBlock(_GP(moduleInstFork)[i], funcToRun, funcToRun->moduleHasFunction[i]);
|
||||
|
||||
if (room_changes_was != _GP(play).room_changes)
|
||||
return;
|
||||
@ -205,11 +205,11 @@ int create_global_script() {
|
||||
ccSetOption(SCOPT_AUTOIMPORT, 1);
|
||||
|
||||
std::vector<ccInstance *> instances_for_resolving;
|
||||
for (int kk = 0; kk < _G(numScriptModules); kk++) {
|
||||
_GP(moduleInst)[kk] = ccInstance::CreateFromScript(_GP(scriptModules)[kk]);
|
||||
if (_GP(moduleInst)[kk] == nullptr)
|
||||
for (size_t i = 0; i < _G(numScriptModules); ++i) {
|
||||
_GP(moduleInst)[i] = ccInstance::CreateFromScript(_GP(scriptModules)[i]);
|
||||
if (_GP(moduleInst)[i] == nullptr)
|
||||
return kscript_create_error;
|
||||
instances_for_resolving.push_back(_GP(moduleInst)[kk]);
|
||||
instances_for_resolving.push_back(_GP(moduleInst)[i]);
|
||||
}
|
||||
|
||||
_G(gameinst) = ccInstance::CreateFromScript(_GP(gamescript));
|
||||
@ -235,7 +235,7 @@ int create_global_script() {
|
||||
|
||||
// Create the forks for 'repeatedly_execute_always' after resolving
|
||||
// because they copy their respective originals including the resolve information
|
||||
for (int module_idx = 0; module_idx < _G(numScriptModules); module_idx++) {
|
||||
for (size_t module_idx = 0; module_idx < _G(numScriptModules); module_idx++) {
|
||||
_GP(moduleInstFork)[module_idx] = _GP(moduleInst)[module_idx]->Fork();
|
||||
if (_GP(moduleInstFork)[module_idx] == nullptr)
|
||||
return kscript_create_error;
|
||||
@ -395,7 +395,7 @@ int RunScriptFunction(ccInstance *sci, const char *tsname, size_t numParam, cons
|
||||
}
|
||||
|
||||
void RunScriptFunctionInModules(const char *tsname, size_t param_count, const RuntimeScriptValue *params) {
|
||||
for (int i = 0; i < _G(numScriptModules); ++i)
|
||||
for (size_t i = 0; i < _G(numScriptModules); ++i)
|
||||
RunScriptFunction(_GP(moduleInst)[i], tsname, param_count, params);
|
||||
RunScriptFunction(_G(gameinst), tsname, param_count, params);
|
||||
}
|
||||
@ -417,7 +417,7 @@ int RunScriptFunctionInRoom(const char *tsname, size_t param_count, const Runtim
|
||||
static int RunUnclaimableEvent(const char *tsname) {
|
||||
const int room_changes_was = _GP(play).room_changes;
|
||||
const int restore_game_count_was = _G(gameHasBeenRestored);
|
||||
for (int i = 0; i < _G(numScriptModules); ++i) {
|
||||
for (size_t i = 0; i < _G(numScriptModules); ++i) {
|
||||
if (!_GP(moduleRepExecAddr)[i].IsNull())
|
||||
RunScriptFunction(_GP(moduleInst)[i], tsname);
|
||||
// Break on room change or save restoration
|
||||
|
@ -1271,7 +1271,7 @@ public:
|
||||
std::vector<ccInstance *> *_moduleInst;
|
||||
std::vector<ccInstance *> *_moduleInstFork;
|
||||
std::vector<RuntimeScriptValue> *_moduleRepExecAddr;
|
||||
int _numScriptModules = 0;
|
||||
size_t _numScriptModules = 0;
|
||||
|
||||
// TODO: find out if these extra arrays are really necessary. This may be remains from the
|
||||
// time when the symbol import table was holding raw pointers to char array.
|
||||
|
Loading…
x
Reference in New Issue
Block a user