فهرست منبع

Merge pull request #5927 from Laserlicht/fps_draw

optimized fps/battery box drawing
Ivan Savenko 3 ماه پیش
والد
کامیت
2877fa3301

+ 0 - 2
Mods/vcmi/Content/config/chinese.json

@@ -304,8 +304,6 @@
 	"vcmi.systemOptions.longTouchMenu.hover"     : "选择长触延迟",
 	"vcmi.systemOptions.longTouchMenu.hover"     : "选择长触延迟",
 	"vcmi.systemOptions.longTouchMenu.help"      : "改变长触延迟。",
 	"vcmi.systemOptions.longTouchMenu.help"      : "改变长触延迟。",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d 毫秒",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d 毫秒",
-	"vcmi.systemOptions.framerateButton.hover"  : "显示FPS",
-	"vcmi.systemOptions.framerateButton.help"   : "{显示FPS}\n\n切换在游戏窗口角落显FPS指示器。",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"  : "触觉反馈",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"  : "触觉反馈",
 	"vcmi.systemOptions.hapticFeedbackButton.help"   : "{触觉反馈}\n\n切换触摸输入的触觉反馈。",
 	"vcmi.systemOptions.hapticFeedbackButton.help"   : "{触觉反馈}\n\n切换触摸输入的触觉反馈。",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "界面增强",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "界面增强",

+ 0 - 2
Mods/vcmi/Content/config/czech.json

@@ -311,8 +311,6 @@
 	"vcmi.systemOptions.longTouchMenu.hover"     : "Vybrat dobu dlouhého podržení",
 	"vcmi.systemOptions.longTouchMenu.hover"     : "Vybrat dobu dlouhého podržení",
 	"vcmi.systemOptions.longTouchMenu.help"      : "Změnit dobu dlouhého podržení.",
 	"vcmi.systemOptions.longTouchMenu.help"      : "Změnit dobu dlouhého podržení.",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d milisekund",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d milisekund",
-	"vcmi.systemOptions.framerateButton.hover"  : "Zobrazit FPS",
-	"vcmi.systemOptions.framerateButton.help"   : "{Zobrazit FPS}\n\nPřepne viditelnost počítadla snímků za sekundu v rohu obrazovky hry.",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"  : "Vibrace",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"  : "Vibrace",
 	"vcmi.systemOptions.hapticFeedbackButton.help"   : "{Vibrace}\n\nPřepnout stav vibrací při dotykovém ovládání.",
 	"vcmi.systemOptions.hapticFeedbackButton.help"   : "{Vibrace}\n\nPřepnout stav vibrací při dotykovém ovládání.",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "Vylepšení rozhraní",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "Vylepšení rozhraní",

+ 5 - 2
Mods/vcmi/Content/config/english.json

@@ -97,6 +97,9 @@
 	"vcmi.randomMap.description.monster.normal" : "normal",
 	"vcmi.randomMap.description.monster.normal" : "normal",
 	"vcmi.randomMap.description.monster.strong" : "strong",
 	"vcmi.randomMap.description.monster.strong" : "strong",
 
 
+	"vcmi.overlay.battery"  : "Battery",
+	"vcmi.overlay.charging"  : "Charging",
+
 	"vcmi.spellBook.search" : "search...",
 	"vcmi.spellBook.search" : "search...",
 	"vcmi.spellBook.tab.hover" : "%s Spells",
 	"vcmi.spellBook.tab.hover" : "%s Spells",
 	"vcmi.spellBook.tab.help" : "Turn to view %s spells",
 	"vcmi.spellBook.tab.help" : "Turn to view %s spells",
@@ -313,8 +316,8 @@
 	"vcmi.systemOptions.longTouchMenu.hover"     : "Select Long Touch Interval",
 	"vcmi.systemOptions.longTouchMenu.hover"     : "Select Long Touch Interval",
 	"vcmi.systemOptions.longTouchMenu.help"      : "Change duration of long touch interval.",
 	"vcmi.systemOptions.longTouchMenu.help"      : "Change duration of long touch interval.",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d milliseconds",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d milliseconds",
