diff options
-rw-r--r-- | engines/sherlock/tattoo/tattoo_darts.cpp | 105 | ||||
-rw-r--r-- | engines/sherlock/tattoo/tattoo_fixed_text.cpp | 84 | ||||
-rw-r--r-- | engines/sherlock/tattoo/tattoo_fixed_text.h | 38 |
3 files changed, 141 insertions, 86 deletions
diff --git a/engines/sherlock/tattoo/tattoo_darts.cpp b/engines/sherlock/tattoo/tattoo_darts.cpp index a430ad5a62..fe707a8c13 100644 --- a/engines/sherlock/tattoo/tattoo_darts.cpp +++ b/engines/sherlock/tattoo/tattoo_darts.cpp @@ -83,7 +83,6 @@ void Darts::playDarts(GameType gameType) { int numHits = 0; bool gameOver = false; bool done = false; - const char *const NUM_HITS_STR[3] = { "a", FIXED(Double), FIXED(Triple) }; // Set the game mode _gameType = gameType; @@ -166,49 +165,82 @@ void Darts::playDarts(GameType gameType) { showStatus(playerNum); screen._backBuffer2.blitFrom(screen._backBuffer1, Common::Point(_dartInfo.left, _dartInfo.top - 1), Common::Rect(_dartInfo.left, _dartInfo.top - 1, _dartInfo.right, _dartInfo.bottom - 1)); - screen.print(Common::Point(_dartInfo.left, _dartInfo.top), 0, "%s # %d", FIXED(Dart), idx + 1); + screen.print(Common::Point(_dartInfo.left, _dartInfo.top), 0, FIXED(DartsCurrentDart), idx + 1); if (_gameType == GAME_301) { - if (_vm->getLanguage() == Common::FR_FRA) - screen.print(Common::Point(_dartInfo.left, _dartInfo.top + _spacing), 0, - "%s %s: %d", FIXED(Scored), FIXED(Points), lastDart); - else - screen.print(Common::Point(_dartInfo.left, _dartInfo.top + _spacing), 0, - "%s %d %s", FIXED(Scored), lastDart, FIXED(Points)); + // "Scored x points" + Common::String scoredPoints; + + // original treated 1 point and multiple points the same. Wrote "Scored 1 points" + if (lastDart == 1) { + scoredPoints = Common::String::format(FIXED(DartsScoredPoint), lastDart); + } else { + scoredPoints = Common::String::format(FIXED(DartsScoredPoints), lastDart); + } + + screen.print(Common::Point(_dartInfo.left, _dartInfo.top + _spacing), 0, scoredPoints.c_str()); } else { - if (lastDart != 25) - screen.print(Common::Point(_dartInfo.left, _dartInfo.top + _spacing), 0, - "%s %s %d", FIXED(Hit), NUM_HITS_STR[numHits - 1], lastDart); - else - screen.print(Common::Point(_dartInfo.left, _dartInfo.top + _spacing), 0, - "%s %s %s", FIXED(Hit), NUM_HITS_STR[numHits - 1], FIXED(Bullseye)); + Common::String hitText; + + if (lastDart != 25) { + // Regular hit + switch (numHits) { + case 1: // "Hit a X" + hitText = Common::String::format(FIXED(DartsHitSingle), lastDart); + break; + case 2: // "Hit double X" + hitText = Common::String::format(FIXED(DartsHitDouble), lastDart); + break; + case 3: // "Hit triple X" + hitText = Common::String::format(FIXED(DartsHitTriple), lastDart); + break; + default: + break; + } + } else { + // Bullseye + switch (numHits) { + case 1: + hitText = Common::String(FIXED(DartsHitSingleBullseye)); + break; + case 2: + hitText = Common::String(FIXED(DartsHitDoubleBullseye)); + break; + case 3: + hitText = Common::String(FIXED(DartsHitTripleBullseye)); + break; + default: + break; + } + } + screen.print(Common::Point(_dartInfo.left, _dartInfo.top + _spacing), 0, hitText.c_str()); } if (score != 0 && playerNum == 0 && !gameOver) screen.print(Common::Point(_dartInfo.left, _dartInfo.top + _spacing * 3), 0, - "%s", FIXED(PressAKey)); + "%s", FIXED(DartsPressKey)); if (gameOver) { screen.print(Common::Point(_dartInfo.left, _dartInfo.top + _spacing * 3), - 0, "%s", FIXED(GameOver)); + 0, "%s", FIXED(DartsGameOver)); if (playerNum == 0) { screen.print(Common::Point(_dartInfo.left, _dartInfo.top + _spacing * 4), 0, - "%s %s", FIXED(Holmes), FIXED(Wins)); + FIXED(DartsWins), FIXED(DartsPlayerHolmes)); _vm->setFlagsDirect(531); } else { screen.print(Common::Point(_dartInfo.left, _dartInfo.top + _spacing * 4), 0, - "%s %s!", _opponent.c_str(), FIXED(Wins)); + FIXED(DartsWins), _opponent.c_str()); _vm->setFlagsDirect(530); } screen.print(Common::Point(_dartInfo.left, _dartInfo.top + _spacing * 5), 0, - "%s", FIXED(PressAKey)); + "%s", FIXED(DartsPressKey)); done = true; idx = 10; } else if (_gameType == GAME_301 && score < 0) { screen.print(Common::Point(_dartInfo.left, _dartInfo.top + _spacing * 2), 0, - "%s!", FIXED(Busted)); + "%s!", FIXED(DartsBusted)); // End turn idx = 10; @@ -227,10 +259,15 @@ void Darts::playDarts(GameType gameType) { done = true; break; } + // Wait for keypress + do { + events.pollEventsAndWait(); + events.setButtonState(); + } while (!_vm->shouldQuit() && !events.kbHit() && !events._pressed); } else { - events.wait(20); + events.wait(40); } - + // Clears the status part of the board screen._backBuffer1.blitFrom(screen._backBuffer2, Common::Point(_dartInfo.left, _dartInfo.top - 1), Common::Rect(_dartInfo.left, _dartInfo.top - 1, _dartInfo.right, _dartInfo.bottom - 1)); screen.blitFrom(screen._backBuffer1); @@ -306,7 +343,7 @@ void Darts::initDarts() { } } - _opponent = FIXED(Jock); + _opponent = FIXED(DartsPlayerJock); } void Darts::loadDarts() { @@ -349,7 +386,7 @@ void Darts::showNames(int playerNum) { byte color; color = playerNum == 0 ? PLAYER_COLOR : DART_COLOR_FORE; - screen.print(Common::Point(STATUS_INFO_X, STATUS_INFO_Y), 0, "%s", FIXED(Holmes)); + screen.print(Common::Point(STATUS_INFO_X, STATUS_INFO_Y), 0, "%s", FIXED(DartsPlayerHolmes)); screen._backBuffer1.fillRect(Common::Rect(STATUS_INFO_X, STATUS_INFO_Y + _spacing + 1, STATUS_INFO_X + 50, STATUS_INFO_Y + _spacing + 3), color); screen.fillRect(Common::Rect(STATUS_INFO_X, STATUS_INFO_Y + _spacing + 1, @@ -367,7 +404,7 @@ void Darts::showNames(int playerNum) { void Darts::showStatus(int playerNum) { Screen &screen = *_vm->_screen; - const char *const CRICKET_SCORE_NAME[7] = { "20", "19", "18", "17", "16", "15", FIXED(Bull) }; + const char *const CRICKET_SCORE_NAME[7] = { "20", "19", "18", "17", "16", "15", FIXED(DartsBull) }; screen._backBuffer1.blitFrom(screen._backBuffer2, Common::Point(STATUS_INFO_X, STATUS_INFO_Y + 10), Common::Rect(STATUS_INFO_X, STATUS_INFO_Y + 10, STATUS_INFO_X + STATUS_INFO_WIDTH, @@ -377,10 +414,15 @@ void Darts::showStatus(int playerNum) { screen.print(Common::Point(STATUS2_INFO_X + 30, STATUS_INFO_Y + _spacing + 4), 0, "%d", _score2); int temp = (_gameType == GAME_CRICKET) ? STATUS_INFO_Y + 10 * _spacing + 5 : STATUS_INFO_Y + 55; - screen.print(Common::Point(STATUS_INFO_X, temp), 0, "%s: %d", FIXED(Round), _roundNum); + + // "Round: x" + Common::String dartsRoundStatus = Common::String::format(FIXED(DartsCurrentRound), _roundNum); + screen.print(Common::Point(STATUS_INFO_X, temp), 0, dartsRoundStatus.c_str()); if (_gameType == GAME_301) { - screen.print(Common::Point(STATUS_INFO_X, STATUS_INFO_Y + 75), 0, "%s: %d", FIXED(TurnTotal), _roundScore); + // "Turn Total: x" + Common::String dartsTotalPoints = Common::String::format(FIXED(DartsCurrentTotalPoints), _roundScore); + screen.print(Common::Point(STATUS_INFO_X, STATUS_INFO_Y + 75), 0, dartsTotalPoints.c_str()); } else { // Show cricket scores for (int x = 0; x < 7; ++x) { @@ -890,13 +932,16 @@ int Darts::throwDart(int dartNum, int computer) { events.clearEvents(); erasePowerBars(); - screen.print(Common::Point(_dartInfo.left, _dartInfo.top), 0, "%s # %d", FIXED(Dart), dartNum); + + // "Dart # x" + Common::String currentDart = Common::String::format(FIXED(DartsCurrentDart), dartNum); + screen.print(Common::Point(_dartInfo.left, _dartInfo.top), 0, currentDart.c_str()); drawDartsLeft(dartNum, computer); if (!computer) { - screen.print(Common::Point(_dartInfo.left, _dartInfo.top + _spacing), 0, "%s", FIXED(HitAKey)); - screen.print(Common::Point(_dartInfo.left, _dartInfo.top + _spacing * 2), 0, "%s", FIXED(ToStart)); + screen.print(Common::Point(_dartInfo.left, _dartInfo.top + _spacing), 0, "%s", FIXED(DartsStartPressKey1)); + screen.print(Common::Point(_dartInfo.left, _dartInfo.top + _spacing * 2), 0, "%s", FIXED(DartsStartPressKey2)); } if (!computer) { diff --git a/engines/sherlock/tattoo/tattoo_fixed_text.cpp b/engines/sherlock/tattoo/tattoo_fixed_text.cpp index 4d90625ad1..f48bf39c8e 100644 --- a/engines/sherlock/tattoo/tattoo_fixed_text.cpp +++ b/engines/sherlock/tattoo/tattoo_fixed_text.cpp @@ -66,25 +66,27 @@ static const char *const fixedTextEN[] = { "Search Backwards", "Search Forwards", "Text Not Found !", - + // Darts "Holmes", "Jock", "Bull", - "Round", - "Turn Total", - "Dart", - "to start", + "Round: %d", + "Turn Total: %d", + "Dart # %d", "Hit a key", + "To start", "Press a key", - "bullseye", // ?? - "GAME OVER", - "BUSTED", - "Wins", - "Scored", - "points", - "Hit %s %d", - "Double", - "Triple", + "GAME OVER!", + "BUSTED!", + "%s Wins", + "Scored %d point", // original: treated 1 point and multiple points the same ("Scored 1 points") + "Scored %d points", + "Hit a %d", + "Hit double %d", + "Hit triple %d", + "Hit a bullseye", + "Hit double bullseye", + "Hit triple bullseye", "Apply", "Water", @@ -249,25 +251,27 @@ static const char *const fixedTextDE[] = { "R\201ckw\204rts suchen ", "Vorw\204rts suchen ", "Text nicht gefunden", - + // Darts "Holmes", "Jock", "Bull", "Runde: %d", "Gesamt: %d", "Pfeil # %d", - "zum Starten", "Taste dr\201cken", + "zum Starten", "Taste dr\201cken", - "Bullseye", // ?? "SPIEL BEENDET!", "VERLOREN!", - "Gewinnt!", // "Holmes Gewinnt!", "%s Gewinnt!" + "%s gewinnt!", // "Holmes Gewinnt!", "%s Gewinnt!", original: "%s Gewinnt!" + "Erzielte %d Punkt", // original: treated 1 point and multiple points the same ("Scored 1 points") "Erzielte %d Punkte", - "Punkte", // ?? - "Treffer %s %d", - "Doppel", - "Dreifach", + "%d getroffen", // original: "Treffer %s %d" + "Doppel %d getroffen", // original: see above + "Dreifach %d getroffen", // original: see above + "Bullseye getroffen", + "Doppel Bullseye getroffen", + "Dreifach Bullseye getroffen", "Benutze", "Wasser", @@ -432,25 +436,27 @@ static const char *const fixedTextFR[] = { "Chercher avant", "Chercher apr\212s", "Texte introuvable !", - + // Darts "Holmes", "Jock", "Bull", "Tour: %d", "Total: %d", "Fl\202chette # %d", - "pour commencer", "Appuyez sur C", + "pour commencer", "Appuyez sur C", - "Bullseye", // ?? "FIN DE LA PARTIE!", // original: "Fin de la partie!" "FIASCO!", - "Gagnant!", // "Holmes Gagnant!", "%s Gagnant!" - "Total des points: %d", - "Punkte", // ?? - "Treffer %s %d", - "double", - "triple", + "%s a gagné!", // "Holmes Gagnant!", "%s Gagnant!" <--- FIXXXX + "Rapporte %d point", // original: treated 1 point and multiple points the same ("Scored 1 points") + "Rapporte %d points", // original: Total des points: %d", + "Touche un %d", // original: ??? + "Touche double %d", + "Touche triple %d", + "Touche le Bullseye", + "Touche double Bullseye", + "Touche triple Bullseye", "Mouillez", "Puis", @@ -623,18 +629,20 @@ static const char *const fixedTextES[] = { "Vuelta: %d", "Total del Turno: %d", "Dardo # %d", - "para empezar", "Pulsa una tecla", + "para empezar", "Pulsa una tecla", - "Golpe %s ojo de buey", // ?? "FIN DE LA PARTIDA!", "ROTO!", - "Gana!", // "Holmes Gana!", "%s Gana!" + "%s gana!", // "Holmes Gana!", "%s Gana!", original: "%s Gana!" + "Puntuado %d punto", // original: treated 1 point and multiple points the same ("Scored 1 points") "Puntuado %d puntos", - "puntos", // ?? - "Golpe %s %d", - "doble", - "triple", + "Golpe un %d", + "Gople doble %d", + "Gople triple %d", + "Golpe un ojo de buey", + "Gople doble ojo de buey", + "Gople triple ojo de buey", "aplicar", "Agua", diff --git a/engines/sherlock/tattoo/tattoo_fixed_text.h b/engines/sherlock/tattoo/tattoo_fixed_text.h index 48d237db3c..da1159eec9 100644 --- a/engines/sherlock/tattoo/tattoo_fixed_text.h +++ b/engines/sherlock/tattoo/tattoo_fixed_text.h @@ -68,24 +68,26 @@ enum FixedTextId { kFixedText_SearchForwards, kFixedText_TextNotFound, - kFixedText_Holmes, - kFixedText_Jock, - kFixedText_Bull, - kFixedText_Round, - kFixedText_TurnTotal, - kFixedText_Dart, - kFixedText_ToStart, - kFixedText_HitAKey, - kFixedText_PressAKey, - kFixedText_Bullseye, - kFixedText_GameOver, - kFixedText_Busted, - kFixedText_Wins, - kFixedText_Scored, - kFixedText_Points, - kFixedText_Hit, - kFixedText_Double, - kFixedText_Triple, + kFixedText_DartsPlayerHolmes, + kFixedText_DartsPlayerJock, + kFixedText_DartsBull, + kFixedText_DartsCurrentRound, + kFixedText_DartsCurrentTotalPoints, + kFixedText_DartsCurrentDart, + kFixedText_DartsStartPressKey1, + kFixedText_DartsStartPressKey2, + kFixedText_DartsPressKey, + kFixedText_DartsGameOver, + kFixedText_DartsBusted, + kFixedText_DartsWins, + kFixedText_DartsScoredPoint, + kFixedText_DartsScoredPoints, + kFixedText_DartsHitSingle, + kFixedText_DartsHitDouble, + kFixedText_DartsHitTriple, + kFixedText_DartsHitSingleBullseye, + kFixedText_DartsHitDoubleBullseye, + kFixedText_DartsHitTripleBullseye, kFixedText_Apply, kFixedText_Water, |