aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorEugene Sandulenko2016-01-09 13:40:19 +0100
committerEugene Sandulenko2016-01-09 13:40:19 +0100
commit165066107f9667039a7035b8820fb3f2665c26bf (patch)
treeee59bb33e340b1f7bd3989445a7fab95ca040fc4 /engines
parent047a660dac829cee9f755a31a5f371993f2f9b89 (diff)
downloadscummvm-rg350-165066107f9667039a7035b8820fb3f2665c26bf.tar.gz
scummvm-rg350-165066107f9667039a7035b8820fb3f2665c26bf.tar.bz2
scummvm-rg350-165066107f9667039a7035b8820fb3f2665c26bf.zip
WAGE: Implement performOffer()
Diffstat (limited to 'engines')
-rw-r--r--engines/wage/combat.cpp18
-rw-r--r--engines/wage/entities.cpp9
-rw-r--r--engines/wage/entities.h2
-rw-r--r--engines/wage/wage.cpp6
4 files changed, 23 insertions, 12 deletions
diff --git a/engines/wage/combat.cpp b/engines/wage/combat.cpp
index 7261a55482..cdf336f9f4 100644
--- a/engines/wage/combat.cpp
+++ b/engines/wage/combat.cpp
@@ -77,7 +77,8 @@ void WageEngine::encounter(Chr *player, Chr *chr) {
appendText(chr->_initialComment);
if (chr->_armor[Chr::HEAD_ARMOR] != NULL) {
- msg = chr->getNameWithDefiniteArticle(true);
+ msg = chr->getDefiniteArticle(true);
+ msg += chr->_name;
msg += " is wearing ";
msg += getIndefiniteArticle(chr->_armor[Chr::HEAD_ARMOR]->_name);
msg += ".";
@@ -195,14 +196,25 @@ void WageEngine::performMove(Chr *chr, int validMoves) {
}
void WageEngine::performOffer(Chr *attacker, Chr *victim) {
- warning("STUB: performOffer()");
+ /* TODO: choose in a smarter way? */
+ Obj *obj = attacker->_inventory[0];
+ Common::String msg(attacker->getDefiniteArticle(true));
+ msg += attacker->_name;
+ msg += " offers ";
+ msg += obj->_namePlural ? "some " : getIndefiniteArticle(obj->_name);
+ msg += obj->_name;
+ msg += ".";
+
+ _offer = obj;
}
void WageEngine::performTake(Chr *npc, Obj *obj) {
- Common::String msg(npc->getNameWithDefiniteArticle(true));
+ Common::String msg(npc->getDefiniteArticle(true));
+ msg += npc->_name;
msg += " picks up the ";
msg += getIndefiniteArticle(obj->_name);
msg += obj->_name;
+ msg += ".";
_world->move(obj, npc);
}
diff --git a/engines/wage/entities.cpp b/engines/wage/entities.cpp
index 64e919b978..8472e7844b 100644
--- a/engines/wage/entities.cpp
+++ b/engines/wage/entities.cpp
@@ -432,14 +432,11 @@ int Chr::wearObjIfPossible(Obj *obj) {
return -1;
}
-String &Chr::getNameWithDefiniteArticle(bool capitalize) {
- Common::String *res = new Common::String;
-
+const char *Chr::getDefiniteArticle(bool capitalize) {
if (!_nameProperNoun)
- *res += capitalize ? "The " : "the ";
- *res += _name;
+ return capitalize ? "The " : "the ";
- return *res;
+ return "";
}
diff --git a/engines/wage/entities.h b/engines/wage/entities.h
index 5f1c968424..362e9b59c5 100644
--- a/engines/wage/entities.h
+++ b/engines/wage/entities.h
@@ -221,7 +221,7 @@ public:
WeaponArray *getWeapons(bool includeMagic);
ObjArray *getMagicalObjects();
- String &getNameWithDefiniteArticle(bool capitalize);
+ const char *getDefiniteArticle(bool capitalize);
public:
bool hasNativeWeapon1() {
diff --git a/engines/wage/wage.cpp b/engines/wage/wage.cpp
index c1b654f132..37a6031940 100644
--- a/engines/wage/wage.cpp
+++ b/engines/wage/wage.cpp
@@ -433,13 +433,15 @@ void WageEngine::processTurn(Common::String *textInput, Designed *clickInput) {
Common::String msg;
if (followed) {
- msg = prevMonster->getNameWithDefiniteArticle(true);
+ msg = prevMonster->getDefiniteArticle(true);
+ msg += prevMonster->_name;
msg += " follows you.";
appendText(msg);
_world->move(prevMonster, playerScene);
} else {
msg = "You escape ";
- msg += prevMonster->getNameWithDefiniteArticle(false);
+ msg += prevMonster->getDefiniteArticle(false);
+ msg += prevMonster->_name;
msg += ".";
appendText(msg);
}