diff options
Diffstat (limited to 'engines/wintermute/base/scriptables')
7 files changed, 53 insertions, 36 deletions
diff --git a/engines/wintermute/base/scriptables/script.cpp b/engines/wintermute/base/scriptables/script.cpp index 56ffbf75c5..1b945c2e1c 100644 --- a/engines/wintermute/base/scriptables/script.cpp +++ b/engines/wintermute/base/scriptables/script.cpp @@ -1243,7 +1243,7 @@ void ScScript::runtimeError(const char *fmt, ...) { ////////////////////////////////////////////////////////////////////////// bool ScScript::persist(BasePersistenceManager *persistMgr) { - persistMgr->transfer(TMEMBER(_gameRef)); + persistMgr->transferPtr(TMEMBER_PTR(_gameRef)); // buffer if (persistMgr->getIsSaving()) { @@ -1252,7 +1252,7 @@ bool ScScript::persist(BasePersistenceManager *persistMgr) { persistMgr->putBytes(_buffer, _bufferSize); } else { // don't save idle/finished scripts - int bufferSize = 0; + int32 bufferSize = 0; persistMgr->transfer(TMEMBER(bufferSize)); } } else { @@ -1268,33 +1268,33 @@ bool ScScript::persist(BasePersistenceManager *persistMgr) { } } - persistMgr->transfer(TMEMBER(_callStack)); + persistMgr->transferPtr(TMEMBER_PTR(_callStack)); persistMgr->transfer(TMEMBER(_currentLine)); - persistMgr->transfer(TMEMBER(_engine)); + persistMgr->transferPtr(TMEMBER_PTR(_engine)); persistMgr->transfer(TMEMBER(_filename)); persistMgr->transfer(TMEMBER(_freezable)); - persistMgr->transfer(TMEMBER(_globals)); + persistMgr->transferPtr(TMEMBER_PTR(_globals)); persistMgr->transfer(TMEMBER(_iP)); - persistMgr->transfer(TMEMBER(_scopeStack)); - persistMgr->transfer(TMEMBER(_stack)); + persistMgr->transferPtr(TMEMBER_PTR(_scopeStack)); + persistMgr->transferPtr(TMEMBER_PTR(_stack)); persistMgr->transfer(TMEMBER_INT(_state)); - persistMgr->transfer(TMEMBER(_operand)); + persistMgr->transferPtr(TMEMBER_PTR(_operand)); persistMgr->transfer(TMEMBER_INT(_origState)); - persistMgr->transfer(TMEMBER(_owner)); - persistMgr->transfer(TMEMBER(_reg1)); + persistMgr->transferPtr(TMEMBER_PTR(_owner)); + persistMgr->transferPtr(TMEMBER_PTR(_reg1)); persistMgr->transfer(TMEMBER(_thread)); persistMgr->transfer(TMEMBER(_threadEvent)); - persistMgr->transfer(TMEMBER(_thisStack)); + persistMgr->transferPtr(TMEMBER_PTR(_thisStack)); persistMgr->transfer(TMEMBER(_timeSlice)); - persistMgr->transfer(TMEMBER(_waitObject)); - persistMgr->transfer(TMEMBER(_waitScript)); + persistMgr->transferPtr(TMEMBER_PTR(_waitObject)); + persistMgr->transferPtr(TMEMBER_PTR(_waitScript)); persistMgr->transfer(TMEMBER(_waitTime)); persistMgr->transfer(TMEMBER(_waitFrozen)); persistMgr->transfer(TMEMBER(_methodThread)); persistMgr->transfer(TMEMBER(_methodThread)); persistMgr->transfer(TMEMBER(_unbreakable)); - persistMgr->transfer(TMEMBER(_parentScript)); + persistMgr->transferPtr(TMEMBER_PTR(_parentScript)); if (!persistMgr->getIsSaving()) { _tracingMode = false; diff --git a/engines/wintermute/base/scriptables/script_engine.cpp b/engines/wintermute/base/scriptables/script_engine.cpp index d8f38f2f4d..f83fb36843 100644 --- a/engines/wintermute/base/scriptables/script_engine.cpp +++ b/engines/wintermute/base/scriptables/script_engine.cpp @@ -484,9 +484,9 @@ bool ScEngine::persist(BasePersistenceManager *persistMgr) { cleanup(); } - persistMgr->transfer(TMEMBER(_gameRef)); - persistMgr->transfer(TMEMBER(_currentScript)); - persistMgr->transfer(TMEMBER(_globals)); + persistMgr->transferPtr(TMEMBER_PTR(_gameRef)); + persistMgr->transferPtr(TMEMBER_PTR(_currentScript)); + persistMgr->transferPtr(TMEMBER_PTR(_globals)); _scripts.persist(persistMgr); return STATUS_OK; diff --git a/engines/wintermute/base/scriptables/script_ext_array.cpp b/engines/wintermute/base/scriptables/script_ext_array.cpp index 892d0674ff..a466d361ec 100644 --- a/engines/wintermute/base/scriptables/script_ext_array.cpp +++ b/engines/wintermute/base/scriptables/script_ext_array.cpp @@ -215,7 +215,7 @@ bool SXArray::persist(BasePersistenceManager *persistMgr) { BaseScriptable::persist(persistMgr); persistMgr->transfer(TMEMBER(_length)); - persistMgr->transfer(TMEMBER(_values)); + persistMgr->transferPtr(TMEMBER_PTR(_values)); return STATUS_OK; } diff --git a/engines/wintermute/base/scriptables/script_ext_date.cpp b/engines/wintermute/base/scriptables/script_ext_date.cpp index 53a1d36b81..afca0c4bbf 100644 --- a/engines/wintermute/base/scriptables/script_ext_date.cpp +++ b/engines/wintermute/base/scriptables/script_ext_date.cpp @@ -237,12 +237,29 @@ bool SXDate::scSetProperty(const char *name, ScValue *value) { bool SXDate::persist(BasePersistenceManager *persistMgr) { BaseScriptable::persist(persistMgr); - persistMgr->transfer(TMEMBER(_tm.tm_year)); - persistMgr->transfer(TMEMBER(_tm.tm_mon)); - persistMgr->transfer(TMEMBER(_tm.tm_mday)); - persistMgr->transfer(TMEMBER(_tm.tm_hour)); - persistMgr->transfer(TMEMBER(_tm.tm_min)); - persistMgr->transfer(TMEMBER(_tm.tm_sec)); + int32 year = _tm.tm_year; + int32 mon = _tm.tm_mon; + int32 mday = _tm.tm_mday; + int32 hour = _tm.tm_hour; + int32 min = _tm.tm_min; + int32 sec = _tm.tm_sec; + persistMgr->transfer(TMEMBER(year)); + persistMgr->transfer(TMEMBER(mon)); + persistMgr->transfer(TMEMBER(mday)); + persistMgr->transfer(TMEMBER(hour)); + persistMgr->transfer(TMEMBER(min)); + persistMgr->transfer(TMEMBER(sec)); + if (persistMgr->checkVersion(1, 2, 1)) { + int32 wday = _tm.tm_wday; + persistMgr->transfer(TMEMBER(wday)); + _tm.tm_wday = wday; + } + _tm.tm_year = year; + _tm.tm_mon = mon; + _tm.tm_mday = mday; + _tm.tm_hour = hour; + _tm.tm_min = min; + _tm.tm_sec = sec; return STATUS_OK; } diff --git a/engines/wintermute/base/scriptables/script_stack.cpp b/engines/wintermute/base/scriptables/script_stack.cpp index 3239decae8..b53457c81b 100644 --- a/engines/wintermute/base/scriptables/script_stack.cpp +++ b/engines/wintermute/base/scriptables/script_stack.cpp @@ -184,7 +184,7 @@ void ScStack::pushNative(BaseScriptable *val, bool persistent) { ////////////////////////////////////////////////////////////////////////// bool ScStack::persist(BasePersistenceManager *persistMgr) { - persistMgr->transfer(TMEMBER(_gameRef)); + persistMgr->transferPtr(TMEMBER_PTR(_gameRef)); persistMgr->transfer(TMEMBER(_sP)); _values.persist(persistMgr); diff --git a/engines/wintermute/base/scriptables/script_value.cpp b/engines/wintermute/base/scriptables/script_value.cpp index 46d6c25d44..5e2923e029 100644 --- a/engines/wintermute/base/scriptables/script_value.cpp +++ b/engines/wintermute/base/scriptables/script_value.cpp @@ -73,7 +73,7 @@ ScValue::ScValue(BaseGame *inGame, bool val) : BaseClass(inGame) { ////////////////////////////////////////////////////////////////////////// -ScValue::ScValue(BaseGame *inGame, int val) : BaseClass(inGame) { +ScValue::ScValue(BaseGame *inGame, int32 val) : BaseClass(inGame) { _type = VAL_INT; _valInt = val; @@ -789,7 +789,7 @@ void ScValue::setValue(ScValue *val) { ////////////////////////////////////////////////////////////////////////// bool ScValue::persist(BasePersistenceManager *persistMgr) { - persistMgr->transfer(TMEMBER(_gameRef)); + persistMgr->transferPtr(TMEMBER_PTR(_gameRef)); persistMgr->transfer(TMEMBER(_persistent)); persistMgr->transfer(TMEMBER(_isConstVar)); @@ -797,9 +797,9 @@ bool ScValue::persist(BasePersistenceManager *persistMgr) { persistMgr->transfer(TMEMBER(_valBool)); persistMgr->transfer(TMEMBER(_valFloat)); persistMgr->transfer(TMEMBER(_valInt)); - persistMgr->transfer(TMEMBER(_valNative)); + persistMgr->transferPtr(TMEMBER_PTR(_valNative)); - int size; + int32 size; const char *str; if (persistMgr->getIsSaving()) { size = _valObject.size(); @@ -808,23 +808,23 @@ bool ScValue::persist(BasePersistenceManager *persistMgr) { while (_valIter != _valObject.end()) { str = _valIter->_key.c_str(); persistMgr->transfer("", &str); - persistMgr->transfer("", &_valIter->_value); + persistMgr->transferPtr("", &_valIter->_value); _valIter++; } } else { - ScValue *val; + ScValue *val = nullptr; persistMgr->transfer("", &size); for (int i = 0; i < size; i++) { persistMgr->transfer("", &str); - persistMgr->transfer("", &val); + persistMgr->transferPtr("", &val); _valObject[str] = val; delete[] str; } } - persistMgr->transfer(TMEMBER(_valRef)); + persistMgr->transferPtr(TMEMBER_PTR(_valRef)); persistMgr->transfer(TMEMBER(_valString)); /* // TODO: Convert to Debug-statements. @@ -951,7 +951,7 @@ int ScValue::compareStrict(ScValue *val1, ScValue *val2) { } ////////////////////////////////////////////////////////////////////////// -bool ScValue::setProperty(const char *propName, int value) { +bool ScValue::setProperty(const char *propName, int32 value) { ScValue *val = new ScValue(_gameRef, value); bool ret = DID_SUCCEED(setProp(propName, val)); delete val; diff --git a/engines/wintermute/base/scriptables/script_value.h b/engines/wintermute/base/scriptables/script_value.h index e8173474d6..a8e815023e 100644 --- a/engines/wintermute/base/scriptables/script_value.h +++ b/engines/wintermute/base/scriptables/script_value.h @@ -94,14 +94,14 @@ public: TValType _type; ScValue(BaseGame *inGame); ScValue(BaseGame *inGame, bool Val); - ScValue(BaseGame *inGame, int Val); + ScValue(BaseGame *inGame, int32 Val); ScValue(BaseGame *inGame, double Val); ScValue(BaseGame *inGame, const char *Val); virtual ~ScValue(); Common::HashMap<Common::String, ScValue *> _valObject; Common::HashMap<Common::String, ScValue *>::iterator _valIter; - bool setProperty(const char *propName, int value); + bool setProperty(const char *propName, int32 value); bool setProperty(const char *propName, const char *value); bool setProperty(const char *propName, double value); bool setProperty(const char *propName, bool value); |