[Scummvm-git-logs] scummvm master -> c76d2c9454c3fdd59a9ba81eac4f95f4071f5d87
whoozle
noreply at scummvm.org
Sat Jul 18 17:13:21 UTC 2026
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
c76d2c9454 PHOENIXVR: Move SaveVariable/LoadVariable implementation to Variables class
Commit: c76d2c9454c3fdd59a9ba81eac4f95f4071f5d87
https://github.com/scummvm/scummvm/commit/c76d2c9454c3fdd59a9ba81eac4f95f4071f5d87
Author: Vladimir Menshakov (vladimir.menshakov at gmail.com)
Date: 2026-07-18T18:06:06+01:00
Commit Message:
PHOENIXVR: Move SaveVariable/LoadVariable implementation to Variables class
Original engine does not allocate any runtime variables when reading variables.txt.
This list is only needed for Save/Load snapshots used in Script3 of Necronomicon.
Saved state is not deallocated in load.
Changed paths:
engines/phoenixvr/phoenixvr.cpp
engines/phoenixvr/phoenixvr.h
engines/phoenixvr/variables.cpp
engines/phoenixvr/variables.h
diff --git a/engines/phoenixvr/phoenixvr.cpp b/engines/phoenixvr/phoenixvr.cpp
index 19bb255a8c8..eb26efa1ce7 100644
--- a/engines/phoenixvr/phoenixvr.cpp
+++ b/engines/phoenixvr/phoenixvr.cpp
@@ -1318,25 +1318,12 @@ void PhoenixVREngine::renderImageOverlay() {
void PhoenixVREngine::saveVariables() {
debug("SaveVariable() - saving variable state");
- auto &values = _variables.values();
- _variableSnapshot.resize(values.size());
- uint i = 0;
- for (auto &var : values)
- _variableSnapshot[i++] = var;
+ _variables.save();
}
void PhoenixVREngine::loadVariables() {
debug("LoadVariable() - loading variable state");
- if (_variableSnapshot.empty()) {
- debug("skipping, no snapshot");
- return;
- }
- auto &values = _variables.values();
- assert(_variableSnapshot.size() == values.size());
- uint i = 0;
- for (auto &var : values)
- var = _variableSnapshot[i++];
- _variableSnapshot.clear();
+ _variables.load();
}
const Graphics::Font *PhoenixVREngine::getFont(int size, bool bold) const {
@@ -1633,18 +1620,7 @@ Common::Error PhoenixVREngine::run() {
// Set the engine's debugger console before declaring script variables.
setDebugger(new Console());
- {
- Common::File vars;
- if (vars.open(Common::Path("variable.txt"))) {
- while (!vars.eos()) {
- auto var = vars.readLine();
- if (var == "*")
- break;
- declareVariable(var);
- }
- } else
- debug("no variables.txt");
- }
+ _variables.loadVariableTxt();
{
Common::File textes;
if (textes.open(Common::Path("textes.txt"))) {
diff --git a/engines/phoenixvr/phoenixvr.h b/engines/phoenixvr/phoenixvr.h
index b57186c752d..f94096962ce 100644
--- a/engines/phoenixvr/phoenixvr.h
+++ b/engines/phoenixvr/phoenixvr.h
@@ -290,7 +290,6 @@ private:
Common::Array<Common::String> _lockKey;
Variables _variables;
- Common::Array<int> _variableSnapshot;
struct Sound {
Audio::SoundHandle handle;
diff --git a/engines/phoenixvr/variables.cpp b/engines/phoenixvr/variables.cpp
index aad44dc2427..8f874ff18b2 100644
--- a/engines/phoenixvr/variables.cpp
+++ b/engines/phoenixvr/variables.cpp
@@ -21,11 +21,42 @@
#include "phoenixvr/variables.h"
#include "common/debug.h"
+#include "common/file.h"
#include "phoenixvr/console.h"
#include "phoenixvr/phoenixvr.h"
namespace PhoenixVR {
+void Variables::loadVariableTxt() {
+ Common::File vars;
+ if (vars.open(Common::Path("variable.txt"))) {
+ while (!vars.eos()) {
+ auto var = vars.readLine();
+ if (var == "*")
+ break;
+ _variableTxt.push_back(Common::move(var));
+ }
+ } else
+ debug("no variables.txt");
+ _variableSnapshot.resize(_variableTxt.size(), 0);
+}
+
+void Variables::save() {
+ auto num = _variableTxt.size();
+ debug("saving %u variables", num);
+ assert(_variableSnapshot.size() == num);
+ for (uint i = 0; i != num; ++i)
+ _variableSnapshot[i] = get(_variableTxt[i]);
+}
+
+void Variables::load() {
+ auto num = _variableTxt.size();
+ debug("loading %u variables", num);
+ assert(_variableSnapshot.size() == num);
+ for (uint i = 0; i != num; ++i)
+ set(_variableTxt[i], _variableSnapshot[i]);
+}
+
void Variables::declare(const Common::String &name) {
if (!_variableIndex.contains(name)) {
_variableValues.push_back(0);
diff --git a/engines/phoenixvr/variables.h b/engines/phoenixvr/variables.h
index b55abe51c91..401583a0310 100644
--- a/engines/phoenixvr/variables.h
+++ b/engines/phoenixvr/variables.h
@@ -29,10 +29,16 @@
namespace PhoenixVR {
class Variables {
+ Common::Array<Common::String> _variableTxt;
+ Common::Array<int> _variableSnapshot;
Common::List<int> _variableValues;
Common::HashMap<Common::String, int *, Common::IgnoreCase_Hash, Common::IgnoreCase_EqualTo> _variableIndex;
public:
+ void loadVariableTxt();
+ void save();
+ void load();
+
Common::List<int> &values() { return _variableValues; }
const Common::List<int> &values() const { return _variableValues; }
More information about the Scummvm-git-logs
mailing list