* + avoid unnecessary locks in experimental overlay if the functionality is disabled
This commit is contained in:
a 2023-08-24 20:59:01 +03:00
parent 71ee66a1a4
commit 4399c0b12b
10 changed files with 229 additions and 79 deletions

View File

@ -57,8 +57,8 @@ Some games like payday 2 check which groups you are subscribed in and unlock thi
See steam_settings.EXAMPLE\subscribed_groups.EXAMPLE.txt for an example for payday 2. See steam_settings.EXAMPLE\subscribed_groups.EXAMPLE.txt for an example for payday 2.
Subscribed Groups (Clans): Subscribed Groups (Clans):
Some games like counter-strike check which groups you are subscribed in and allow you to choose a group clan. You can provide a list of subscribed group ids, names, and tags to the game with a subscribed_groups_clans.txt file placed in the Goldberg SteamEmu Saves\settings or in steam_settings folder. Some games like counter-strike check which groups you are subscribed in and allow you to choose a group clan. You can provide a list of subscribed group ids, names, and tags to the game with a steam_settings\subscribed_groups_clans.txt file.
Group ids must be valid and can be obtained by pasting '/memberslistxml/?xml=1' at the end of a Steam group page. Double tabs that are used as seperators must not be removed. Group ids must be valid and can be obtained by pasting '/memberslistxml/?xml=1' at the end of a Steam group page.
See steam_settings.EXAMPLE\subscribed_groups_clans.EXAMPLE.txt for an example. See steam_settings.EXAMPLE\subscribed_groups_clans.EXAMPLE.txt for an example.
App paths: App paths:
@ -70,7 +70,6 @@ Note that paths are treated as relative paths from where the steam_api dll is lo
Mods: Mods:
Put your mods in the steam_settings\mods\ folder. The steam_settings folder must be placed right beside my emulator dll. Put your mods in the steam_settings\mods\ folder. The steam_settings folder must be placed right beside my emulator dll.
Mod folders must be a number corresponding to the file id of the mod. Mod folders must be a number corresponding to the file id of the mod.
Some games may require extra information about a mod. This information can be passed to the game by using a mods.EXAMPLE.txt file and mod_images folder stored in the steam_settings folder.
See the steam_settings.EXAMPLE folder for an example. See the steam_settings.EXAMPLE folder for an example.
Steam appid: Steam appid:
@ -129,18 +128,12 @@ For example this url: https://en.wikipedia.org/wiki/Main_Page
Would be: steam_settings\http\en.wikipedia.org\wiki\Main_Page Would be: steam_settings\http\en.wikipedia.org\wiki\Main_Page
The Main_Page file would contain the data returned by the steamHTTP api when it tries to access: https://en.wikipedia.org/wiki/Main_Page The Main_Page file would contain the data returned by the steamHTTP api when it tries to access: https://en.wikipedia.org/wiki/Main_Page
An example that was made for payday 2 can be found in steam_settings.EXAMPLE An example that was made for payday 2 can be found in steam_settings.EXAMPLE
To allow external downloads which will be stored in this steam_settings\http folder copy the http_online file from the example folder to the steam_settings folder with .EXAMPLE removed from the file name. To allow external downloads which will be stored in this steam_settings\http folder copy the disable_lan_only file to the steam_settings folder with .EXAMPLE removed from the file name.
Avatar: Avatar:
Copy a PNG or JPG image to your Goldberg SteamEmu Saves\settings or steam_settings folder and name it account_avatar Copy a PNG or JPG image to your Goldberg SteamEmu Settings\settings folder and name it account_avatar
You can also set a default profile picture for users who are missing one by copying a similar file called account_avatar_default You can also set a default profile picture for users who are missing one by copying a similar file called account_avatar_default
For games that do not work with avatars you can place a disable_account_avatar.txt file into the steam_settings folder. You can find example in steam_settings.EXAMPLE
You can find examples in steam_settings.EXAMPLE
Server browser:
Create a text file called serverbrowser.txt with a list of ips in the Goldberg SteamEmu Saves\7\remote folder.
serverbrowser_favorites.txt and serverbrowser_history.txt are also stored in this folder.
Best to keep amount of servers to a low since server browser is not threaded yet and will cause the game to freeze for a bit while refreshing.
Support for CPY steam_api(64).dll cracks: See the build in the experimental folder. Support for CPY steam_api(64).dll cracks: See the build in the experimental folder.