-	"vcmi.systemOptions.framerateButton.hover"  : "Show FPS",
-	"vcmi.systemOptions.framerateButton.help"   : "{Show FPS}\n\nToggle the visibility of the Frames Per Second counter in the corner of the game window.",
+	"vcmi.systemOptions.performanceOverlayButton.hover"  : "Show Performance Overlay",
+	"vcmi.systemOptions.performanceOverlayButton.help"   : "{Show Performance Overlay}\n\nToggle the visibility of the overlay with additional information like frames per second, time and battery charge level (if available) in the corner of the game window.",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"  : "Haptic feedback",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"  : "Haptic feedback",
 	"vcmi.systemOptions.hapticFeedbackButton.help"   : "{Haptic feedback}\n\nToggle the haptic feedback on touch inputs.",
 	"vcmi.systemOptions.hapticFeedbackButton.help"   : "{Haptic feedback}\n\nToggle the haptic feedback on touch inputs.",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "Interface Enhancements",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "Interface Enhancements",

+ 0 - 2
Mods/vcmi/Content/config/french.json

@@ -68,8 +68,6 @@
 	"vcmi.systemOptions.longTouchMenu.hover"     : "Sélectionner l'intervalle de touche long",
 	"vcmi.systemOptions.longTouchMenu.hover"     : "Sélectionner l'intervalle de touche long",
 	"vcmi.systemOptions.longTouchMenu.help"      : "Changer la durée de l'intervalle de touche long.",
 	"vcmi.systemOptions.longTouchMenu.help"      : "Changer la durée de l'intervalle de touche long.",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d millisecondes",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d millisecondes",
-	"vcmi.systemOptions.framerateButton.hover"  : "Afficher les FPS",
-	"vcmi.systemOptions.framerateButton.help"   : "{Show FPS}\n\nAfficher/masquer le compteur de Frames Par Seconde dans le coin de la fenêtre du jeu",
 
 
 	"vcmi.adventureOptions.infoBarPick.hover" : "Afficher les messages dans le panneau d'information",
 	"vcmi.adventureOptions.infoBarPick.hover" : "Afficher les messages dans le panneau d'information",
 	"vcmi.adventureOptions.infoBarPick.help" : "{Show Messages in Info Panel}\n\nAutant que possible, les messages de jeu de la visite des objets de la carte seront affichés dans le panneau d'informations, au lieu de faire apparaître dans une fenêtre séparée.",
 	"vcmi.adventureOptions.infoBarPick.help" : "{Show Messages in Info Panel}\n\nAutant que possible, les messages de jeu de la visite des objets de la carte seront affichés dans le panneau d'informations, au lieu de faire apparaître dans une fenêtre séparée.",

+ 5 - 2
Mods/vcmi/Content/config/german.json

@@ -97,6 +97,9 @@
 	"vcmi.randomMap.description.monster.normal" : "Normal",
 	"vcmi.randomMap.description.monster.normal" : "Normal",
 	"vcmi.randomMap.description.monster.strong" : "Stark",
 	"vcmi.randomMap.description.monster.strong" : "Stark",
 
 
+	"vcmi.overlay.battery"  : "Batterie",
+	"vcmi.overlay.charging"  : "Lädt",
+
 	"vcmi.spellBook.search" : "suchen...",
 	"vcmi.spellBook.search" : "suchen...",
 	"vcmi.spellBook.tab.hover" : "%szauber",
 	"vcmi.spellBook.tab.hover" : "%szauber",
 	"vcmi.spellBook.tab.help" : "Zu %szaubersprüchen blättern",
 	"vcmi.spellBook.tab.help" : "Zu %szaubersprüchen blättern",
@@ -313,8 +316,8 @@
 	"vcmi.systemOptions.longTouchMenu.hover"     : "Wähle Dauer für Touch",
 	"vcmi.systemOptions.longTouchMenu.hover"     : "Wähle Dauer für Touch",
 	"vcmi.systemOptions.longTouchMenu.help"      : "Ändere die Dauer für den langen Touch",
 	"vcmi.systemOptions.longTouchMenu.help"      : "Ändere die Dauer für den langen Touch",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d Millisekunden",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d Millisekunden",
-	"vcmi.systemOptions.framerateButton.hover"  : "FPS anzeigen",
-	"vcmi.systemOptions.framerateButton.help"   : "{FPS anzeigen}\n\n Schaltet die Sichtbarkeit des Zählers für die Bilder pro Sekunde in der Ecke des Spielfensters um.",
+	"vcmi.systemOptions.performanceOverlayButton.hover"  : "Leistungs-Overlay anzeigen",
+	"vcmi.systemOptions.performanceOverlayButton.help"   : "{Leistungs-Overlay anzeigen}\n\n Schaltet die Sichtbarkeit eines Overlays für zusätzliche Informationen, wie eines Zählers für die Bilder pro Sekunde, der Uhrzeit oder des Batterieladezustands (wenn verfügbar) in der Ecke des Spielfensters um.",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"  : "Haptisches Feedback",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"  : "Haptisches Feedback",
 	"vcmi.systemOptions.hapticFeedbackButton.help"   : "{Haptisches Feedback}\n\nHaptisches Feedback bei Touch-Eingaben.",
 	"vcmi.systemOptions.hapticFeedbackButton.help"   : "{Haptisches Feedback}\n\nHaptisches Feedback bei Touch-Eingaben.",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "Interface Verbesserungen",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "Interface Verbesserungen",

