aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/ui/kia.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/bladerunner/ui/kia.cpp')
-rw-r--r--engines/bladerunner/ui/kia.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/engines/bladerunner/ui/kia.cpp b/engines/bladerunner/ui/kia.cpp
index 3e9011e0c0..9ec9d686c0 100644
--- a/engines/bladerunner/ui/kia.cpp
+++ b/engines/bladerunner/ui/kia.cpp
@@ -599,6 +599,48 @@ void KIA::playImage(const Graphics::Surface &image) {
_playerImage.convertToInPlace(screenPixelFormat());
}
+const char *KIA::scrambleSuspectsName(const char *name) {
+ static char buffer[32];
+
+ unsigned char *bufferPtr = (unsigned char *)buffer;
+ const unsigned char *namePtr = (const unsigned char *)name;
+
+ for (int i = 0 ; i < 6; ++i) {
+ if (_vm->_language == Common::RU_RUS && _vm->_russianCP1251) {
+ // Algorithm added by Siberian Studio in R4 patch
+ if (*namePtr >= 0xC0) {
+ unsigned char upper = *namePtr & 0xDF;
+ if (upper < 201) {
+ *bufferPtr++ = upper - 143; /* Map А-И to 1-9 */
+ } else {
+ *bufferPtr++ = upper - 136; /* Map Й-Я to A-W */
+ }
+ } else {
+ *bufferPtr++ = '0';
+ }
+ } else {
+ if (Common::isAlpha(*namePtr)) {
+ char upper = toupper(*namePtr);
+ if ( upper < 'J' ) {
+ *bufferPtr++ = upper - 16; /* Map A-I to 1-9 */
+ } else {
+ *bufferPtr++ = upper - 9; /* Map J-Z to A-Q */
+ }
+ } else {
+ *bufferPtr++ = '0';
+ }
+ }
+ if (*namePtr) {
+ ++namePtr;
+ }
+ if (i == 1) {
+ *bufferPtr++ = '-';
+ }
+ }
+ *bufferPtr = 0;
+ return buffer;
+}
+
void KIA::mouseDownCallback(int buttonId, void *callbackData) {
KIA *self = (KIA *)callbackData;
switch (buttonId) {