aboutsummaryrefslogtreecommitdiff
path: root/engines/wage/script.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/wage/script.h')
-rw-r--r--engines/wage/script.h34
1 files changed, 27 insertions, 7 deletions
diff --git a/engines/wage/script.h b/engines/wage/script.h
index 7ac8356b18..1c69eb093b 100644
--- a/engines/wage/script.h
+++ b/engines/wage/script.h
@@ -87,43 +87,63 @@ private:
Designed *inputClick;
} _value;
OperandTypes _type;
- String _str;
+ Common::String _str;
Operand(Obj *value, OperandTypes type) {
_value.obj = value;
- _str = value->toString();
_type = type;
}
Operand(Chr *value, OperandTypes type) {
_value.chr = value;
- _str = value->toString();
_type = type;
}
Operand(Scene *value, OperandTypes type) {
_value.scene = value;
- _str = value->toString();
_type = type;
}
Operand(int value, OperandTypes type) {
_value.number = value;
- _str = value;
_type = type;
}
Operand(String *value, OperandTypes type) {
_value.string = value;
- _str = *value;
_type = type;
}
Operand(Designed *value, OperandTypes type) {
_value.inputClick = value;
- _str = value->toString();
_type = type;
}
+
+ Common::String toString() {
+ char buf[128];
+
+ if (_value.obj == NULL)
+ _str = "";
+
+ switch(_type) {
+ case NUMBER:
+ _str = snprintf(buf, 128, "%d", _value.number);
+ return _str;
+ case STRING:
+ case TEXT_INPUT:
+ return *_value.string;
+ case OBJ:
+ return _value.obj->toString();
+ case CHR:
+ return _value.chr->toString();
+ case SCENE:
+ return _value.scene->toString();
+ case CLICK_INPUT:
+ return _value.inputClick->toString();
+ default:
+ error("Unhandled operand type: _type");
+ }
+ }
};
public: