various fixes in TextDisplay

- do not move the cursor when it is already in the correct position
- maintain currentFgColor and currentBgColor fields
- use translations for the game title
This commit is contained in:
Slavasil 2025-03-23 21:23:10 +03:00
parent b8d73df4b9
commit 3f7adfd417
2 changed files with 13 additions and 2 deletions

View File

@ -13,6 +13,8 @@ namespace Game {
"Syntax error in the question database: {0} (line {1} column {2})", "Syntax error in the question database: {0} (line {1} column {2})",
"Cannot get console mode", "Cannot get console mode",
"Cannot set console mode", "Cannot set console mode",
"WHO WANTS TO BECOME",
"A STOPWATCHIONAIRE"
}}, }},
{"ru-RU", new string[] { {"ru-RU", new string[] {
"Не указано ни одного варианта ответа на вопрос", "Не указано ни одного варианта ответа на вопрос",
@ -24,6 +26,8 @@ namespace Game {
"Ошибка синтаксиса в банке вопросов: {0} (строка {1} символ {2})", "Ошибка синтаксиса в банке вопросов: {0} (строка {1} символ {2})",
"Не удалось узнать режим консоли", "Не удалось узнать режим консоли",
"Не удалось установить режим консоли", "Не удалось установить режим консоли",
"КТО ХОЧЕТ СТАТЬ",
"СЕКУНДОМЕРОМ"
}} }}
}; };
@ -41,6 +45,8 @@ namespace Game {
SYNTAX_ERROR, SYNTAX_ERROR,
ERROR_GETCONSOLEMODE, ERROR_GETCONSOLEMODE,
ERROR_SETCONSOLEMODE, ERROR_SETCONSOLEMODE,
TITLE_LINE1,
TITLE_LINE2,
} }
} }
} }

View File

@ -82,8 +82,8 @@ namespace Game.UI {
} }
void DrawTitle(int y, int bgColor) { void DrawTitle(int y, int bgColor) {
string text1 = "КТО ХОЧЕТ СТАТЬ"; string text1 = GetMessage(Message.TITLE_LINE1)!;
string text2 = "СЕКУНДОМЕРОМ"; string text2 = GetMessage(Message.TITLE_LINE2)!;
SetColors(0xffffff, 0); SetColors(0xffffff, 0);
int text1Start = (windowWidth - text1.Length) / 2 + 1; int text1Start = (windowWidth - text1.Length) / 2 + 1;
@ -200,10 +200,12 @@ namespace Game.UI {
if (fg != -1) { if (fg != -1) {
(int r, int g, int b) = ((fg >> 16) & 255, (fg >> 8) & 255, fg & 255); (int r, int g, int b) = ((fg >> 16) & 255, (fg >> 8) & 255, fg & 255);
command.Append(RGB_FG_SEQ_START + r + ';' + g + ';' + b + GRAPHICS_SEQ_END); command.Append(RGB_FG_SEQ_START + r + ';' + g + ';' + b + GRAPHICS_SEQ_END);
currentFgColor = fg;
} }
if (bg != -1) { if (bg != -1) {
(int r, int g, int b) = ((bg >> 16) & 255, (bg >> 8) & 255, bg & 255); (int r, int g, int b) = ((bg >> 16) & 255, (bg >> 8) & 255, bg & 255);
command.Append(RGB_BG_SEQ_START + r + ';' + g + ';' + b + GRAPHICS_SEQ_END); command.Append(RGB_BG_SEQ_START + r + ';' + g + ';' + b + GRAPHICS_SEQ_END);
currentBgColor = bg;
} }
Console.Write(command.ToString()); Console.Write(command.ToString());
} }
@ -215,7 +217,10 @@ namespace Game.UI {
} }
public void SetCursor(int row, int column) { public void SetCursor(int row, int column) {
if (cursorRow == row && cursorCol == column) return;
Console.Write(ESC_SEQ_START + row + ';' + column + SETCURSOR_END); Console.Write(ESC_SEQ_START + row + ';' + column + SETCURSOR_END);
cursorRow = row;
cursorCol = column;
} }
public void HideCursor() { public void HideCursor() {