[Scummvm-git-logs] scummvm master -> 78377e20645631994fd90adcb709b2ecde538b5e
whoozle
noreply at scummvm.org
Mon Mar 9 01:51:36 UTC 2026
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
cf6c7382a5 PHOENIXVR: add valueOf to resolve variable or immediate
78377e2064 PHOENIXVR: remove duplicate log lines
Commit: cf6c7382a5755878c3b95e425571616dee7b0aa3
https://github.com/scummvm/scummvm/commit/cf6c7382a5755878c3b95e425571616dee7b0aa3
Author: Vladimir Menshakov (vladimir.menshakov at gmail.com)
Date: 2026-03-09T01:47:32Z
Commit Message:
PHOENIXVR: add valueOf to resolve variable or immediate
use valueOf in add(), sub() or cmp()
Changed paths:
engines/phoenixvr/commands.h
engines/phoenixvr/script.cpp
engines/phoenixvr/script.h
diff --git a/engines/phoenixvr/commands.h b/engines/phoenixvr/commands.h
index aea490b62ef..eaea7c65b01 100644
--- a/engines/phoenixvr/commands.h
+++ b/engines/phoenixvr/commands.h
@@ -169,27 +169,27 @@ struct ChangeCurseur : public Script::Command {
struct Add : public Script::Command {
Common::String dstVar;
- Common::String srcVar;
- int imm;
+ Common::String arg0;
+ Common::String arg1;
- Add(const Common::Array<Common::String> &args) : dstVar(args[0]), srcVar(args[1]), imm(atoi(args[2].c_str())) {}
+ Add(const Common::Array<Common::String> &args) : dstVar(args[0]), arg0(args[1]), arg1(args[2]) {}
void exec(Script::ExecutionContext &ctx) const override {
- debug("add %s %s %d", dstVar.c_str(), srcVar.c_str(), imm);
- g_engine->setVariable(dstVar, g_engine->getVariable(srcVar) + imm);
+ debug("add %s %s %s", dstVar.c_str(), arg0.c_str(), arg1.c_str());
+ g_engine->setVariable(dstVar, valueOf(arg0) + valueOf(arg1));
}
};
struct Sub : public Script::Command {
Common::String dstVar;
- Common::String srcVar;
- int imm;
+ Common::String arg0;
+ Common::String arg1;
- Sub(const Common::Array<Common::String> &args) : dstVar(args[0]), srcVar(args[1]), imm(atoi(args[2].c_str())) {}
+ Sub(const Common::Array<Common::String> &args) : dstVar(args[0]), arg0(args[1]), arg1(args[2]) {}
void exec(Script::ExecutionContext &ctx) const override {
- debug("sub %s %s %d", dstVar.c_str(), srcVar.c_str(), imm);
- g_engine->setVariable(dstVar, g_engine->getVariable(srcVar) - imm);
+ debug("sub %s %s %s", dstVar.c_str(), arg0.c_str(), arg1.c_str());
+ g_engine->setVariable(dstVar, valueOf(arg0) - valueOf(arg1));
}
};
@@ -270,25 +270,26 @@ struct Cmp : public Script::Command {
Common::String negativeVar;
Common::String arg0;
Common::String op;
- int arg1;
+ Common::String arg1;
Cmp(const Common::Array<Common::String> &args) : var(args[0]), negativeVar(args[1]),
- arg0(args[2]), op(args[3]), arg1(atoi(args[4].c_str())) {}
+ arg0(args[2]), op(args[3]), arg1(args[4]) {}
void exec(Script::ExecutionContext &ctx) const override {
- debug("cmp %s %s %s %s %d", var.c_str(), negativeVar.c_str(), arg0.c_str(), op.c_str(), arg1);
+ debug("cmp %s %s %s %s %s", var.c_str(), negativeVar.c_str(), arg0.c_str(), op.c_str(), arg1.c_str());
bool r;
- auto value0 = g_engine->getVariable(arg0);
+ auto value0 = valueOf(arg0);
+ auto value1 = valueOf(arg1);
if (op == "==") {
- r = value0 == arg1;
+ r = value0 == value1;
} else if (op == "<") {
- r = value0 < arg1;
+ r = value0 < value1;
} else if (op == "<=") {
- r = value0 <= arg1;
+ r = value0 <= value1;
} else if (op == ">") {
- r = value0 > arg1;
+ r = value0 > value1;
} else if (op == ">=") {
- r = value0 >= arg1;
+ r = value0 >= value1;
} else {
error("invalid cmp op %s", op.c_str());
}
diff --git a/engines/phoenixvr/script.cpp b/engines/phoenixvr/script.cpp
index 6acf8711443..2b1332d7af5 100644
--- a/engines/phoenixvr/script.cpp
+++ b/engines/phoenixvr/script.cpp
@@ -368,6 +368,12 @@ void Script::parseLine(const Common::String &line, uint lineno) {
error("invalid directive at line %u: %s", lineno, line.c_str());
}
+int Script::Command::valueOf(const Common::String &value) {
+ if (!value.empty() && (Common::isDigit(value[0]) || value[0] == '-' || value[0] == '+'))
+ return atoi(value.c_str());
+ return g_engine->getVariable(value);
+}
+
Script::~Script() {
}
diff --git a/engines/phoenixvr/script.h b/engines/phoenixvr/script.h
index 27672fcf8da..e84db0e1057 100644
--- a/engines/phoenixvr/script.h
+++ b/engines/phoenixvr/script.h
@@ -57,6 +57,8 @@ public:
struct Command {
virtual ~Command() {}
virtual void exec(ExecutionContext &ctx) const = 0;
+
+ static int valueOf(const Common::String &value);
};
using CommandPtr = Common::SharedPtr<Command>;
Commit: 78377e20645631994fd90adcb709b2ecde538b5e
https://github.com/scummvm/scummvm/commit/78377e20645631994fd90adcb709b2ecde538b5e
Author: Vladimir Menshakov (vladimir.menshakov at gmail.com)
Date: 2026-03-09T01:50:01Z
Commit Message:
PHOENIXVR: remove duplicate log lines
Changed paths:
engines/phoenixvr/commands.h
diff --git a/engines/phoenixvr/commands.h b/engines/phoenixvr/commands.h
index eaea7c65b01..bd698112039 100644
--- a/engines/phoenixvr/commands.h
+++ b/engines/phoenixvr/commands.h
@@ -805,7 +805,6 @@ struct AngleYMax : public Script::Command {
AngleYMax(float min, float max) : yMin(min), yMax(max) {}
void exec(Script::ExecutionContext &ctx) const override {
- debug("angleymax %g %g", yMin, yMax);
if (yMin != yMax) {
debug("angleymax %g %g", yMin, yMax);
g_engine->setYMax(yMin, yMax);
More information about the Scummvm-git-logs
mailing list