+ 0 - 2
Mods/vcmi/Content/config/hungarian.json

@@ -292,8 +292,6 @@
 	"vcmi.systemOptions.longTouchMenu.hover"     : "Hosszú érintés időtartamának kiválasztása",
 	"vcmi.systemOptions.longTouchMenu.hover"     : "Hosszú érintés időtartamának kiválasztása",
 	"vcmi.systemOptions.longTouchMenu.help"      : "Hosszú érintés időtartamának módosítása.",
 	"vcmi.systemOptions.longTouchMenu.help"      : "Hosszú érintés időtartamának módosítása.",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d milliszekundum",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d milliszekundum",
-	"vcmi.systemOptions.framerateButton.hover"  : "FPS megjelenítése",
-	"vcmi.systemOptions.framerateButton.help"   : "{FPS megjelenítése}\n\nA másodpercenkénti képkocka számláló láthatóságának váltása a játékablak sarkában.",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"  : "Rezgő visszacsatolás",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"  : "Rezgő visszacsatolás",
 	"vcmi.systemOptions.hapticFeedbackButton.help"   : "{Rezgő visszacsatolás}\n\nA rezgő visszacsatolás engedélyezése vagy tiltása érintőbemeneteknél.",
 	"vcmi.systemOptions.hapticFeedbackButton.help"   : "{Rezgő visszacsatolás}\n\nA rezgő visszacsatolás engedélyezése vagy tiltása érintőbemeneteknél.",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "Felület fejlesztések",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "Felület fejlesztések",

+ 0 - 2
Mods/vcmi/Content/config/italian.json

@@ -294,8 +294,6 @@
 	"vcmi.systemOptions.longTouchMenu.hover"     : "Seleziona intervallo di tocco lungo",
 	"vcmi.systemOptions.longTouchMenu.hover"     : "Seleziona intervallo di tocco lungo",
 	"vcmi.systemOptions.longTouchMenu.help"      : "Modifica la durata dell'intervallo di tocco lungo.",
 	"vcmi.systemOptions.longTouchMenu.help"      : "Modifica la durata dell'intervallo di tocco lungo.",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d millisecondi",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d millisecondi",
-	"vcmi.systemOptions.framerateButton.hover"  : "Mostra FPS",
-	"vcmi.systemOptions.framerateButton.help"   : "{Mostra FPS}\n\nAttiva o disattiva la visibilità del contatore dei fotogrammi al secondo nell'angolo della finestra di gioco.",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"  : "Feedback aptico",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"  : "Feedback aptico",
 	"vcmi.systemOptions.hapticFeedbackButton.help"   : "{Feedback aptico}\n\nAttiva o disattiva il feedback aptico sugli input tattili.",
 	"vcmi.systemOptions.hapticFeedbackButton.help"   : "{Feedback aptico}\n\nAttiva o disattiva il feedback aptico sugli input tattili.",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "Miglioramenti interfaccia",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "Miglioramenti interfaccia",

+ 0 - 2
Mods/vcmi/Content/config/polish.json

@@ -294,8 +294,6 @@
 	"vcmi.systemOptions.longTouchMenu.hover"     : "Wybierz czas długiego dotyku",
 	"vcmi.systemOptions.longTouchMenu.hover"     : "Wybierz czas długiego dotyku",
 	"vcmi.systemOptions.longTouchMenu.help"      : "Nowy czas aktywacji długiego dotyku.",
 	"vcmi.systemOptions.longTouchMenu.help"      : "Nowy czas aktywacji długiego dotyku.",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d milisekund",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d milisekund",
-	"vcmi.systemOptions.framerateButton.hover"  : "Pokaż FPS",
-	"vcmi.systemOptions.framerateButton.help"   : "{Pokaż FPS}\n\n Przełącza widoczność licznika klatek na sekundę (FPS) w rogu okna gry.",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"  : "Wibracje urządzenia",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"  : "Wibracje urządzenia",
 	"vcmi.systemOptions.hapticFeedbackButton.help"   : "{Wibracje urządzenia}\n\nWłącz wibracje na urządzeniu dotykowym",
 	"vcmi.systemOptions.hapticFeedbackButton.help"   : "{Wibracje urządzenia}\n\nWłącz wibracje na urządzeniu dotykowym",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "Ulepszenia interfejsu",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "Ulepszenia interfejsu",

