From 1ef22b25a4fa5d736600f05b4fb3e8d1e2653147 Mon Sep 17 00:00:00 2001 From: ZivDero Date: Wed, 18 Sep 2024 03:58:06 +0300 Subject: [PATCH] Clean up waypoint number conversion code --- src/extensions/scenario/scenarioext_hooks.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/extensions/scenario/scenarioext_hooks.cpp b/src/extensions/scenario/scenarioext_hooks.cpp index f35f34714..aecc35edd 100644 --- a/src/extensions/scenario/scenarioext_hooks.cpp +++ b/src/extensions/scenario/scenarioext_hooks.cpp @@ -150,6 +150,8 @@ DECLARE_PATCH(_Fill_In_Data_Home_Cell_Patch) */ const char* _Waypoint_To_Name(int wp) { + enum { CHAR_COUNT = 26 }; + static char buffer[8]{ '\0' }; if (wp < 0) @@ -161,10 +163,10 @@ const char* _Waypoint_To_Name(int wp) while (wp > 0) { --pos; - char m = wp % 26; - if (m == 0) m = 26; + char m = wp % CHAR_COUNT; + if (m == 0) m = CHAR_COUNT; buffer[pos] = m + '@'; // '@' = 'A' - 1 - wp = (wp - m) / 26; + wp = (wp - m) / CHAR_COUNT; } return buffer + pos; @@ -180,19 +182,21 @@ const char* _Waypoint_To_Name(int wp) */ int _Waypoint_From_Name(char* wp) { + enum { CHAR_COUNT = 26 }; + int n = 0; int len = strlen(wp); - for (int i = len - 1, j = 1; i >= 0; i--, j *= 26) + for (int i = len - 1, j = 1; i >= 0; i--, j *= CHAR_COUNT) { int c = toupper(wp[i]); if (c < 'A' || c > 'Z') return WAYPOINT_NONE; - n += (c - 64) * j; + n += (c - '@') * j; // '@' = 'A' - 1 } - return (n - 1); + return n - 1; }