diff options
author | Eugene Sandulenko | 2016-01-03 20:23:39 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2016-01-03 20:23:39 +0100 |
commit | d66c3a21f1b2305fe30640213ff8dba0a20595c5 (patch) | |
tree | 4b7666ed047acdaaf4130706be5dd932a6603de3 /engines/wage/script.cpp | |
parent | 07d11b4af695e7fdc2d3d686f3d24e60387bb749 (diff) | |
download | scummvm-rg350-d66c3a21f1b2305fe30640213ff8dba0a20595c5.tar.gz scummvm-rg350-d66c3a21f1b2305fe30640213ff8dba0a20595c5.tar.bz2 scummvm-rg350-d66c3a21f1b2305fe30640213ff8dba0a20595c5.zip |
WAGE: Implement getGroundItemsList()
Diffstat (limited to 'engines/wage/script.cpp')
-rw-r--r-- | engines/wage/script.cpp | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/engines/wage/script.cpp b/engines/wage/script.cpp index 8dde95ea55..740d8ec164 100644 --- a/engines/wage/script.cpp +++ b/engines/wage/script.cpp @@ -941,10 +941,42 @@ void Script::handleLookCommand() { } Common::String *Script::getGroundItemsList(Scene *scene) { - warning("STUB: getGroundItemsList"); + Common::Array<Obj *> objs; + + for (Common::List<Obj *>::const_iterator it = scene->_objs.begin(); it != scene->_objs.end(); ++it) + if ((*it)->_type != Obj::IMMOBILE_OBJECT) + objs.push_back(*it); + + if (objs.size()) { + Common::String *res = new Common::String("On the ground you see "); + appendObjNames(*res, objs); + return res; + } return NULL; } +void Script::appendObjNames(Common::String &str, Common::Array<Obj *> &objs) { + for (int i = 0; i < objs.size(); i++) { + Obj *obj = objs[i]; + + if (!obj->_namePlural) + str += getIndefiniteArticle(obj->_name); + else + str += "some "; + + str += obj->_name; + + if (i == objs.size() - 1) { + str += "."; + } else if (i == objs.size() - 2) { + if (objs.size() > 2) + str += ","; + str += " and "; + } else { + str += ", "; + } + } +} void Script::handleInventoryCommand() { warning("STUB: handleInventoryCommand"); |