+ 0 - 2
Mods/vcmi/Content/config/portuguese.json

@@ -311,8 +311,6 @@
 	"vcmi.systemOptions.longTouchMenu.hover"     : "Selecionar Intervalo de Toque Longo",
 	"vcmi.systemOptions.longTouchMenu.hover"     : "Selecionar Intervalo de Toque Longo",
 	"vcmi.systemOptions.longTouchMenu.help"      : "Muda a duração do intervalo de toque longo.",
 	"vcmi.systemOptions.longTouchMenu.help"      : "Muda a duração do intervalo de toque longo.",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d milissegundos",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d milissegundos",
-	"vcmi.systemOptions.framerateButton.hover"  : "Mostrar QPS",
-	"vcmi.systemOptions.framerateButton.help"   : "{Mostra os Quadros Por Segundo}\n\nAtiva ou desativa a visibilidade do contador de Quadros Por Segundo no canto da janela do jogo.",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"  : "Resposta Tátil",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"  : "Resposta Tátil",
 	"vcmi.systemOptions.hapticFeedbackButton.help"   : "{Resposta Tátil}\n\nAtiva ou desativa a resposta tátil nos toques na tela.",
 	"vcmi.systemOptions.hapticFeedbackButton.help"   : "{Resposta Tátil}\n\nAtiva ou desativa a resposta tátil nos toques na tela.",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "Aprimoramentos da Interface",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "Aprimoramentos da Interface",

+ 0 - 2
Mods/vcmi/Content/config/russian.json

@@ -290,8 +290,6 @@
 	"vcmi.systemOptions.longTouchMenu.hover"     : "Выбрать интервал длительного касания:",
 	"vcmi.systemOptions.longTouchMenu.hover"     : "Выбрать интервал длительного касания:",
 	"vcmi.systemOptions.longTouchMenu.help"      : "Изменить интервал длительного касания.",
 	"vcmi.systemOptions.longTouchMenu.help"      : "Изменить интервал длительного касания.",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d миллисекунд",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d миллисекунд",
-	"vcmi.systemOptions.framerateButton.hover"  : "Показывать частоту кадров",
-	"vcmi.systemOptions.framerateButton.help"   : "{Показывать частоту кадров}\n\nЕсли выбрано, частота кадров в секунду будет показана в верхнем левом углу игрового экрана.",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"  : "Тактильный отклик",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"  : "Тактильный отклик",
 	"vcmi.systemOptions.hapticFeedbackButton.help"   : "{Тактильный отклик}\n\nиспользовать вибрацию при использовании сенсорного экрана.",
 	"vcmi.systemOptions.hapticFeedbackButton.help"   : "{Тактильный отклик}\n\nиспользовать вибрацию при использовании сенсорного экрана.",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "Расширенные функции интерфейса",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "Расширенные функции интерфейса",

+ 0 - 2
Mods/vcmi/Content/config/spanish.json

@@ -107,8 +107,6 @@
 	"vcmi.systemOptions.longTouchMenu.hover"     : "Seleccionar Intervalo de Toque Largo",
 	"vcmi.systemOptions.longTouchMenu.hover"     : "Seleccionar Intervalo de Toque Largo",
 	"vcmi.systemOptions.longTouchMenu.help"      : "Cambia la duración del intervalo de toque largo.",
 	"vcmi.systemOptions.longTouchMenu.help"      : "Cambia la duración del intervalo de toque largo.",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d milisegundos",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d milisegundos",
-	"vcmi.systemOptions.framerateButton.hover"  : "Mostrar FPS",
-	"vcmi.systemOptions.framerateButton.help"   : "{Mostrar FPS}\n\nAlternar la visibilidad del contador de Frames Per Second en la esquina de la ventana del juego.",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"  : "Retroalimentación háptica",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"  : "Retroalimentación háptica",
 	"vcmi.systemOptions.hapticFeedbackButton.help"   : "{Retroalimentación háptica}\n\nAlternar la retroalimentación háptica en las entradas táctiles.",
 	"vcmi.systemOptions.hapticFeedbackButton.help"   : "{Retroalimentación háptica}\n\nAlternar la retroalimentación háptica en las entradas táctiles.",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "Mejoras de la interfaz",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "Mejoras de la interfaz",

+ 0 - 2
Mods/vcmi/Content/config/swedish.json

