diff options
author | Eugene Sandulenko | 2017-02-22 17:05:08 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2017-02-22 17:05:08 +0100 |
commit | 9cdeb4c88ec5dafba4640c3cc442b9486a068ba7 (patch) | |
tree | 7bdd5d24f603c30a1bf7e16c2efee129c461c94b /engines/director/lingo | |
parent | d2fe6628f2ac6542f6c39ffeff06c254be52a5e8 (diff) | |
download | scummvm-rg350-9cdeb4c88ec5dafba4640c3cc442b9486a068ba7.tar.gz scummvm-rg350-9cdeb4c88ec5dafba4640c3cc442b9486a068ba7.tar.bz2 scummvm-rg350-9cdeb4c88ec5dafba4640c3cc442b9486a068ba7.zip |
DIRECTOR: Lingo: Implemented b_field() method
Diffstat (limited to 'engines/director/lingo')
-rw-r--r-- | engines/director/lingo/lingo-builtins.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp index f4c26a2193..6411c59d4f 100644 --- a/engines/director/lingo/lingo-builtins.cpp +++ b/engines/director/lingo/lingo-builtins.cpp @@ -1505,7 +1505,21 @@ void Lingo::b_cast(int nargs) { void Lingo::b_field(int nargs) { Datum d = g_lingo->pop(); - warning("STUB: b_field"); + int id; + + if (d.type == STRING) { + if (g_director->getCurrentScore()->_castsNames.contains(*d.u.s)) + id = g_director->getCurrentScore()->_castsNames[*d.u.s]; + else + error("b_filed: Reference to non-existent field: %s", d.u.s->c_str()); + } else if (d.type == INT || d.type == FLOAT) { + d.toInt(); + id = d.u.i; + } else { + error("b_field: Incorrect reference type: %s", d.type2str()); + } + + d.u.i = id; d.type = REFERENCE; |