Skip to content

Commit f8d75bb

Browse files
committed
ADL: Implement hires6 verb/noun error messages
1 parent d435f5b commit f8d75bb

File tree

4 files changed

+59
-10
lines changed

4 files changed

+59
-10
lines changed

engines/adl/adl.cpp

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -855,6 +855,22 @@ Common::String AdlEngine::getWord(const Common::String &line, uint &index) const
855855
}
856856
}
857857

858+
Common::String AdlEngine::formatVerbError(const Common::String &verbStr) const {
859+
Common::String err = _strings.verbError;
860+
for (uint i = 0; i < verbStr.size(); ++i)
861+
err.setChar(verbStr[i], i + 19);
862+
return err;
863+
}
864+
865+
Common::String AdlEngine::formatNounError(const Common::String &verbStr, const Common::String &nounStr) const {
866+
Common::String err = _strings.nounError;
867+
for (uint i = 0; i < verbStr.size(); ++i)
868+
err.setChar(verbStr[i], i + 19);
869+
for (uint i = 0; i < nounStr.size(); ++i)
870+
err.setChar(nounStr[i], i + 30);
871+
return err;
872+
}
873+
858874
void AdlEngine::getInput(uint &verb, uint &noun) {
859875
while (1) {
860876
_display->printString(_strings.enterCommand);
@@ -867,10 +883,7 @@ void AdlEngine::getInput(uint &verb, uint &noun) {
867883
Common::String verbStr = getWord(line, index);
868884

869885
if (!_verbs.contains(verbStr)) {
870-
Common::String err = _strings.verbError;
871-
for (uint i = 0; i < verbStr.size(); ++i)
872-
err.setChar(verbStr[i], i + 19);
873-
_display->printString(err);
886+
_display->printString(formatVerbError(verbStr));
874887
continue;
875888
}
876889

@@ -879,12 +892,7 @@ void AdlEngine::getInput(uint &verb, uint &noun) {
879892
Common::String nounStr = getWord(line, index);
880893

881894
if (!_nouns.contains(nounStr)) {
882-
Common::String err = _strings.nounError;
883-
for (uint i = 0; i < verbStr.size(); ++i)
884-
err.setChar(verbStr[i], i + 19);
885-
for (uint i = 0; i < nounStr.size(); ++i)
886-
err.setChar(nounStr[i], i + 30);
887-
_display->printString(err);
895+
_display->printString(formatNounError(verbStr, nounStr));
888896
continue;
889897
}
890898

engines/adl/adl.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,8 @@ friend class Console;
234234
Common::String inputString(byte prompt = 0) const;
235235
byte inputKey(bool showCursor = true) const;
236236

237+
virtual Common::String formatVerbError(const Common::String &verbStr) const;
238+
virtual Common::String formatNounError(const Common::String &verbStr, const Common::String &nounStr) const;
237239
void loadWords(Common::ReadStream &stream, WordMap &map, Common::StringArray &pri) const;
238240
void readCommands(Common::ReadStream &stream, Commands &commands);
239241
void checkInput(byte verb, byte noun);

engines/adl/hires6.cpp

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,43 @@ void HiRes6Engine::showRoom() {
363363
_linesPrinted = 0;
364364
}
365365

366+
Common::String HiRes6Engine::formatVerbError(const Common::String &verbStr) const {
367+
Common::String err = _strings.verbError;
368+
369+
for (uint i = 0; i < verbStr.size(); ++i)
370+
err.setChar(verbStr[i], i + 24);
371+
372+
err.setChar(APPLECHAR(' '), 32);
373+
374+
uint i = 24;
375+
while (err[i] != APPLECHAR(' '))
376+
++i;
377+
378+
err.setChar(APPLECHAR('.'), i);
379+
380+
return err;
381+
}
382+
383+
Common::String HiRes6Engine::formatNounError(const Common::String &verbStr, const Common::String &nounStr) const {
384+
Common::String err = _strings.nounError;
385+
386+
for (uint i = 0; i < nounStr.size(); ++i)
387+
err.setChar(nounStr[i], i + 24);
388+
389+
for (uint i = 35; i > 31; --i)
390+
err.setChar(APPLECHAR(' '), i);
391+
392+
uint i = 24;
393+
while (err[i] != APPLECHAR(' '))
394+
++i;
395+
396+
err.setChar(APPLECHAR('I'), i + 1);
397+
err.setChar(APPLECHAR('S'), i + 2);
398+
err.setChar(APPLECHAR('.'), i + 3);
399+
400+
return err;
401+
}
402+
366403
void HiRes6Engine::printString(const Common::String &str) {
367404
Common::String s;
368405
uint found = 0;

engines/adl/hires6.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ class HiRes6Engine : public AdlEngine_v3 {
7474
void initGameState();
7575
void printRoomDescription();
7676
void showRoom();
77+
Common::String formatVerbError(const Common::String &verbStr) const;
78+
Common::String formatNounError(const Common::String &verbStr, const Common::String &nounStr) const;
7779

7880
// AdlEngine_v2
7981
void printString(const Common::String &str);

0 commit comments

Comments
 (0)