@@ -304,8 +304,6 @@
 	"vcmi.systemOptions.longTouchMenu.hover"             : "Välj tidsintervall för fördröjd pekskärmsberöringsmeny",
 	"vcmi.systemOptions.longTouchMenu.hover"             : "Välj tidsintervall för fördröjd pekskärmsberöringsmeny",
 	"vcmi.systemOptions.longTouchMenu.help"              : "Ändra varaktighetsintervallet för fördröjd beröring.",
 	"vcmi.systemOptions.longTouchMenu.help"              : "Ändra varaktighetsintervallet för fördröjd beröring.",
 	"vcmi.systemOptions.longTouchMenu.entry"             : "%d millisekunder",
 	"vcmi.systemOptions.longTouchMenu.entry"             : "%d millisekunder",
-	"vcmi.systemOptions.framerateButton.hover"           : "Visar FPS (skärmbilder per sekund)",
-	"vcmi.systemOptions.framerateButton.help"            : "{Visa FPS}\n\nVisar räknaren för bildrutor per sekund i hörnet av spelfönstret.",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"      : "Haptisk återkoppling",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"      : "Haptisk återkoppling",
 	"vcmi.systemOptions.hapticFeedbackButton.help"       : "{Haptisk feedback}\n\nÄndrar den haptiska feedbacken för berörings-input.",
 	"vcmi.systemOptions.hapticFeedbackButton.help"       : "{Haptisk feedback}\n\nÄndrar den haptiska feedbacken för berörings-input.",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover": "Förbättringar av användargränssnittet",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover": "Förbättringar av användargränssnittet",

+ 0 - 2
Mods/vcmi/Content/config/ukrainian.json

@@ -308,8 +308,6 @@
 	"vcmi.systemOptions.longTouchMenu.hover"     : "Виберіть інтервал довгого дотику",
 	"vcmi.systemOptions.longTouchMenu.hover"     : "Виберіть інтервал довгого дотику",
 	"vcmi.systemOptions.longTouchMenu.help"      : "Змінити тривалість інтервалу довгого дотику.",
 	"vcmi.systemOptions.longTouchMenu.help"      : "Змінити тривалість інтервалу довгого дотику.",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d мілісекунд",
 	"vcmi.systemOptions.longTouchMenu.entry"     : "%d мілісекунд",
-	"vcmi.systemOptions.framerateButton.hover"  : "Лічильник кадрів",
-	"vcmi.systemOptions.framerateButton.help"   : "{Лічильник кадрів}\n\n Перемикає видимість лічильника кадрів на секунду у кутку ігрового вікна",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"  : "Тактильний відгук",
 	"vcmi.systemOptions.hapticFeedbackButton.hover"  : "Тактильний відгук",
 	"vcmi.systemOptions.hapticFeedbackButton.help"   : "{Тактильний відгук}\n\nВикористовувати вібрацію при використанні сенсорного екрану",
 	"vcmi.systemOptions.hapticFeedbackButton.help"   : "{Тактильний відгук}\n\nВикористовувати вібрацію при використанні сенсорного екрану",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "Розширення інтерфейсу",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "Розширення інтерфейсу",

+ 0 - 2
Mods/vcmi/Content/config/vietnamese.json

@@ -292,8 +292,6 @@
 	"vcmi.systemOptions.longTouchMenu.hover": "Chọn khoảng thời gian chạm giữ",
 	"vcmi.systemOptions.longTouchMenu.hover": "Chọn khoảng thời gian chạm giữ",
 	"vcmi.systemOptions.longTouchMenu.help": "Đổi khoảng thời gian chạm giữ.",
 	"vcmi.systemOptions.longTouchMenu.help": "Đổi khoảng thời gian chạm giữ.",
 	"vcmi.systemOptions.longTouchMenu.entry": "%d mili giây",
 	"vcmi.systemOptions.longTouchMenu.entry": "%d mili giây",
-	"vcmi.systemOptions.framerateButton.hover": "Hiện FPS",
-	"vcmi.systemOptions.framerateButton.help": "{Hiện FPS}\n\nHiện khung hình mỗi giây ở góc cửa sổ trò chơi",
 	"vcmi.systemOptions.hapticFeedbackButton.hover": "Rung khi chạm",
 	"vcmi.systemOptions.hapticFeedbackButton.hover": "Rung khi chạm",
 	"vcmi.systemOptions.hapticFeedbackButton.help": "{Rung khi chạm}\n\nBật/ tắt chế độ rung khi chạm.",
 	"vcmi.systemOptions.hapticFeedbackButton.help": "{Rung khi chạm}\n\nBật/ tắt chế độ rung khi chạm.",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "Cải thiện giao diện",
 	"vcmi.systemOptions.enableUiEnhancementsButton.hover"  : "Cải thiện giao diện",

