WAGE: Implement WageEngine::encounter()

This commit is contained in:
Eugene Sandulenko 2016-01-08 00:55:16 +01:00
parent 87766f6753
commit 51af66371d
3 changed files with 62 additions and 1 deletions

View File

@ -99,4 +99,28 @@ const char *getIndefiniteArticle(String &word) {
return "a ";
}
enum {
GENDER_HE = 0,
GENDER_SHE = 1,
GENDER_IT = 2
};
const char *prependGenderSpecificPronoun(int gender) {
if (gender == GENDER_HE)
return "his ";
else if (gender == GENDER_SHE)
return "her ";
else
return "its ";
}
const char *getGenderSpecificPronoun(int gender, bool capitalize) {
if (gender == GENDER_HE)
return capitalize ? "He" : "he";
else if (gender == GENDER_SHE)
return capitalize ? "She" : "she";
else
return capitalize ? "It" : "it";
}
} // End of namespace Wage

View File

@ -360,7 +360,41 @@ void WageEngine::onMove(Designed *what, Designed *from, Designed *to) {
}
void WageEngine::encounter(Chr *player, Chr *chr) {
warning("STUB WageEngine::encounter()");
Common::String msg("You encounter ");
if (!chr->_nameProperNoun)
msg += getIndefiniteArticle(chr->_name);
msg += chr->_name;
msg += ".";
appendText(msg);
if (!chr->_initialComment.empty())
appendText(chr->_initialComment);
if (chr->_armor[Chr::HEAD_ARMOR] != NULL) {
msg = chr->getNameWithDefiniteArticle(true);
msg += " is wearing ";
msg += getIndefiniteArticle(chr->_armor[Chr::HEAD_ARMOR]->_name);
msg += ".";
appendText(msg);
}
if (chr->_armor[Chr::BODY_ARMOR] != NULL) {
msg = getGenderSpecificPronoun(chr->_gender, true);
msg += " is protected by ";
msg += prependGenderSpecificPronoun(chr->_gender);
msg += chr->_armor[Chr::BODY_ARMOR]->_name;
msg += ".";
appendText(msg);
}
if (chr->_armor[Chr::SHIELD_ARMOR] != NULL) {
Obj *obj = chr->_armor[Chr::SHIELD_ARMOR];
msg = getGenderSpecificPronoun(chr->_gender, true);
msg += " carries ";
if (!obj->_namePlural)
msg += getIndefiniteArticle(obj->_name);
msg += obj->_name;
msg += ".";
appendText(msg);
}
}
void WageEngine::performCombatAction(Chr *npc, Chr *player) {

View File

@ -99,6 +99,9 @@ enum {
Common::String readPascalString(Common::SeekableReadStream *in);
Common::Rect *readRect(Common::SeekableReadStream *in);
const char *getIndefiniteArticle(String &word);
const char *prependGenderSpecificPronoun(int gender);
const char *getGenderSpecificPronoun(int gender, bool capitalize);
typedef Common::Array<byte *> Patterns;