View File

@ -98,6 +98,10 @@ struct Group_Clans {
std::string tag; std::string tag;
}; };
struct Overlay_Appearance {
float font_size = 16.0;
};
class Settings { class Settings {
CSteamID steam_id; CSteamID steam_id;
CGameID game_id; CGameID game_id;
@ -192,6 +196,8 @@ public:
//overlay //overlay
bool disable_overlay = false; bool disable_overlay = false;
bool disable_overlay_achievement_notification = false; bool disable_overlay_achievement_notification = false;
bool disable_overlay_friend_notification = false;
Overlay_Appearance overlay_appearance;
//app build id //app build id
int build_id = 10; int build_id = 10;

View File

@ -82,6 +82,36 @@ static void load_subscribed_groups_clans(std::string clans_filepath, Settings *s
} }
} }
static void load_overlay_appearance(std::string appearance_filepath, Settings *settings_client, Settings *settings_server)
{
PRINT_DEBUG("Overlay appearance file path: %s\n", appearance_filepath.c_str());
std::ifstream appearance_file(utf8_decode(appearance_filepath));
consume_bom(appearance_file);
if (appearance_file.is_open()) {
std::string line;
while (std::getline(appearance_file, line)) {
if (line.length() < 0) continue;
std::size_t seperator = line.find(" ");
std::string name;
std::string value;
if (seperator != std::string::npos) {
name = line.substr(0, seperator);
value = line.substr(seperator);
}
try {
if (name.compare("Font_Size") == 0) {
float nfont_size = std::stoull(value, NULL, 0);
settings_client->overlay_appearance.font_size = nfont_size;
settings_server->overlay_appearance.font_size = nfont_size;
}
PRINT_DEBUG("Overlay appearance %s %s\n", name.c_str(), value.c_str());
} catch (...) {}
}
}
}
template<typename Out> template<typename Out>
static void split_string(const std::string &s, char delim, Out result) { static void split_string(const std::string &s, char delim, Out result) {
std::stringstream ss(s); std::stringstream ss(s);
@ -340,6 +370,7 @@ uint32 create_localstorage_settings(Settings **settings_client_out, Settings **s
bool disable_networking = false; bool disable_networking = false;
bool disable_overlay = false; bool disable_overlay = false;
bool disable_overlay_achievement_notification = false; bool disable_overlay_achievement_notification = false;
bool disable_overlay_friend_notification = false;
bool disable_lobby_creation = false; bool disable_lobby_creation = false;
bool disable_source_query = false; bool disable_source_query = false;
bool disable_account_avatar = false; bool disable_account_avatar = false;
@ -363,6 +394,8 @@ uint32 create_localstorage_settings(Settings **settings_client_out, Settings **s
disable_overlay = true; disable_overlay = true;
} else if (p == "disable_overlay_achievement_notification.txt") { } else if (p == "disable_overlay_achievement_notification.txt") {
disable_overlay_achievement_notification = true; disable_overlay_achievement_notification = true;
} else if (p == "disable_overlay_friend_notification.txt") {
disable_overlay_friend_notification = true;
} else if (p == "disable_lobby_creation.txt") { } else if (p == "disable_lobby_creation.txt") {
disable_lobby_creation = true; disable_lobby_creation = true;
} else if (p == "disable_source_query.txt") { } else if (p == "disable_source_query.txt") {
@ -417,6 +450,8 @@ uint32 create_localstorage_settings(Settings **settings_client_out, Settings **s
settings_server->disable_overlay = disable_overlay; settings_server->disable_overlay = disable_overlay;
settings_client->disable_overlay_achievement_notification = disable_overlay_achievement_notification; settings_client->disable_overlay_achievement_notification = disable_overlay_achievement_notification;
settings_server->disable_overlay_achievement_notification = disable_overlay_achievement_notification; settings_server->disable_overlay_achievement_notification = disable_overlay_achievement_notification;
settings_client->disable_overlay_friend_notification = disable_overlay_friend_notification;
settings_server->disable_overlay_friend_notification = disable_overlay_friend_notification;
settings_client->disable_lobby_creation = disable_lobby_creation; settings_client->disable_lobby_creation = disable_lobby_creation;
settings_server->disable_lobby_creation = disable_lobby_creation; settings_server->disable_lobby_creation = disable_lobby_creation;
settings_client->disable_source_query = disable_source_query; settings_client->disable_source_query = disable_source_query;
@ -669,6 +704,9 @@ uint32 create_localstorage_settings(Settings **settings_client_out, Settings **s
load_subscribed_groups_clans(local_storage->get_global_settings_path() + "subscribed_groups_clans.txt", settings_client, settings_server); load_subscribed_groups_clans(local_storage->get_global_settings_path() + "subscribed_groups_clans.txt", settings_client, settings_server);
load_subscribed_groups_clans(Local_Storage::get_game_settings_path() + "subscribed_groups_clans.txt", settings_client, settings_server); load_subscribed_groups_clans(Local_Storage::get_game_settings_path() + "subscribed_groups_clans.txt", settings_client, settings_server);
load_overlay_appearance(local_storage->get_global_settings_path() + "overlay_appearance.txt", settings_client, settings_server);
load_overlay_appearance(Local_Storage::get_game_settings_path() + "overlay_appearance.txt", settings_client, settings_server);
{ {
std::string mod_path = Local_Storage::get_game_settings_path() + "mods"; std::string mod_path = Local_Storage::get_game_settings_path() + "mods";
nlohmann::json mod_items = nlohmann::json::object(); nlohmann::json mod_items = nlohmann::json::object();

View File

@ -1201,6 +1201,7 @@ void Callback(Common_Message *msg)
friends.push_back(msg->friend_()); friends.push_back(msg->friend_());
overlay->FriendConnect(msg->friend_()); overlay->FriendConnect(msg->friend_());
persona_change((uint64)msg->friend_().id(), k_EPersonaChangeName); persona_change((uint64)msg->friend_().id(), k_EPersonaChangeName);
GetLargeFriendAvatar((uint64)msg->friend_().id());
} }
} else { } else {
std::map<std::string, std::string> map1(f->rich_presence().begin(), f->rich_presence().end()); std::map<std::string, std::string> map1(f->rich_presence().begin(), f->rich_presence().end());

View File

@ -1 +1 @@
Rename this to: disable_overlay.EXAMPLE.txt to disable the overlay. Rename this to: disable_overlay.txt to disable the overlay.

View File

@ -1 +1 @@
Rename this to: disable_overlay_achievement_notification.EXAMPLE.txt to disable the achievement notifications. Rename this to: disable_overlay_achievement_notification.txt to disable the achievement notifications.

View File

@ -0,0 +1 @@
Rename this to: disable_overlay_friend_notification.txt to disable the friend invite and message notifications.

View File

@ -0,0 +1 @@
Font_Size 16.0

View File

@ -48,7 +48,8 @@ static constexpr char *valid_languages[] = {
"thai", "thai",
"turkish", "turkish",
"ukrainian", "ukrainian",
"vietnamese" "vietnamese",
"croatian"
}; };
#define URL_WINDOW_NAME "URL Window" #define URL_WINDOW_NAME "URL Window"
@ -324,6 +325,7 @@ void Steam_Overlay::ShowOverlay(bool state)
void Steam_Overlay::NotifyUser(friend_window_state& friend_state) void Steam_Overlay::NotifyUser(friend_window_state& friend_state)
{ {
if (settings->disable_overlay_friend_notification) return;
if (!(friend_state.window_state & window_state_show) || !show_overlay) if (!(friend_state.window_state & window_state_show) || !show_overlay)
{ {
friend_state.window_state |= window_state_need_attention; friend_state.window_state |= window_state_need_attention;
@ -398,6 +400,7 @@ void Steam_Overlay::FriendDisconnect(Friend _friend)
void Steam_Overlay::AddMessageNotification(std::string const& message) void Steam_Overlay::AddMessageNotification(std::string const& message)
{ {
if (settings->disable_overlay_friend_notification) return;
std::lock_guard<std::recursive_mutex> lock(notifications_mutex); std::lock_guard<std::recursive_mutex> lock(notifications_mutex);
int id = find_free_notification_id(notifications); int id = find_free_notification_id(notifications);
if (id != 0) if (id != 0)
@ -448,6 +451,7 @@ void Steam_Overlay::AddAchievementNotification(nlohmann::json const& ach)
void Steam_Overlay::AddInviteNotification(std::pair<const Friend, friend_window_state>& wnd_state) void Steam_Overlay::AddInviteNotification(std::pair<const Friend, friend_window_state>& wnd_state)
{ {
if (settings->disable_overlay_friend_notification) return;
std::lock_guard<std::recursive_mutex> lock(notifications_mutex); std::lock_guard<std::recursive_mutex> lock(notifications_mutex);
int id = find_free_notification_id(notifications); int id = find_free_notification_id(notifications);
if (id != 0) if (id != 0)
@ -731,7 +735,7 @@ void Steam_Overlay::CreateFonts()
ImFontConfig fontcfg; ImFontConfig fontcfg;
float font_size = 16.0; float font_size = settings->overlay_appearance.font_size;
fontcfg.OversampleH = fontcfg.OversampleV = 1; fontcfg.OversampleH = fontcfg.OversampleV = 1;
fontcfg.PixelSnapH = true; fontcfg.PixelSnapH = true;
fontcfg.SizePixels = font_size; fontcfg.SizePixels = font_size;

View File

@ -1,5 +1,5 @@
const int TRANSLATION_NUMBER_OF_LANGUAGES = 29; const int TRANSLATION_NUMBER_OF_LANGUAGES = 30;
const int TRANSLATION_BUFFER_SIZE = 256; const int TRANSLATION_BUFFER_SIZE = 256;
// C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt // C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt
@ -90,7 +90,10 @@ const char translationChat[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_S
"Чат", "Чат",
// 28 - Vietnamese // 28 - Vietnamese
"Trò chuyện" "Trò chuyện",
// 29 - Croatian
"Razgovor"
}; };
// C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt // C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt
@ -181,7 +184,10 @@ const char translationInvite[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER
"Запросити у гру", "Запросити у гру",
// 28 - Vietnamese // 28 - Vietnamese
"Mời vào trò chơi" "Mời vào trò chơi",
// 29 - Croatian
"Pozovi u igru"
}; };
// C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt // C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt
@ -272,98 +278,104 @@ const char translationJoin[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_S
"Прийняти запрошення до гри", "Прийняти запрошення до гри",
// 28 - Vietnamese // 28 - Vietnamese
"Nhập lời mời" "Nhập lời mời",
// 29 - Croatian
"Prihvati poziv"
}; };
// C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt // C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt
// friends_chat_game_invite_details // friends_chat_game_invite_details
const char translationInvitedYouToJoinTheGame[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationInvitedYouToJoinTheGame[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
// 0 - English // 0 - English
"%s has invited you to play GAME_ID_%d", "%s has invited you to play %d",
// 1 - Arabic // 1 - Arabic
"%s has invited you to play GAME_ID_%d", "%s has invited you to play %d",
// 2 - Bulgarian // 2 - Bulgarian
"%s Ви покани да играете GAME_ID_%d", "%s Ви покани да играете %d",
// 3 - Simplified Chinese // 3 - Simplified Chinese
"%s 已邀请您玩 GAME_ID_%d", "%s 已邀请您玩 %d",
// 4 - Traditional Chinese // 4 - Traditional Chinese
"%s 邀請您一同遊玩 GAME_ID_%d", "%s 邀請您一同遊玩 %d",
// 5 - Czech // 5 - Czech
"%s Vás pozval do hry GAME_ID_%d", "%s Vás pozval do hry %d",
// 6 - Danish // 6 - Danish
"%s har inviteret dig til at spille GAME_ID_%d", "%s har inviteret dig til at spille %d",
// 7 - Dutch // 7 - Dutch
"%s heeft je uitgenodigd om GAME_ID_%d te spelen", "%s heeft je uitgenodigd om %d te spelen",
// 8 - Finnish // 8 - Finnish
"%s on kutsunut sinut pelaamaan peliä GAME_ID_%d", "%s on kutsunut sinut pelaamaan peliä %d",
// 9 - French // 9 - French
"%s vous a invité à jouer à GAME_ID_%d", "%s vous a invité à jouer à %d",
// 10 - German // 10 - German
"%s hat Sie eingeladen, GAME_ID_%d zu spielen", "%s hat Sie eingeladen, %d zu spielen",
// 11 - Greek // 11 - Greek
"Ο %s σας προσκάλεσε να παίξετε GAME_ID_%d", "Ο %s σας προσκάλεσε να παίξετε %d",
// 12 - Hungarian // 12 - Hungarian
"%s játszani hívott a(z) GAME_ID_%d játékba.", "%s játszani hívott a(z) %d játékba.",
// 13 - Italian // 13 - Italian
"%s ti ha invitato a giocare a GAME_ID_%d", "%s ti ha invitato a giocare a %d",
// 14 - Japanese // 14 - Japanese
"%s があなたを GAME_ID_%d のプレイに招待しています", "%s があなたを %d のプレイに招待しています",
// 15 - Korean // 15 - Korean
"%s님이 GAME_ID_%d 게임을 하자고 초대했습니다.", "%s님이 %d 게임을 하자고 초대했습니다.",
// 16 - Norwegian // 16 - Norwegian
"%s har invitert deg til å spille GAME_ID_%d", "%s har invitert deg til å spille %d",
// 17 - Polish // 17 - Polish
"%s zaprasza cię do gry w GAME_ID_%d", "%s zaprasza cię do gry w %d",
// 18 - Portuguese // 18 - Portuguese
"%s convidou-te para jogar GAME_ID_%d", "%s convidou-te para jogar %d",
// 19 - Brazilian Portuguese // 19 - Brazilian Portuguese
"%s convidou você para jogar GAME_ID_%d", "%s convidou você para jogar %d",
// 20 - Romanian // 20 - Romanian
"%s te-a invitat să jucați GAME_ID_%d", "%s te-a invitat să jucați %d",
// 21 - Russian // 21 - Russian
"%s приглашает вас в GAME_ID_%d", "%s приглашает вас в %d",
// 22 - Spanish // 22 - Spanish
"%s te ha invitado a jugar a GAME_ID_%d", "%s te ha invitado a jugar a %d",
// 23 - Latin American // 23 - Latin American
"%s te invitó a jugar GAME_ID_%d", "%s te invitó a jugar %d",
// 24 - Swedish // 24 - Swedish
"%s har bjudit in dig att spela GAME_ID_%d", "%s har bjudit in dig att spela %d",
// 25 - Thai // 25 - Thai
"%s ได้เชิญคุณเล่น GAME_ID_%d", "%s ได้เชิญคุณเล่น %d",
// 26 - Turkish // 26 - Turkish
"%s sizi GAME_ID_%d oynamaya davet etti", "%s sizi %d oynamaya davet etti",
// 27 - Ukrainian // 27 - Ukrainian
"%s запросив вас пограти у GAME_ID_%d", "%s запросив вас пограти у %d",
// 28 - Vietnamese // 28 - Vietnamese
"%s mời bạn chơi GAME_ID_%d" "%s mời bạn chơi %d",
// 29 - Croatian
"%s vas je pozvao igrati %d"
}; };
// C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt // C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt
@ -454,7 +466,10 @@ const char translationAccept[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER
"Прийняти", "Прийняти",
// 28 - Vietnamese // 28 - Vietnamese
"Đồng ý" "Đồng ý",
// 29 - Croatian
"Prihvati"
}; };
// C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt // C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt
@ -545,7 +560,10 @@ const char translationRefuse[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER
"Відхилити", "Відхилити",
// 28 - Vietnamese // 28 - Vietnamese
"Phớt lờ" "Phớt lờ",
// 29 - Croatian
"Ignoriraj"
}; };
// C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt // C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt
@ -636,7 +654,10 @@ const char translationSend[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_S
"Надіслати повідомлення", "Надіслати повідомлення",
// 28 - Vietnamese // 28 - Vietnamese
"Gửi thông điệp" "Gửi thông điệp",
// 29 - Croatian
"Pošalji Poruku"
}; };
// C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt // C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt
@ -727,7 +748,10 @@ const char translationSteamOverlay[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_
"Оверлей Steam", "Оверлей Steam",
// 28 - Vietnamese // 28 - Vietnamese
"Lớp phủ Steam" "Lớp phủ Steam",
// 29 - Croatian
"Steam Overlay"
}; };
const char translationUserPlaying[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationUserPlaying[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -816,7 +840,10 @@ const char translationUserPlaying[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_B
"Username: %s(%llu) playing %u", "Username: %s(%llu) playing %u",
// 28 - Vietnamese // 28 - Vietnamese
"Username: %s(%llu) playing %u" "Username: %s(%llu) playing %u",
// 29 - Croatian
"Igrač: %s(%llu) igra %u"
}; };
const char translationRenderer[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationRenderer[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -905,6 +932,9 @@ const char translationRenderer[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFF
"Renderer: %s", "Renderer: %s",
// 28 - Vietnamese // 28 - Vietnamese
"Renderer: %s",
// 29 - Croatian
"Renderer: %s" "Renderer: %s"
}; };
@ -994,7 +1024,10 @@ const char translationShowAchievements[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLAT
"Show Achievements", "Show Achievements",
// 28 - Vietnamese // 28 - Vietnamese
"Show Achievements" "Show Achievements",
// 29 - Croatian
"Prikaži Postignuća"
}; };
// C:\Program Files (x86)\Steam\resource\overlay_*.txt // C:\Program Files (x86)\Steam\resource\overlay_*.txt
@ -1085,7 +1118,10 @@ const char translationSettings[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFF
"Налаштування", "Налаштування",
// 28 - Vietnamese // 28 - Vietnamese
"Thiết lập" "Thiết lập",
// 29 - Croatian
"Postavke"
}; };
// C:\Program Files (x86)\Steam\resource\overlay_*.txt // C:\Program Files (x86)\Steam\resource\overlay_*.txt
@ -1176,7 +1212,11 @@ const char translationFriends[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFE
"Друзі", "Друзі",
// 28 - Vietnamese // 28 - Vietnamese
"Bạn bè" "Bạn bè",
// 29 - Croatian
"Prijatelji"
}; };
const char translationAchievementWindow[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationAchievementWindow[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -1265,7 +1305,10 @@ const char translationAchievementWindow[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLA
"Achievement Window", "Achievement Window",
// 28 - Vietnamese // 28 - Vietnamese
"Achievement Window" "Achievement Window",
// 29 - Croatian
"Prozor Postignuća"
}; };
const char translationListOfAchievements[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationListOfAchievements[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -1354,7 +1397,10 @@ const char translationListOfAchievements[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSL
"List of achievements", "List of achievements",
// 28 - Vietnamese // 28 - Vietnamese
"List of achievements" "List of achievements",
// 29 - Croatian
"Popis postignuća"
}; };
const char translationAchievements[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationAchievements[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -1443,7 +1489,10 @@ const char translationAchievements[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_
"Achievements", "Achievements",
// 28 - Vietnamese // 28 - Vietnamese
"Achievements" "Achievements",
// 29 - Croatian
"Postignuća"
}; };
const char translationHiddenAchievement[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationHiddenAchievement[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -1532,7 +1581,10 @@ const char translationHiddenAchievement[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLA
"hidden achievement", "hidden achievement",
// 28 - Vietnamese // 28 - Vietnamese
"hidden achievement" "hidden achievement",
// 29 - Croatian
"Sakrivena postignuća"
}; };
const char translationAchievedOn[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationAchievedOn[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -1621,7 +1673,10 @@ const char translationAchievedOn[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BU
"achieved on %s", "achieved on %s",
// 28 - Vietnamese // 28 - Vietnamese
"achieved on %s" "achieved on %s",
// 29 - Croatian
"postignuto %s"
}; };
const char translationNotAchieved[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationNotAchieved[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -1710,7 +1765,10 @@ const char translationNotAchieved[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_B
"not achieved", "not achieved",
// 28 - Vietnamese // 28 - Vietnamese
"not achieved" "not achieved",
// 29 - Croatian
"nije postignuto"
}; };
const char translationGlobalSettingsWindow[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationGlobalSettingsWindow[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -1799,7 +1857,10 @@ const char translationGlobalSettingsWindow[TRANSLATION_NUMBER_OF_LANGUAGES][TRAN
"Global Settings Window", "Global Settings Window",
// 28 - Vietnamese // 28 - Vietnamese
"Global Settings Window" "Global Settings Window",
// 29 - Croatian
"Prozor Globalnih Postavki"
}; };
const char translationGlobalSettingsWindowDescription[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationGlobalSettingsWindowDescription[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -1888,7 +1949,10 @@ const char translationGlobalSettingsWindowDescription[TRANSLATION_NUMBER_OF_LANG
"These are global emulator settings and will apply to all games.", "These are global emulator settings and will apply to all games.",
// 28 - Vietnamese // 28 - Vietnamese
"These are global emulator settings and will apply to all games." "These are global emulator settings and will apply to all games.",
// 29 - Croatian
"Ovo su globalne postavke emulatora i primjenjuju se na sve igre."
}; };
const char translationUsername[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationUsername[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -1977,7 +2041,10 @@ const char translationUsername[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFF
"Username:", "Username:",
// 28 - Vietnamese // 28 - Vietnamese
"Username:" "Username:",
// 29 - Croatian
"Korisničko Ime:"
}; };
const char translationLanguage[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationLanguage[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -2066,7 +2133,10 @@ const char translationLanguage[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFF
"Language:", "Language:",
// 28 - Vietnamese // 28 - Vietnamese
"Language:" "Language:",
// 29 - Croatian
"Jezik:"
}; };
const char translationSelectedLanguage[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationSelectedLanguage[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -2155,7 +2225,10 @@ const char translationSelectedLanguage[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLAT
"Selected Language: %s", "Selected Language: %s",
// 28 - Vietnamese // 28 - Vietnamese
"Selected Language: %s" "Selected Language: %s",
// 29 - Croatian
"Odabrani Jezik: %s"
}; };
const char translationRestartTheGameToApply[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationRestartTheGameToApply[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -2244,7 +2317,10 @@ const char translationRestartTheGameToApply[TRANSLATION_NUMBER_OF_LANGUAGES][TRA
"You may have to restart the game for these to apply.", "You may have to restart the game for these to apply.",
// 28 - Vietnamese // 28 - Vietnamese
"You may have to restart the game for these to apply." "You may have to restart the game for these to apply.",
// 29 - Croatian
"Možda ćete trebati ponovo pokrenuti igru."
}; };
const char translationSave[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationSave[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -2333,7 +2409,10 @@ const char translationSave[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_S
"Save", "Save",
// 28 - Vietnamese // 28 - Vietnamese
"Save" "Save",
// 29 - Croatian
"Spremi"
}; };
const char translationWarning[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationWarning[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -2422,7 +2501,10 @@ const char translationWarning[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFE
"WARNING", "WARNING",
// 28 - Vietnamese // 28 - Vietnamese
"WARNING" "WARNING",
// 29 - Croatian
"UPOZORENJE"
}; };
const char translationWarningWarningWarning[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationWarningWarningWarning[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -2511,7 +2593,10 @@ const char translationWarningWarningWarning[TRANSLATION_NUMBER_OF_LANGUAGES][TRA
"WARNING WARNING WARNING", "WARNING WARNING WARNING",
// 28 - Vietnamese // 28 - Vietnamese
"WARNING WARNING WARNING" "WARNING WARNING WARNING",
// 29 - Croatian
"UPOZORENJE UPOZORENJE UPOZORENJE"
}; };
const char translationWarningDescription1[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationWarningDescription1[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -2600,7 +2685,10 @@ const char translationWarningDescription1[TRANSLATION_NUMBER_OF_LANGUAGES][TRANS
"Some steam_settings/force_*.txt files have been detected. Please delete them if you want this menu to work.", "Some steam_settings/force_*.txt files have been detected. Please delete them if you want this menu to work.",
// 28 - Vietnamese // 28 - Vietnamese
"Some steam_settings/force_*.txt files have been detected. Please delete them if you want this menu to work." "Some steam_settings/force_*.txt files have been detected. Please delete them if you want this menu to work.",
// 29 - Croatian
"Neke steam_settings/force_*.txt datoteke su otkrivene. Molimo da ih izbrišete ako želite da ovaj izbornik radi."
}; };
const char translationWarningDescription2[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationWarningDescription2[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -2689,7 +2777,10 @@ const char translationWarningDescription2[TRANSLATION_NUMBER_OF_LANGUAGES][TRANS
"AppID is 0, please create a steam_appid.txt with the right appid and restart the game.", "AppID is 0, please create a steam_appid.txt with the right appid and restart the game.",
// 28 - Vietnamese // 28 - Vietnamese
"AppID is 0, please create a steam_appid.txt with the right appid and restart the game." "AppID is 0, please create a steam_appid.txt with the right appid and restart the game.",
// 29 - Croatian
"AppID je 0, molimo napravite steam_appid.txt sa točnim appid-em i ponovo pokrenite igru."
}; };
const char translationWarningDescription3[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationWarningDescription3[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -2778,7 +2869,10 @@ const char translationWarningDescription3[TRANSLATION_NUMBER_OF_LANGUAGES][TRANS
"local_save.txt detected, the emu is saving locally to the game folder. Please delete it if you don't want this.", "local_save.txt detected, the emu is saving locally to the game folder. Please delete it if you don't want this.",
// 28 - Vietnamese // 28 - Vietnamese
"local_save.txt detected, the emu is saving locally to the game folder. Please delete it if you don't want this." "local_save.txt detected, the emu is saving locally to the game folder. Please delete it if you don't want this.",
// 29 - Croatian
"Datoteka local_save.txt je otkrivena u mapi igre. Molimo vas da je obiršete ako ne želite ovo."
}; };
const char translationWarningDescription4[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationWarningDescription4[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -2867,7 +2961,10 @@ const char translationWarningDescription4[TRANSLATION_NUMBER_OF_LANGUAGES][TRANS
"Some steam_settings/force_*.txt files have been detected. You will not be able to save some settings.", "Some steam_settings/force_*.txt files have been detected. You will not be able to save some settings.",
// 28 - Vietnamese // 28 - Vietnamese
"Some steam_settings/force_*.txt files have been detected. You will not be able to save some settings." "Some steam_settings/force_*.txt files have been detected. You will not be able to save some settings.",
// 29 - Croatian
"Neke steam_settings/force_*.txt datoteke su otkrivene. Možda nećete moći spremiti neke postavke."
}; };
const char translationSteamOverlayURL[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationSteamOverlayURL[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -2956,7 +3053,10 @@ const char translationSteamOverlayURL[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATI
"The game tried to get the steam overlay to open this url:", "The game tried to get the steam overlay to open this url:",
// 28 - Vietnamese // 28 - Vietnamese
"The game tried to get the steam overlay to open this url:" "The game tried to get the steam overlay to open this url:",
// 29 - Croatian
"Igra je pokušala otvoriti ovaj URL pomoću steam overlaya:"
}; };
// C:\Program Files (x86)\Steam\resource\vgui_*.txt // C:\Program Files (x86)\Steam\resource\vgui_*.txt
@ -3047,7 +3147,10 @@ const char translationClose[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_
"Закрити", "Закрити",
// 28 - Vietnamese // 28 - Vietnamese
"Đóng" "Đóng",
// 29 - Croatian
"Zatvori"
}; };
const char translationPlaying[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { const char translationPlaying[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = {
@ -3136,5 +3239,8 @@ const char translationPlaying[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFE
" playing ", " playing ",
// 28 - Vietnamese // 28 - Vietnamese
" playing " " playing ",
// 29 - Croatian
" igra "
}; };