+ 42 - 6
client/GameEngine.cpp

@@ -9,6 +9,7 @@
  */
  */
 #include "StdInc.h"
 #include "StdInc.h"
 #include "GameEngine.h"
 #include "GameEngine.h"
+#include "GameLibrary.h"
 
 
 #include "gui/CIntObject.h"
 #include "gui/CIntObject.h"
 #include "gui/CursorHandler.h"
 #include "gui/CursorHandler.h"
@@ -35,6 +36,8 @@
 
 
 #include "../lib/AsyncRunner.h"
 #include "../lib/AsyncRunner.h"
 #include "../lib/CConfigHandler.h"
 #include "../lib/CConfigHandler.h"
+#include "../lib/texts/TextOperations.h"
+#include "../lib/texts/CGeneralTextHandler.h"
 
 
 #include <SDL_render.h>
 #include <SDL_render.h>
 
 
@@ -125,8 +128,8 @@ void GameEngine::updateFrame()
 	handleEvents();
 	handleEvents();
 	windows().simpleRedraw();
 	windows().simpleRedraw();
 
 
-	if (settings["video"]["showfps"].Bool())
-		drawFPSCounter();
+	if (settings["video"]["performanceOverlay"]["show"].Bool())
+		drawPerformanceOverlay();
 
 
 	screenHandlerInstance->updateScreenTexture();
 	screenHandlerInstance->updateScreenTexture();
 
 
@@ -184,14 +187,47 @@ Point GameEngine::screenDimensions() const
 	return screenHandlerInstance->getLogicalResolution();
 	return screenHandlerInstance->getLogicalResolution();
 }
 }
 
 
-void GameEngine::drawFPSCounter()
+void GameEngine::drawPerformanceOverlay()
 {
 {
+	auto font = EFonts::FONT_SMALL;
+	const auto & fontPtr = ENGINE->renderHandler().loadFont(font);
+
 	Canvas target = screenHandler().getScreenCanvas();
 	Canvas target = screenHandler().getScreenCanvas();
-	Rect targetArea(0, screenDimensions().y - 20, 48, 11);
+
+	auto powerState = ENGINE->input().getPowerState();
+	std::string powerSymbol = ""; // add symbol if emoji are supported (e.g. VCMI extras)
+	if(powerState.powerState == PowerStateMode::ON_BATTERY)
+		powerSymbol = fontPtr->canRepresentCharacter("🔋") ? "🔋 " : (LIBRARY->generaltexth->translate("vcmi.overlay.battery") + " ");
+	else if(powerState.powerState == PowerStateMode::CHARGING)
+		powerSymbol = fontPtr->canRepresentCharacter("🔌") ? "🔌 " : (LIBRARY->generaltexth->translate("vcmi.overlay.charging") + " ");
+
 	std::string fps = std::to_string(framerate().getFramerate())+" FPS";
 	std::string fps = std::to_string(framerate().getFramerate())+" FPS";
+	std::string time = TextOperations::getFormattedTimeLocal(std::time(nullptr));
+	std::string power = powerState.powerState == PowerStateMode::UNKNOWN ? "" : powerSymbol + std::to_string(powerState.percent) + "%";
+
+	std::string textToDisplay = time + (power.empty() ? "" : " | " + power) + " | " + fps;
+
+	maxPerformanceOverlayTextWidth = std::max(maxPerformanceOverlayTextWidth, static_cast<int>(fontPtr->getStringWidth(textToDisplay))); // do not get smaller (can cause graphical glitches)
+
+	Rect targetArea;
+	std::string edge = settings["video"]["performanceOverlay"]["edge"].String();
+	int marginTopBottom = settings["video"]["performanceOverlay"]["marginTopBottom"].Integer();
+	int marginLeftRight = settings["video"]["performanceOverlay"]["marginLeftRight"].Integer();
+
+	Point boxSize(maxPerformanceOverlayTextWidth + 6, fontPtr->getLineHeight() + 2);
+
+	if (edge == "topleft")
+		targetArea = Rect(marginLeftRight, marginTopBottom, boxSize.x, boxSize.y);
+	else if (edge == "topright")
+		targetArea = Rect(screenDimensions().x - marginLeftRight - boxSize.x, marginTopBottom, boxSize.x, boxSize.y);
+	else if (edge == "bottomleft")
+		targetArea = Rect(marginLeftRight, screenDimensions().y - marginTopBottom - boxSize.y, boxSize.x, boxSize.y);
+	else if (edge == "bottomright")
+		targetArea = Rect(screenDimensions().x - marginLeftRight - boxSize.x, screenDimensions().y - marginTopBottom - boxSize.y, boxSize.x, boxSize.y);
 
 
-	target.drawColor(targetArea, ColorRGBA(10, 10, 10));
-	target.drawText(targetArea.center(), EFonts::FONT_SMALL, Colors::WHITE, ETextAlignment::CENTER, fps);
+	target.drawColor(targetArea.resize(1), Colors::BRIGHT_YELLOW);
+	target.drawColor(targetArea, ColorRGBA(0, 0, 0));
+	target.drawText(targetArea.center(), font, Colors::WHITE, ETextAlignment::CENTER, textToDisplay);
 }
 }
 
 
 bool GameEngine::amIGuiThread()
 bool GameEngine::amIGuiThread()

