aboutsummaryrefslogtreecommitdiff
path: root/engines/wage/script.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2016-01-03 20:23:39 +0100
committerEugene Sandulenko2016-01-03 20:23:39 +0100
commitd66c3a21f1b2305fe30640213ff8dba0a20595c5 (patch)
tree4b7666ed047acdaaf4130706be5dd932a6603de3 /engines/wage/script.cpp
parent07d11b4af695e7fdc2d3d686f3d24e60387bb749 (diff)
downloadscummvm-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.cpp34
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");