+ 3 - 1
client/GameEngine.h

@@ -57,9 +57,11 @@ private:
 
 
 	IGameEngineUser *engineUser = nullptr;
 	IGameEngineUser *engineUser = nullptr;
 
 
+	int maxPerformanceOverlayTextWidth = 0;
+
 	void updateFrame();
 	void updateFrame();
 	void handleEvents(); //takes events from queue and calls interested objects
 	void handleEvents(); //takes events from queue and calls interested objects
-	void drawFPSCounter(); // draws the FPS to the upper left corner of the screen
+	void drawPerformanceOverlay(); // draws box with additional infos (e.g. fps)
 
 
 public:
 public:
 	std::mutex interfaceMutex;
 	std::mutex interfaceMutex;

+ 16 - 0
client/eventsSDL/InputHandler.cpp

@@ -33,6 +33,7 @@
 #include <SDL_events.h>
 #include <SDL_events.h>
 #include <SDL_timer.h>
 #include <SDL_timer.h>
 #include <SDL_clipboard.h>
 #include <SDL_clipboard.h>
+#include <SDL_power.h>
 
 
 InputHandler::InputHandler()
 InputHandler::InputHandler()
 	: enableMouse(settings["input"]["enableMouse"].Bool())
 	: enableMouse(settings["input"]["enableMouse"].Bool())
@@ -148,6 +149,21 @@ void InputHandler::copyToClipBoard(const std::string & text)
 	SDL_SetClipboardText(text.c_str());
 	SDL_SetClipboardText(text.c_str());
 }
 }
 
 
+PowerState InputHandler::getPowerState()
+{
+	int seconds;
+	int percent;
+	auto sdlPowerState = SDL_GetPowerInfo(&seconds, &percent);
+
+	PowerStateMode powerState = PowerStateMode::UNKNOWN;
+	if(sdlPowerState == SDL_POWERSTATE_ON_BATTERY)
+		powerState = PowerStateMode::ON_BATTERY;
+	else if(sdlPowerState == SDL_POWERSTATE_CHARGING || sdlPowerState == SDL_POWERSTATE_CHARGED)
+		powerState = PowerStateMode::CHARGING;
+
+	return PowerState{powerState, seconds, percent};
+}
+
 std::vector<SDL_Event> InputHandler::acquireEvents()
 std::vector<SDL_Event> InputHandler::acquireEvents()
 {
 {
 	std::unique_lock<std::mutex> lock(eventsMutex);
 	std::unique_lock<std::mutex> lock(eventsMutex);

+ 14 - 0
client/eventsSDL/InputHandler.h

@@ -32,6 +32,19 @@ enum class InputMode
 	CONTROLLER
 	CONTROLLER
 };
 };
 
 
+enum class PowerStateMode
+{
+	UNKNOWN,
+	CHARGING,
+	ON_BATTERY
+};
+
+struct PowerState {
+	PowerStateMode powerState;
+	int seconds;
+	int percent;
+};
+
 class InputHandler
 class InputHandler
 {
 {
 	std::vector<SDL_Event> eventsQueue;
 	std::vector<SDL_Event> eventsQueue;
@@ -111,4 +124,5 @@ public:
 	InputMode getCurrentInputMode();
 	InputMode getCurrentInputMode();
 
 
 	void copyToClipBoard(const std::string & text);
 	void copyToClipBoard(const std::string & text);
+	PowerState getPowerState();
 };
 };

+ 5 - 4
client/windows/settings/GeneralOptionsTab.cpp

@@ -152,9 +152,10 @@ GeneralOptionsTab::GeneralOptionsTab()
 	{
 	{
 		selectLongTouchDuration();
 		selectLongTouchDuration();
 	});
 	});
-	addCallback("framerateChanged", [](bool value)
+	addCallback("performanceOverlayChanged", [](bool value)
 	{
 	{
-		setBoolSetting("video", "showfps", value);
+		Settings gameRes = settings.write["video"]["performanceOverlay"];
+		gameRes["show"].Bool() = value;
 	});
 	});
 	addCallback("hapticFeedbackChanged", [](bool value)
 	addCallback("hapticFeedbackChanged", [](bool value)
 	{
 	{
@@ -225,8 +226,8 @@ GeneralOptionsTab::GeneralOptionsTab()
 	if (fullscreenExclusiveCheckbox)
 	if (fullscreenExclusiveCheckbox)
 		fullscreenExclusiveCheckbox->setSelected(settings["video"]["fullscreen"].Bool() && settings["video"]["realFullscreen"].Bool());
 		fullscreenExclusiveCheckbox->setSelected(settings["video"]["fullscreen"].Bool() && settings["video"]["realFullscreen"].Bool());
 
 
-	std::shared_ptr<CToggleButton> framerateCheckbox = widget<CToggleButton>("framerateCheckbox");
-	framerateCheckbox->setSelected(settings["video"]["showfps"].Bool());
+	std::shared_ptr<CToggleButton> infoboxCheckbox = widget<CToggleButton>("performanceOverlayCheckbox");
+	infoboxCheckbox->setSelected(settings["video"]["performanceOverlay"]["show"].Bool());
 
 
 	std::shared_ptr<CToggleButton> hapticFeedbackCheckbox = widget<CToggleButton>("hapticFeedbackCheckbox");
 	std::shared_ptr<CToggleButton> hapticFeedbackCheckbox = widget<CToggleButton>("hapticFeedbackCheckbox");
 	if (hapticFeedbackCheckbox)
 	if (hapticFeedbackCheckbox)

+ 11 - 4
config/schemas/settings.json

@@ -210,7 +210,7 @@
 				"spellbookAnimation",
 				"spellbookAnimation",
 				"driver",
 				"driver",
 				"displayIndex",
 				"displayIndex",
-				"showfps",
+				"performanceOverlay",
 				"targetfps",
 				"targetfps",
 				"vsync",
 				"vsync",
 				"fontsType",
 				"fontsType",
@@ -270,9 +270,16 @@
 					"type" : "number",
 					"type" : "number",
 					"default" : 0
 					"default" : 0
 				},
 				},
-				"showfps" : {
-					"type" : "boolean",
-					"default" : false
+				"performanceOverlay" : {
+					"type" : "object",
+					"additionalProperties" : false,
+					"required" : [ "show", "edge", "marginTopBottom", "marginLeftRight" ],
+					"properties" : {
+						"show" : { "type" : "boolean", "default" : false },
+						"edge" : { "type" : "string",  "enum" : [ "topleft", "topright", "bottomleft", "bottomright" ], "default" : "bottomleft" },
+						"marginTopBottom" : { "type" : "number",  "default" : 5 },
+						"marginLeftRight" : { "type" : "number",  "default" : 7 }
+					}
 				},
 				},
 				"targetfps" : {
 				"targetfps" : {
 					"type" : "number",
 					"type" : "number",

+ 4 - 4
config/widgets/settings/generalOptionsTab.json

@@ -50,7 +50,7 @@
 					"created" : "desktop"
 					"created" : "desktop"
 				},
 				},
 				{
 				{
-					"text": "vcmi.systemOptions.framerateButton.hover"
+					"text": "vcmi.systemOptions.performanceOverlayButton.hover"
 				},
 				},
 				{
 				{
 					"text": "vcmi.systemOptions.enableLargeSpellbookButton.hover"
 					"text": "vcmi.systemOptions.enableLargeSpellbookButton.hover"
@@ -136,9 +136,9 @@
 					"created" : "desktop"
 					"created" : "desktop"
 				},
 				},
 				{
 				{
-					"name": "framerateCheckbox",
-					"help": "vcmi.systemOptions.framerateButton",
-					"callback": "framerateChanged"
+					"name": "performanceOverlayCheckbox",
+					"help": "vcmi.systemOptions.performanceOverlayButton",
+					"callback": "performanceOverlayChanged"
 				},
 				},
 				{
 				{
 					"name": "enableLargeSpellbookCheckbox",
 					"name": "enableLargeSpellbookCheckbox",