diff --git a/CMakeLists.txt b/CMakeLists.txt index 097b8cc..e9c88a3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.15 FATAL_ERROR) +cmake_minimum_required(VERSION 3.26 FATAL_ERROR) if (NOT WIN32) message(FATAL_ERROR "This program has been specified to compile on Microsoft Windows OS only.") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 66b5acb..4737b25 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -147,27 +147,15 @@ ) # Copying Resource folder with subfolders, configs and files - file( - COPY "${PROJECT_RESOURCE_FOLDER}" - DESTINATION ${PROJECT_DESTINATION_RESOURCES_FOLDER}/.. - ) - -# Managing additional source files - # Declare json files - set( - ADDITIONAL_RESOURCES - "${PROJECT_RESOURCE_FOLDER}/TechTree.json" - "${PROJECT_RESOURCE_FOLDER}/Settings.json" + # https://discourse.cmake.org/t/copying-files-with-destination-folder-depending-on-build-config/10686 + add_custom_target(SyncResourceDir + COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different + "${PROJECT_RESOURCE_FOLDER}" + "${PROJECT_DESTINATION_RESOURCES_FOLDER}" + COMMENT "Synchronize resources directories" ) - # Copy json files if file updates - foreach(CURRENT_FILE ${ADDITIONAL_RESOURCES}) - configure_file( - ${CURRENT_FILE} - ${PROJECT_DESTINATION_RESOURCES_FOLDER} - COPYONLY - ) - endforeach() + add_dependencies(${MAIN_TARGET_NAME} SyncResourceDir) # Qt libs linking aka copying dependecies to the standalone release version of the project # Find the qt libs deploy program diff --git a/src/Core/ProgramConstants.cpp b/src/Core/ProgramConstants.cpp index 2d70e39..a2ef850 100644 --- a/src/Core/ProgramConstants.cpp +++ b/src/Core/ProgramConstants.cpp @@ -31,3 +31,8 @@ void ProgramConstants::InitializeTranslations() Languages.insert(i, {file.completeBaseName().toLower(), Windows::Locale::LanguageName(file.completeBaseName().toLower())}); } } + +void ProgramConstants::InitializeProfiles() +{ + +} diff --git a/src/Core/ProgramConstants.hpp b/src/Core/ProgramConstants.hpp index 314ee27..5296a4e 100644 --- a/src/Core/ProgramConstants.hpp +++ b/src/Core/ProgramConstants.hpp @@ -35,18 +35,28 @@ class ProgramConstants // Colors const QString LINK_COLOR = "#baff0c"; - // Folders + // General strings + const QString STYLES_FILENAME = "Styles.css"; + const QString TECH_TREE_FILENAME = "TechTree.json"; + const QString G_FOLDER_NAME = "Generals"; + const QString GZH_FOLDER_NAME = "GeneralsZH"; + const QString ICONS_FOLDER_NAME = "Icons"; + + // General editor folders + const QString QT_ICONS_FOLDER = ":/icons"; const QString RESOURCE_FOLDER = "Resources"; const QString BINARIES_FOLDER = RESOURCE_FOLDER + "\\Binaries"; const QString TRANSLATIONS_FOLDER = RESOURCE_FOLDER + "/Translations"; - const QString ICONS_FOLDER = RESOURCE_FOLDER + "/Icons"; - const QString THEME_FOLDER = RESOURCE_FOLDER + "/Theme"; - const QString QT_ICONS_FOLDER = ":/icons"; - - // Resource files - const QString TECH_TREE_FILE = RESOURCE_FOLDER + "/TechTree.json"; + + // Profile folders + const QString PROFILES_FOLDER = RESOURCE_FOLDER + "/Profiles"; + const QString G_PROFILE_FOLDER = PROFILES_FOLDER + "/" + G_FOLDER_NAME; + const QString GZH_PROFILE_FOLDER = PROFILES_FOLDER + "/" + GZH_FOLDER_NAME; + const QString MAIN_STYLES_FILE = PROFILES_FOLDER + "/" + STYLES_FILENAME; + + // Profile unrelated resource files const QString SETTINGS_FILE = RESOURCE_FOLDER + "/Settings.json"; - const QString STYLES_SHEET_FILE = THEME_FOLDER + "/Styles.css"; + const QString GLOBAL_STYLES_FILE = RESOURCE_FOLDER + STYLES_FILENAME; // Build-in files const QString MISSING_ICON_FILE = QT_ICONS_FOLDER + "/NoImageSmall.webp"; @@ -101,7 +111,7 @@ class ProgramConstants const QString NON_ASCII_HOTKEY_ERROR_DESCRIPTION = QObject::tr("You have assign as hotkey a non-ASCII character \"%1\".\nMake sure that you are using ASCII only symbols."); const QString FORBIDDEN_HOTKEY_ERROR_DESCRIPTION = QObject::tr("You have assign as hotkey a forbidden character \"%1\".\nMake sure that you are using only allowed symbols."); - // Other string constants + // CSF string constants const QString HOTKEY_CSF_CATEGORY = "CONTROLBAR"; const QString OBJECT_CSF_CATEGORY = "OBJECT"; const QString BIG_ARCHIVE_CSF_PATH = "Data\\English\\generals.csf"; @@ -159,4 +169,6 @@ class ProgramConstants void InitializeFileSettings(); /// @brief Parse `*.qm` files in the `Resources\Translations` folder. void InitializeTranslations(); + /// @brief Parse folders in `Resources\Profiles` folder. + void InitializeProfiles(); }; diff --git a/src/GUI/CMakeLists.txt b/src/GUI/CMakeLists.txt index 098307b..d198d89 100644 --- a/src/GUI/CMakeLists.txt +++ b/src/GUI/CMakeLists.txt @@ -120,6 +120,3 @@ # Link the libwebp target to the GUI target target_link_libraries(${TARGET_NAME} PRIVATE ${LIB_WEBP_TARGET_NAME}) - -# Copy Styles.css with updates - configure_file("${PROJECT_RESOURCE_FOLDER}/Theme/Styles.css" "${PROJECT_DESTINATION_RESOURCES_FOLDER}/Theme/Styles.css") diff --git a/src/GUI/ImageManager.cpp b/src/GUI/ImageManager.cpp index f8c71fe..b231f83 100644 --- a/src/GUI/ImageManager.cpp +++ b/src/GUI/ImageManager.cpp @@ -4,6 +4,7 @@ #include "../../libs/libwebp/src/webp/decode.h" #include "../Core/Logger.hpp" +#include "WindowManager.hpp" #include "ImageManager.hpp" QImage ImageManager::DecodeWebpIcon(const QString& iconName) @@ -12,8 +13,8 @@ QImage ImageManager::DecodeWebpIcon(const QString& iconName) const auto it = ImagesCache.constFind(iconName); if (it != ImagesCache.constEnd()) return it.value(); - // Find - const QFileInfo targetIconFile = FindIconFile(PROGRAM_CONSTANTS->ICONS_FOLDER, iconName); + // Search for specific image + const QFileInfo targetIconFile = FindIconFile(WINDOW_MANAGER->ProfileFolder + "/" + PROGRAM_CONSTANTS->ICONS_FOLDER_NAME, iconName); if (targetIconFile.exists()) { @@ -74,7 +75,7 @@ QImage ImageManager::DecodeWebpIconPath(const QString& iconPath) { if (!iconPath.isEmpty()) { - LOGMSG("No icon file [" + iconFile.fileName() + "] was found"); + LOGMSG("Icon file [" + iconFile.fileName() + "] was not found"); } return DecodeMissingWebpIcon(); } diff --git a/src/GUI/SelectProfileWindow.cpp b/src/GUI/SelectProfileWindow.cpp new file mode 100644 index 0000000..9afebd0 --- /dev/null +++ b/src/GUI/SelectProfileWindow.cpp @@ -0,0 +1,54 @@ +#include +#include "../Extensions/StringExt.hpp" +#include "../Core/Logger.hpp" +#include "../Core/ProgramConstants.hpp" +#include "SelectProfileWindow.hpp" + +using namespace StringExt; + +SelectProfileWindow::SelectProfileWindow(QWidget* parent) : QWidget(parent) +{ + ltMain = new QHBoxLayout(); + ltGameProfiles = new QVBoxLayout(); + ltCustomProfiles = new QVBoxLayout(); + btnGenerals = new QPushButton(tr(PROGRAM_CONSTANTS->G_FOLDER_NAME.toStdString().c_str())); + btnGeneralsZH = new QPushButton(tr(PROGRAM_CONSTANTS->GZH_FOLDER_NAME.toStdString().c_str())); + + btnGenerals->setObjectName(nameof(btnGenerals)); + connect(btnGenerals, &QPushButton::clicked, this, &SelectProfileWindow::BtnGenerals_Clicked); + btnGeneralsZH->setObjectName(nameof(btnGeneralsZH)); + connect(btnGeneralsZH, &QPushButton::clicked, this, &SelectProfileWindow::BtnGeneralsZH_Clicked); + ltGameProfiles->addWidget(btnGenerals); + ltGameProfiles->addWidget(btnGeneralsZH); + + QDir profilesDir(PROGRAM_CONSTANTS->PROFILES_FOLDER); + auto list = profilesDir.entryList(QDir::Filter::Dirs | QDir::Filter::NoDotAndDotDot, QDir::SortFlag::Name); + list.removeOne(PROGRAM_CONSTANTS->G_FOLDER_NAME); + list.removeOne(PROGRAM_CONSTANTS->GZH_FOLDER_NAME); + for (const auto& elem : list) + { + LOGMSG("Add custom profile " + elem); + QPushButton* btnCustomProfile = new QPushButton(); + btnCustomProfile->setObjectName(nameof(btnCustomProfile)); + btnCustomProfile->setProperty("profileName", "btn"q + elem); + btnCustomProfile->setText(elem); + connect(btnCustomProfile, &QPushButton::clicked, this, &SelectProfileWindow::BtnCustomProfile_Clicked); + ltCustomProfiles->addWidget(btnCustomProfile); + } + + ltMain->addLayout(ltGameProfiles); + ltMain->addLayout(ltCustomProfiles); + + setLayout(ltMain); +} + +void SelectProfileWindow::BtnGenerals_Clicked() { emit gProfileSelected(); } +void SelectProfileWindow::BtnGeneralsZH_Clicked() { emit gzhProfileSelected(); } +void SelectProfileWindow::BtnCustomProfile_Clicked() +{ + auto btn = qobject_cast(sender()); + if (btn == nullptr) + return; + + emit customProfileSelected(btn->text()); +} diff --git a/src/GUI/SelectProfileWindow.hpp b/src/GUI/SelectProfileWindow.hpp new file mode 100644 index 0000000..241bd18 --- /dev/null +++ b/src/GUI/SelectProfileWindow.hpp @@ -0,0 +1,26 @@ +#pragma once +#include +#include +#include +#include "../Core/ProgramConstants.hpp" + +class SelectProfileWindow : public QWidget +{ + Q_OBJECT +private: // Data + QHBoxLayout* ltMain = nullptr; + QVBoxLayout* ltGameProfiles = nullptr; + QVBoxLayout* ltCustomProfiles = nullptr; + QPushButton* btnGenerals = nullptr; + QPushButton* btnGeneralsZH = nullptr; +public: // Methods + SelectProfileWindow(QWidget* parent = nullptr); +signals: + void gProfileSelected(); + void gzhProfileSelected(); + void customProfileSelected(QString data); +private slots: + void BtnGenerals_Clicked(); + void BtnGeneralsZH_Clicked(); + void BtnCustomProfile_Clicked(); +}; diff --git a/src/GUI/SetUpWindowsWrapper.cpp b/src/GUI/SetUpWindowsWrapper.cpp index 302a015..d7a6b62 100644 --- a/src/GUI/SetUpWindowsWrapper.cpp +++ b/src/GUI/SetUpWindowsWrapper.cpp @@ -20,98 +20,91 @@ SetUpWindowsWrapper::SetUpWindowsWrapper(QWidget* parent) : QStackedWidget(paren ~Qt::WindowMinimizeButtonHint); AddWidgets(); - setCurrentWidget(pGreetingWidget); + setCurrentWidget(pSelectProfileWindow); AttachConnections(); } void SetUpWindowsWrapper::AttachConnections() { - connect(pSettingsWindow, &SettingsWindow::languageChanged, - this, &SetUpWindowsWrapper::SettingsWindow_LanguageChanged); - - connect(pGreetingWidget, &GreetingWindow::btnLoadFromFileClicked, - this, &SetUpWindowsWrapper::BtnLoadFromFile_Clicked); - - connect(pGreetingWidget, &GreetingWindow::btnLoadFromGameClicked, - this, &SetUpWindowsWrapper::BtnLoadFromGame_Clicked); - - connect(pGreetingWidget, &GreetingWindow::btnSettingsClicked, - this, &SetUpWindowsWrapper::BtnSettings_Clicked); + connect(pSelectProfileWindow, &SelectProfileWindow::gProfileSelected, + this, &SetUpWindowsWrapper::SelectProfileWindow_GProfileSelected); + connect(pSelectProfileWindow, &SelectProfileWindow::gzhProfileSelected, + this, &SetUpWindowsWrapper::SelectProfileWindow_GZHProfileSelected); + connect(pSelectProfileWindow, &SelectProfileWindow::customProfileSelected, + this, &SetUpWindowsWrapper::SelectProfileWindow_CustomProfileSelected); connect(pLoadFromTheFileWindow, &LoadFromTheFileWindow::btnBackClicked, this, &SetUpWindowsWrapper::BtnBack_Clicked); - connect(pLoadFromTheFileWindow, &LoadFromTheFileWindow::btnStartClicked, this, &SetUpWindowsWrapper::LoadFromTheFileWindow_AcceptConfiguration); connect(pLoadFromTheGameWindow, &LoadFromTheGameWindow::btnBackClicked, this, &SetUpWindowsWrapper::BtnBack_Clicked); - connect(pLoadFromTheGameWindow, &LoadFromTheGameWindow::btnStartClicked, this, &SetUpWindowsWrapper::LoadFromTheGameWindow_AcceptConfiguration); + connect(pSettingsWindow, &SettingsWindow::languageChanged, + this, &SetUpWindowsWrapper::SettingsWindow_LanguageChanged); connect(pSettingsWindow, &SettingsWindow::btnBackClicked, this, &SetUpWindowsWrapper::BtnBack_Clicked); } void SetUpWindowsWrapper::DetachConnections() { - disconnect(pSettingsWindow, &SettingsWindow::languageChanged, - this, &SetUpWindowsWrapper::SettingsWindow_LanguageChanged); - - disconnect(pGreetingWidget, &GreetingWindow::btnLoadFromFileClicked, - this, &SetUpWindowsWrapper::BtnLoadFromFile_Clicked); - - disconnect(pGreetingWidget, &GreetingWindow::btnLoadFromGameClicked, - this, &SetUpWindowsWrapper::BtnLoadFromGame_Clicked); + disconnect(pSelectProfileWindow, &SelectProfileWindow::gProfileSelected, + this, &SetUpWindowsWrapper::SelectProfileWindow_GProfileSelected); + disconnect(pSelectProfileWindow, &SelectProfileWindow::gzhProfileSelected, + this, &SetUpWindowsWrapper::SelectProfileWindow_GZHProfileSelected); + disconnect(pSelectProfileWindow, &SelectProfileWindow::customProfileSelected, + this, &SetUpWindowsWrapper::SelectProfileWindow_CustomProfileSelected); - disconnect(pGreetingWidget, &GreetingWindow::btnSettingsClicked, - this, &SetUpWindowsWrapper::BtnBack_Clicked); - disconnect(pLoadFromTheFileWindow, &LoadFromTheFileWindow::btnBackClicked, this, &SetUpWindowsWrapper::BtnBack_Clicked); - disconnect(pLoadFromTheFileWindow, &LoadFromTheFileWindow::btnStartClicked, this, &SetUpWindowsWrapper::LoadFromTheFileWindow_AcceptConfiguration); disconnect(pLoadFromTheGameWindow, &LoadFromTheGameWindow::btnBackClicked, this, &SetUpWindowsWrapper::BtnBack_Clicked); - disconnect(pLoadFromTheGameWindow, &LoadFromTheGameWindow::btnStartClicked, this, &SetUpWindowsWrapper::LoadFromTheGameWindow_AcceptConfiguration); + disconnect(pSettingsWindow, &SettingsWindow::languageChanged, + this, &SetUpWindowsWrapper::SettingsWindow_LanguageChanged); disconnect(pSettingsWindow, &SettingsWindow::btnBackClicked, this, &SetUpWindowsWrapper::BtnBack_Clicked); } void SetUpWindowsWrapper::AddWidgets() { - pGreetingWidget = new GreetingWindow(); + pSelectProfileWindow = new SelectProfileWindow(); pLoadFromTheGameWindow = new LoadFromTheGameWindow(); pLoadFromTheFileWindow = new LoadFromTheFileWindow(); pSettingsWindow = new SettingsWindow(); - pGreetingWidget->setFixedSize(size()); + pSelectProfileWindow->setFixedSize(size()); pLoadFromTheGameWindow->setFixedSize(size()); pLoadFromTheFileWindow->setFixedSize(size()); pSettingsWindow->setFixedSize(size()); - addWidget(pGreetingWidget); + addWidget(pSelectProfileWindow); addWidget(pLoadFromTheGameWindow); addWidget(pLoadFromTheFileWindow); addWidget(pSettingsWindow); } -void SetUpWindowsWrapper::SettingsWindow_LanguageChanged() +void SetUpWindowsWrapper::DeleteWidgets() { - WINDOW_MANAGER->SetTranslator(); - - DetachConnections(); - pGreetingWidget->deleteLater(); + pSelectProfileWindow->deleteLater(); pLoadFromTheGameWindow->deleteLater(); pLoadFromTheFileWindow->deleteLater(); pSettingsWindow->deleteLater(); +} +void SetUpWindowsWrapper::SettingsWindow_LanguageChanged() +{ + WINDOW_MANAGER->SetTranslator(); + DetachConnections(); + DeleteWidgets(); AddWidgets(); AttachConnections(); setCurrentWidget(pSettingsWindow); @@ -120,7 +113,16 @@ void SetUpWindowsWrapper::SettingsWindow_LanguageChanged() void SetUpWindowsWrapper::BtnLoadFromFile_Clicked() { setCurrentWidget(pLoadFromTheFileWindow); } void SetUpWindowsWrapper::BtnLoadFromGame_Clicked() { setCurrentWidget(pLoadFromTheGameWindow); } void SetUpWindowsWrapper::BtnSettings_Clicked() { setCurrentWidget(pSettingsWindow); } -void SetUpWindowsWrapper::BtnBack_Clicked() { WINDOW_MANAGER->SetCSFFilePath(""); setCurrentWidget(pGreetingWidget); } +void SetUpWindowsWrapper::BtnBack_Clicked() +{ + setCurrentWidget(pSelectProfileWindow); + WINDOW_MANAGER->SetCSFFilePath(""); + WINDOW_MANAGER->ApplyDefaultProfileStyleSheet(); +} + +void SetUpWindowsWrapper::SelectProfileWindow_GProfileSelected() { WINDOW_MANAGER->StartUpWindow_GProfileSelected(); BtnLoadFromFile_Clicked(); } +void SetUpWindowsWrapper::SelectProfileWindow_GZHProfileSelected() { WINDOW_MANAGER->StartUpWindow_GZHProfileSelected(); BtnLoadFromFile_Clicked(); } +void SetUpWindowsWrapper::SelectProfileWindow_CustomProfileSelected(const QString& folder) { WINDOW_MANAGER->StartUpWindow_CustomProfileSelected(folder); BtnLoadFromFile_Clicked(); } void SetUpWindowsWrapper::LoadFromTheGameWindow_AcceptConfiguration() { diff --git a/src/GUI/SetUpWindowsWrapper.hpp b/src/GUI/SetUpWindowsWrapper.hpp index a6939a0..cc4e5e4 100644 --- a/src/GUI/SetUpWindowsWrapper.hpp +++ b/src/GUI/SetUpWindowsWrapper.hpp @@ -3,13 +3,14 @@ #include "GreetingWindow.hpp" #include "LoadFromTheGameWindow.hpp" #include "LoadFromTheFileWindow.hpp" +#include "SelectProfileWindow.hpp" #include "SettingsWindow.hpp" class SetUpWindowsWrapper final : public QStackedWidget { Q_OBJECT private: // Data - GreetingWindow* pGreetingWidget = nullptr; + SelectProfileWindow* pSelectProfileWindow = nullptr; LoadFromTheGameWindow* pLoadFromTheGameWindow = nullptr; LoadFromTheFileWindow* pLoadFromTheFileWindow = nullptr; SettingsWindow* pSettingsWindow = nullptr; @@ -19,8 +20,10 @@ class SetUpWindowsWrapper final : public QStackedWidget void AttachConnections(); /// @brief Disconnects slots and signals. void DetachConnections(); - /// @brief Initialize `GreetingWindow`, `LoadFromTheGameWindow`, `LoadFromTheFileWindow`. + /// @brief Initialize `SelectProfileWindow`, `LoadFromTheGameWindow`, `LoadFromTheFileWindow` class objects. void AddWidgets(); + /// @brief Free heap from `SelectProfileWindow`, `LoadFromTheGameWindow`, `LoadFromTheFileWindow` data. + void DeleteWidgets(); public: SetUpWindowsWrapper(QWidget* parent = nullptr); @@ -39,4 +42,10 @@ private slots: void LoadFromTheFileWindow_AcceptConfiguration(); /// @brief Returns checked configuration of user preferences. void LoadFromTheGameWindow_AcceptConfiguration(); + /// @brief Handles selection of the Generals profile. + void SelectProfileWindow_GProfileSelected(); + /// @brief Handles selection of the Generals Zero Hour profile. + void SelectProfileWindow_GZHProfileSelected(); + /// @brief Handles selection of a custom profile. + void SelectProfileWindow_CustomProfileSelected(const QString& folder); }; diff --git a/src/GUI/WindowManager.cpp b/src/GUI/WindowManager.cpp index bdf7577..4eb1b13 100644 --- a/src/GUI/WindowManager.cpp +++ b/src/GUI/WindowManager.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -15,23 +16,12 @@ #include "WindowManager.hpp" WindowManager::WindowManager() -{ +{ SetTranslator(); qApp->setWindowIcon(QIcon(QPixmap::fromImage(ImageManager::DecodeEditorWebpIcon()))); - - LOGMSG("Loading \"" + PROGRAM_CONSTANTS->STYLES_SHEET_FILE + "\"..."); - QFile css{PROGRAM_CONSTANTS->STYLES_SHEET_FILE}; - if (css.open(QIODevice::ReadOnly)) - { - qApp->setStyleSheet(css.readAll()); - css.close(); - LOGMSG("Styles sheet has been loaded"); - } - else - { - LOGMSG("Unable to read the style file"); - } + ProfileFolder = PROGRAM_CONSTANTS->GZH_PROFILE_FOLDER; + ApplyProfileStyleSheet(ProfileFolder); LOGMSG("Loading launch window..."); pStartUpWindow = new SetUpWindowsWrapper(); @@ -89,6 +79,40 @@ bool WindowManager::InitializeCSFParser() return true; } +QString WindowManager::ReadStyleSheet(const QString& filepath, const QString& name) const +{ + LOGMSG("Loading \"" + filepath + "\"..."); + + QFile css(filepath); + if (css.open(QIODevice::ReadOnly)) + { + LOGMSG(name + " stylesheet has been loaded"); + return QString::fromUtf8(css.readAll()); + } + + LOGMSG("Unable to read the " + name + " stylesheet"); + return StringExt::EmptyString; +} + +void WindowManager::ApplyProfileStyleSheet(const QString& profileFolder) +{ + ProfileFolder = profileFolder; + + QString style = ReadStyleSheet(PROGRAM_CONSTANTS->MAIN_STYLES_FILE, "Main"); + style += "\n"; + + const QString profileName = QFileInfo(ProfileFolder).fileName(); + const QString profileStylesFile = ProfileFolder + "/Theme/" + PROGRAM_CONSTANTS->STYLES_FILENAME; + style += ReadStyleSheet(profileStylesFile, profileName); + + qApp->setStyleSheet(style); +} + +void WindowManager::ApplyDefaultProfileStyleSheet() +{ + ApplyProfileStyleSheet(PROGRAM_CONSTANTS->GZH_PROFILE_FOLDER); +} + void WindowManager::StartUpWindow_AcceptConfiguration() { // 2nd init protection @@ -122,7 +146,10 @@ void WindowManager::SetTranslator() pAppTranslator = new QTranslator(); pAppTranslator->load(lngShortName, PROGRAM_CONSTANTS->TRANSLATIONS_FOLDER); qApp->installTranslator(pAppTranslator); - FACTIONS_MANAGER->UpdateFactionNames(); + if (FACTIONS_MANAGER != nullptr) + { + FACTIONS_MANAGER->UpdateFactionNames(); + } } void WindowManager::Show() { pStartUpWindow->show(); } @@ -137,6 +164,46 @@ void WindowManager::EditorWindow_NewHotkeyFileSelected() StartUpWindow_AcceptConfiguration(); } +void WindowManager::StartUpWindow_GProfileSelected() +{ + if (FACTIONS_MANAGER != nullptr) + { + FACTIONS_MANAGER.release(); + } + + ApplyProfileStyleSheet(PROGRAM_CONSTANTS->G_PROFILE_FOLDER); + + FACTIONS_MANAGER = std::make_unique(PROGRAM_CONSTANTS->G_PROFILE_FOLDER + + "/" + PROGRAM_CONSTANTS->TECH_TREE_FILENAME); +} + +void WindowManager::StartUpWindow_GZHProfileSelected() +{ + if (FACTIONS_MANAGER != nullptr) + { + FACTIONS_MANAGER.release(); + } + + ApplyProfileStyleSheet(PROGRAM_CONSTANTS->GZH_PROFILE_FOLDER); + + FACTIONS_MANAGER = std::make_unique(PROGRAM_CONSTANTS->GZH_PROFILE_FOLDER + + "/" + PROGRAM_CONSTANTS->TECH_TREE_FILENAME); +} + +void WindowManager::StartUpWindow_CustomProfileSelected(const QString& folder) +{ + if (FACTIONS_MANAGER != nullptr) + { + FACTIONS_MANAGER.release(); + } + + const QString profileFolder = PROGRAM_CONSTANTS->PROFILES_FOLDER + "/" + folder; + ApplyProfileStyleSheet(profileFolder); + + FACTIONS_MANAGER = std::make_unique(profileFolder + "/" + PROGRAM_CONSTANTS->TECH_TREE_FILENAME); +} + + WindowManager::~WindowManager() { if (pHotkeysEditor != nullptr) pHotkeysEditor->deleteLater(); diff --git a/src/GUI/WindowManager.hpp b/src/GUI/WindowManager.hpp index 2db4afc..99e9ac7 100644 --- a/src/GUI/WindowManager.hpp +++ b/src/GUI/WindowManager.hpp @@ -18,10 +18,15 @@ class WindowManager final public: inline static std::unique_ptr Instance = nullptr; EditorWindowWrapper* pHotkeysEditor = nullptr; + QString ProfileFolder = StringExt::EmptyString; private: // Methods /// @brief Checks csf file to be compitable with GZH format. bool InitializeCSFParser(); + /// @brief Applies common styles and selected profile theme. + void ApplyProfileStyleSheet(const QString& profileFolder); + /// @brief Read stylesheet file contents and write loading result to log. + QString ReadStyleSheet(const QString& filepath, const QString& name) const; public: WindowManager(); ~WindowManager(); @@ -29,10 +34,18 @@ class WindowManager final void Show(); /// @brief Set common L10N translator for the whole project app. void SetTranslator(); + /// @brief Applies default startup theme. + void ApplyDefaultProfileStyleSheet(); /// @brief Set CSF file path. Uses if in `LoadFromTheFileWindow` file has been set. void SetCSFFilePath(const QString& filepath); /// @brief Reinitialize CSF parser and editor window when new CSF/BIG file has been selected. void EditorWindow_NewHotkeyFileSelected(); /// @brief Return CSF file path. Uses if in `LoadFromTheFileWindow` file has been set. void StartUpWindow_AcceptConfiguration(); + /// @brief Initialize TechTree.json parsing by Generals profile. + void StartUpWindow_GProfileSelected(); + /// @brief Initialize TechTree.json parsing by GeneralsZH profile. + void StartUpWindow_GZHProfileSelected(); + /// @brief Initialize TechTree.json parsing by custom profile. + void StartUpWindow_CustomProfileSelected(const QString& data); }; diff --git a/src/Main.cpp b/src/Main.cpp index 2271551..1fa7bb1 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -7,6 +7,7 @@ #include #include #include +#include // Project headers #include "GUI/WindowManager.hpp" @@ -38,6 +39,7 @@ int main(int argc, const char** argv) QString workingDirectory = QString::fromStdWString(filesystem::current_path().c_str()); + // Change directory if user started the real executable instead of proxy if (workingDirectory.indexOf(PROGRAM_CONSTANTS->BINARIES_FOLDER) != -1) { LOGMSG("Program started from Resources\\Binaries folder. Redirect working directory to the ..\\..\\"); @@ -46,9 +48,16 @@ int main(int argc, const char** argv) filesystem::current_path(workingDirectory.toStdWString()); } + // Throw an error if there is no Translations folder in Resources + if (!filesystem::exists(PROGRAM_CONSTANTS->TRANSLATIONS_FOLDER.toStdString().c_str())) + return ShowErrorMessage(PROGRAM_CONSTANTS->TRANSLATIONS_NO_FOUND); + + // Throw an error if there is no Settings.json file in Resources if (!filesystem::exists(PROGRAM_CONSTANTS->SETTINGS_FILE.toStdString().c_str())) return ShowErrorMessage(PROGRAM_CONSTANTS->SETTINGS_NO_FOUND); + // TODO: Make it profile related + /* if (!filesystem::exists(PROGRAM_CONSTANTS->TECH_TREE_FILE.toStdString().c_str())) return ShowErrorMessage(PROGRAM_CONSTANTS->TECH_TREE_NO_FOUND); @@ -57,12 +66,11 @@ int main(int argc, const char** argv) if (!filesystem::exists(PROGRAM_CONSTANTS->THEME_FOLDER.toStdString().c_str())) return ShowErrorMessage(PROGRAM_CONSTANTS->THEME_FOLDER_NO_FOUND); - - if (!filesystem::exists(PROGRAM_CONSTANTS->TRANSLATIONS_FOLDER.toStdString().c_str())) - return ShowErrorMessage(PROGRAM_CONSTANTS->TRANSLATIONS_NO_FOUND); + */ PROGRAM_CONSTANTS->InitializeTranslations(); PROGRAM_CONSTANTS->InitializeFileSettings(); + PROGRAM_CONSTANTS->InitializeProfiles(); // Show console, that by default is hiding by Logger class if (PROGRAM_CONSTANTS->pSettingsFile->IsConsoleEnabled()) @@ -76,9 +84,6 @@ int main(int argc, const char** argv) if (PROGRAM_CONSTANTS->pSettingsFile->IsDiscordRPCEnabled()) DISCORD_MANAGER->Initialize(); - // Initialize TechTree.json parsing - FACTIONS_MANAGER = make_unique(); - // Define logger as the singleton class, that could be used anywhere in the project WINDOW_MANAGER = make_unique(); diff --git a/src/Managers/FactionsManager.cpp b/src/Managers/FactionsManager.cpp index 7427d46..713593c 100644 --- a/src/Managers/FactionsManager.cpp +++ b/src/Managers/FactionsManager.cpp @@ -2,11 +2,13 @@ #include "../Core/Logger.hpp" #include "FactionsManager.hpp" -FactionManager::FactionManager() +FactionManager::FactionManager(const QString techtreejson) { + TechTreeSource = JSONFile(techtreejson); + vFactions.reserve(12); - for(const auto& elem : TECH_TREE_SOURCE.Query("$.TechTree").toArray()) + for(const auto& elem : TechTreeSource.Query("$.TechTree").toArray()) { vFactions.push_back(Faction{elem.toObject()}); } diff --git a/src/Managers/FactionsManager.hpp b/src/Managers/FactionsManager.hpp index 7953612..f8de9f9 100644 --- a/src/Managers/FactionsManager.hpp +++ b/src/Managers/FactionsManager.hpp @@ -9,7 +9,7 @@ class FactionManager final { private: // Data - const JSONFile TECH_TREE_SOURCE{PROGRAM_CONSTANTS->TECH_TREE_FILE}; + JSONFile TechTreeSource; QVector vFactions; public: inline static std::unique_ptr Instance = nullptr; @@ -17,8 +17,8 @@ class FactionManager final private: // Methods void Parse(); public: - /// @brief Default constructor. - explicit FactionManager(); + /// @brief Parse `TechTree.json` from the specific path as the game tech tree. + explicit FactionManager(const QString techtreejson); /// @brief Return count of parsed factions. int Count(); /// @brief Return faction by its index in container. diff --git a/src/Resources/Profiles/Continue/TechTree.json b/src/Resources/Profiles/Continue/TechTree.json new file mode 100644 index 0000000..efe7f73 --- /dev/null +++ b/src/Resources/Profiles/Continue/TechTree.json @@ -0,0 +1,208 @@ +{ + "TechTree": [ + { + "ShortName": "CUA", + "DisplayName": "CONTINUE CORE", + "DisplayNameDescription": "Baseline continuation test side", + "Buildings": [ + {"Name": "USACommandCenter", "IngameName": "OBJECT:CommandCenter", "KeyboardLayouts": [[{"IconName": "USADozer", "HotkeyString": "CONTROLBAR:ConstructAmericaDozer"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "USARanger", "IngameName": "OBJECT:Ranger", "KeyboardLayouts": [[{"IconName": "CaptureBuilding", "HotkeyString": "CONTROLBAR:CaptureBuilding"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "USAHumvee", "IngameName": "OBJECT:Humvee", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "USARaptor", "IngameName": "OBJECT:Raptor", "KeyboardLayouts": [[{"IconName": "AirGuard", "HotkeyString": "CONTROLBAR:GuardFlyingUnitsOnly"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "CUB", + "DisplayName": "ENGINEER", + "DisplayNameDescription": "Construction-heavy continuation test side", + "Buildings": [ + {"Name": "USACommandCenter", "IngameName": "OBJECT:CommandCenter", "KeyboardLayouts": [[{"IconName": "USADozer", "HotkeyString": "CONTROLBAR:ConstructAmericaDozer"}, {"IconName": "USASupplyDropZone", "HotkeyString": "CONTROLBAR:ConstructAmericaSupplyDropZone"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "USAMissileDefender", "IngameName": "OBJECT:MissileTeam", "KeyboardLayouts": [[{"IconName": "USALaserLock", "HotkeyString": "CONTROLBAR:LaserMissileAttack"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "USAAmbulance", "IngameName": "OBJECT:Ambulance", "KeyboardLayouts": [[{"IconName": "USAAmbulanceCleanupArea", "HotkeyString": "CONTROLBAR:AmbulanceCleanupArea"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "USAComanche", "IngameName": "OBJECT:Comanche", "KeyboardLayouts": [[{"IconName": "USAFireRocketPods", "HotkeyString": "CONTROLBAR:FireRocketPods"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "CUC", + "DisplayName": "SKYBRIDGE", + "DisplayNameDescription": "Air logistics continuation test side", + "Buildings": [ + {"Name": "USAAirfield", "IngameName": "OBJECT:Airfield", "KeyboardLayouts": [[{"IconName": "USARaptor", "HotkeyString": "CONTROLBAR:ConstructAmericaJetRaptor"}, {"IconName": "USAComanche", "HotkeyString": "CONTROLBAR:ConstructAmericaVehicleComanche"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "USAPathfinder", "IngameName": "OBJECT:Pathfinder", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "USAAvenger", "IngameName": "OBJECT:Avenger", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "USAAurora", "IngameName": "OBJECT:Aurora", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "CUD", + "DisplayName": "BORDER GUARD", + "DisplayNameDescription": "Defensive continuation test side", + "Buildings": [ + {"Name": "USAFireBase", "IngameName": "OBJECT:FireBase", "KeyboardLayouts": [[{"IconName": "Evacuate", "HotkeyString": "CONTROLBAR:Evacuate"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "USABurton", "IngameName": "OBJECT:ColonelBurton", "KeyboardLayouts": [[{"IconName": "USAKnifeAttack", "HotkeyString": "CONTROLBAR:KnifeAttack"}, {"IconName": "USADetonateCharges", "HotkeyString": "CONTROLBAR:DetonateCharges"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "USAPaladinTank", "IngameName": "OBJECT:Paladin", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "USAStealthFighter", "IngameName": "OBJECT:StealthFighter", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "CEA", + "DisplayName": "FOUNDRY", + "DisplayNameDescription": "Industrial continuation test side", + "Buildings": [ + {"Name": "PRCCommandCenter", "IngameName": "OBJECT:CommandCenter", "KeyboardLayouts": [[{"IconName": "PRCDozer", "HotkeyString": "CONTROLBAR:ConstructChinaDozer"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "PRCRedGuard", "IngameName": "OBJECT:Redguard", "KeyboardLayouts": [[{"IconName": "CaptureBuilding", "HotkeyString": "CONTROLBAR:CaptureBuilding"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "PRCBattlemaster", "IngameName": "OBJECT:BattleMaster", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "PRCMIG", "IngameName": "OBJECT:MIG", "KeyboardLayouts": [[{"IconName": "AirGuard", "HotkeyString": "CONTROLBAR:GuardFlyingUnitsOnly"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "CEB", + "DisplayName": "SIGNAL BUREAU", + "DisplayNameDescription": "Scanner and command continuation test side", + "Buildings": [ + {"Name": "PRCInternetCenter", "IngameName": "OBJECT:InternetCenter", "KeyboardLayouts": [[{"IconName": "PRCHackInternet", "HotkeyString": "CONTROLBAR:InternetHack"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "PRCHacker", "IngameName": "OBJECT:Hacker", "KeyboardLayouts": [[{"IconName": "PRCHackInternet", "HotkeyString": "CONTROLBAR:InternetHack"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "PRCECMTank", "IngameName": "OBJECT:ECMTank", "KeyboardLayouts": [[{"IconName": "PRCDisableVehicle", "HotkeyString": "CONTROLBAR:DisableVehicleHack"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "PRCHelix", "IngameName": "OBJECT:Helix", "KeyboardLayouts": [[{"IconName": "Evacuate", "HotkeyString": "CONTROLBAR:Evacuate"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "CEC", + "DisplayName": "RAIL CORPS", + "DisplayNameDescription": "Armor column continuation test side", + "Buildings": [ + {"Name": "PRCWarFactory", "IngameName": "OBJECT:WarFactory", "KeyboardLayouts": [[{"IconName": "PRCBattlemaster", "HotkeyString": "CONTROLBAR:ConstructGLATankBattleMaster"}, {"IconName": "PRCDragonTank", "HotkeyString": "CONTROLBAR:ConstructChinaTankDragon"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "PRCTankHunter", "IngameName": "OBJECT:TANKHUNTER", "KeyboardLayouts": [[{"IconName": "PRCTNTAttack", "HotkeyString": "CONTROLBAR:TNTAttack"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "PRCOverlordTank", "IngameName": "OBJECT:Overlord", "KeyboardLayouts": [[{"IconName": "PRCOverlordBattleBunker", "HotkeyString": "CONTROLBAR:UpgradeChinaOverlordBattleBunker"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "PRCHelix", "IngameName": "OBJECT:Helix", "KeyboardLayouts": [[{"IconName": "PRCHelixGattlingCannon", "HotkeyString": "CONTROLBAR:UpgradeChinaHelixGattlingCannon"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "CED", + "DisplayName": "EMBER FRONT", + "DisplayNameDescription": "Firepower continuation test side", + "Buildings": [ + {"Name": "PRCAirfield", "IngameName": "OBJECT:Airfield", "KeyboardLayouts": [[{"IconName": "PRCMIG", "HotkeyString": "CONTROLBAR:ConstructChinaJetMIG"}, {"IconName": "PRCHelix", "HotkeyString": "CONTROLBAR:ConstructChinaVehicleHelix"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "INFMiniGunner", "IngameName": "OBJECT:Redguard", "KeyboardLayouts": [[{"IconName": "CaptureBuilding", "HotkeyString": "CONTROLBAR:CaptureBuilding"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "PRCDragonTank", "IngameName": "OBJECT:Dragon", "KeyboardLayouts": [[{"IconName": "PRCFireWall", "HotkeyString": "CONTROLBAR:FireWall"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "PRCMIG", "IngameName": "OBJECT:MIG", "KeyboardLayouts": [[{"IconName": "PRCDropNapalmBomb", "HotkeyString": "CONTROLBAR:DropNapalmBomb"}, {"IconName": "AirGuard", "HotkeyString": "CONTROLBAR:GuardFlyingUnitsOnly"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "CDA", + "DisplayName": "DUNE LEAGUE", + "DisplayNameDescription": "Light raider continuation test side", + "Buildings": [ + {"Name": "GLACommandCenter", "IngameName": "OBJECT:CommandCenter", "KeyboardLayouts": [[{"IconName": "GLAWorker", "HotkeyString": "CONTROLBAR:ConstructGLAWorker"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "GLARebel", "IngameName": "OBJECT:Rebel", "KeyboardLayouts": [[{"IconName": "CaptureBuilding", "HotkeyString": "CONTROLBAR:CaptureBuilding"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "GLATechnical", "IngameName": "OBJECT:Technical", "KeyboardLayouts": [[{"IconName": "Evacuate", "HotkeyString": "CONTROLBAR:Evacuate"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "USAComanche", "IngameName": "OBJECT:Comanche", "KeyboardLayouts": [[{"IconName": "AirGuard", "HotkeyString": "CONTROLBAR:GuardFlyingUnitsOnly"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "CDB", + "DisplayName": "COURIER CELL", + "DisplayNameDescription": "Mobility continuation test side", + "Buildings": [ + {"Name": "GLAArmsDealer", "IngameName": "OBJECT:ArmsDealer", "KeyboardLayouts": [[{"IconName": "GLATechnical", "HotkeyString": "CONTROLBAR:ConstructGLAVehicleTechnical"}, {"IconName": "GLACombatBike", "HotkeyString": "CONTROLBAR:ConstructGLAVehicleCombatBike"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "GLARPGTrooper", "IngameName": "OBJECT:TunnelDefender", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "GLACombatBike", "IngameName": "OBJECT:CombatBike", "KeyboardLayouts": [[{"IconName": "Evacuate", "HotkeyString": "CONTROLBAR:Evacuate"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "PRCHelix", "IngameName": "OBJECT:Helix", "KeyboardLayouts": [[{"IconName": "Evacuate", "HotkeyString": "CONTROLBAR:Evacuate"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "CDC", + "DisplayName": "MARKET GUARD", + "DisplayNameDescription": "Economy continuation test side", + "Buildings": [ + {"Name": "GLABlackMarket", "IngameName": "OBJECT:BlackMarket", "KeyboardLayouts": [[{"IconName": "GLAAPBullets", "HotkeyString": "CONTROLBAR:UpgradeGLAAPBullets"}, {"IconName": "GLAJunkRepair", "HotkeyString": "CONTROLBAR:UpgradeGLAJunkRepair"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "GLAWorker", "IngameName": "OBJECT:Worker", "KeyboardLayouts": [[{"IconName": "GLASupplyStash", "HotkeyString": "CONTROLBAR:ConstructGLASupplyStash"}, {"IconName": "GLAArmsDealer", "HotkeyString": "CONTROLBAR:ConstructGLAArmsDealer"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "GLAQuadCannon", "IngameName": "OBJECT:QuadCannon", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "USAComanche", "IngameName": "OBJECT:Comanche", "KeyboardLayouts": [[{"IconName": "AirGuard", "HotkeyString": "CONTROLBAR:GuardFlyingUnitsOnly"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "CDD", + "DisplayName": "SCRAP YARD", + "DisplayNameDescription": "Salvage continuation test side", + "Buildings": [ + {"Name": "GLATunnelNetwork", "IngameName": "OBJECT:TunnelNetwork", "KeyboardLayouts": [[{"IconName": "Evacuate", "HotkeyString": "CONTROLBAR:Evacuate"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "GLAJarmenKell", "IngameName": "OBJECT:JarmenKell", "KeyboardLayouts": [[{"IconName": "GLAPilotKill", "HotkeyString": "CONTROLBAR:SniperAttack"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "GLAMarauderTank", "IngameName": "OBJECT:Marauder", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "USAStealthFighter", "IngameName": "OBJECT:StealthFighter", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + } + ] +} diff --git a/src/Resources/Profiles/Continue/Theme/Styles.css b/src/Resources/Profiles/Continue/Theme/Styles.css new file mode 100644 index 0000000..7752a1d --- /dev/null +++ b/src/Resources/Profiles/Continue/Theme/Styles.css @@ -0,0 +1,55 @@ +/* Lightweight non-ZH theme. */ +* +{ + font-family: Calibri; + font-size: 10pt; + color: white; +} + +LoadFromTheFileWindow, SetUpWindowsWrapper, LoadFromTheGameWindow, SettingsWindow, SelectProfileWindow, QWidget#pSettingsWindow, QDialog +{ + background-color: #211019; +} + +EditorWindow +{ + background-color: #211019; +} + +QPushButton, QComboBox +{ + font-weight: bold; + color: white; + background-color: #5f173b; + border: 2px outset #f0a6c2; + border-radius: 3px; + padding: 8px; +} + +QPushButton:hover, QComboBox:hover +{ + background-color: #862456; + color: #f5e663; +} + +QTreeWidget, QTabWidget, QScrollArea, QStatusBar +{ + background: rgba(0, 0, 0, 0.7); + border: 1px outset #ffd0df; + border-radius: 3px; + color: white; +} + +QTreeWidget::item +{ + min-height: 40px; +} + +QTreeWidget::item:selected, QTreeWidget::item:selected:!active +{ + background-color: #862456; + color: white; +} + +QScrollArea#Keyboard QPushButton[status="good"] { background-color: #128d2d; } +QScrollArea#Keyboard QPushButton[status="bad"] { background-color: #cb0d27; } diff --git a/src/Resources/Profiles/Contra/TechTree.json b/src/Resources/Profiles/Contra/TechTree.json new file mode 100644 index 0000000..367cb36 --- /dev/null +++ b/src/Resources/Profiles/Contra/TechTree.json @@ -0,0 +1,208 @@ +{ + "TechTree": [ + { + "ShortName": "COA", + "DisplayName": "ARES PROTOCOL", + "DisplayNameDescription": "Heavy weapons Contra test side", + "Buildings": [ + {"Name": "USACommandCenter", "IngameName": "OBJECT:CommandCenter", "KeyboardLayouts": [[{"IconName": "USADozer", "HotkeyString": "CONTROLBAR:ConstructAmericaDozer"}, {"IconName": "USAParticleCannon", "HotkeyString": "CONTROLBAR:ConstructAmericaParticleCannonUplink"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "USABurton", "IngameName": "OBJECT:ColonelBurton", "KeyboardLayouts": [[{"IconName": "USAKnifeAttack", "HotkeyString": "CONTROLBAR:KnifeAttack"}, {"IconName": "USADetonateCharges", "HotkeyString": "CONTROLBAR:DetonateCharges"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "USAPaladinTank", "IngameName": "OBJECT:Paladin", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "USAAurora", "IngameName": "OBJECT:Aurora", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "COB", + "DisplayName": "ION BUREAU", + "DisplayNameDescription": "Precision Contra test side", + "Buildings": [ + {"Name": "USAStrategyCenter", "IngameName": "OBJECT:StrategyCenter", "KeyboardLayouts": [[{"IconName": "USASearchAndDestroy", "HotkeyString": "CONTROLBAR:InitiateBattlePlanSearchAndDestroy"}, {"IconName": "USAIntelligence", "HotkeyString": "CONTROLBAR:CIAIntelligence"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "USAPathfinder", "IngameName": "OBJECT:Pathfinder", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "USAMicrowave", "IngameName": "OBJECT:Microwave", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "USAStealthFighter", "IngameName": "OBJECT:StealthFighter", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "COC", + "DisplayName": "NOVA WING", + "DisplayNameDescription": "Air strike Contra test side", + "Buildings": [ + {"Name": "USAAirfield", "IngameName": "OBJECT:Airfield", "KeyboardLayouts": [[{"IconName": "USARaptor", "HotkeyString": "CONTROLBAR:ConstructAmericaJetRaptor"}, {"IconName": "USAAurora", "HotkeyString": "CONTROLBAR:ConstructAmericaJetAurora"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "USARanger", "IngameName": "OBJECT:Ranger", "KeyboardLayouts": [[{"IconName": "USAFlashbangs", "HotkeyString": "CONTROLBAR:FlashBangGrenadeMode"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "USAAvenger", "IngameName": "OBJECT:Avenger", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "AIRKingRaptor", "IngameName": "OBJECT:Raptor", "KeyboardLayouts": [[{"IconName": "AirGuard", "HotkeyString": "CONTROLBAR:GuardFlyingUnitsOnly"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "COD", + "DisplayName": "SHIELD ARRAY", + "DisplayNameDescription": "Defensive Contra test side", + "Buildings": [ + {"Name": "USAPatriot", "IngameName": "OBJECT:PatriotBattery", "KeyboardLayouts": [[{"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "USAMissileDefender", "IngameName": "OBJECT:MissileTeam", "KeyboardLayouts": [[{"IconName": "USALaserLock", "HotkeyString": "CONTROLBAR:LaserMissileAttack"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "USAHumvee", "IngameName": "OBJECT:Humvee", "KeyboardLayouts": [[{"IconName": "USABattleDrone", "HotkeyString": "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "USAComanche", "IngameName": "OBJECT:Comanche", "KeyboardLayouts": [[{"IconName": "USAFireRocketPods", "HotkeyString": "CONTROLBAR:FireRocketPods"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "COE", + "DisplayName": "RED FORGE", + "DisplayNameDescription": "Industrial Contra test side", + "Buildings": [ + {"Name": "PRCWarFactory", "IngameName": "OBJECT:WarFactory", "KeyboardLayouts": [[{"IconName": "PRCBattlemaster", "HotkeyString": "CONTROLBAR:ConstructGLATankBattleMaster"}, {"IconName": "PRCNukeCannon", "HotkeyString": "CONTROLBAR:ConstructChinaVehicleNukeLauncher"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "PRCTankHunter", "IngameName": "OBJECT:TANKHUNTER", "KeyboardLayouts": [[{"IconName": "PRCTNTAttack", "HotkeyString": "CONTROLBAR:TNTAttack"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "PRCOverlordTank", "IngameName": "OBJECT:Overlord", "KeyboardLayouts": [[{"IconName": "PRCOverlordGatlingCannon", "HotkeyString": "CONTROLBAR:UpgradeChinaOverlordGattlingCannon"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "PRCMIG", "IngameName": "OBJECT:MIG", "KeyboardLayouts": [[{"IconName": "AirGuard", "HotkeyString": "CONTROLBAR:GuardFlyingUnitsOnly"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "COF", + "DisplayName": "FIREWALL CELL", + "DisplayNameDescription": "Area denial Contra test side", + "Buildings": [ + {"Name": "PRCBunker", "IngameName": "OBJECT:Bunker", "KeyboardLayouts": [[{"IconName": "Evacuate", "HotkeyString": "CONTROLBAR:Evacuate"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "PRCRedGuard", "IngameName": "OBJECT:Redguard", "KeyboardLayouts": [[{"IconName": "CaptureBuilding", "HotkeyString": "CONTROLBAR:CaptureBuilding"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "PRCDragonTank", "IngameName": "OBJECT:Dragon", "KeyboardLayouts": [[{"IconName": "PRCFireWall", "HotkeyString": "CONTROLBAR:FireWall"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "PRCHelix", "IngameName": "OBJECT:Helix", "KeyboardLayouts": [[{"IconName": "PRCDropNapalmBomb", "HotkeyString": "CONTROLBAR:DropNapalmBomb"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "COG", + "DisplayName": "SIEGE GROUP", + "DisplayNameDescription": "Artillery Contra test side", + "Buildings": [ + {"Name": "PRCCommandCenter", "IngameName": "OBJECT:CommandCenter", "KeyboardLayouts": [[{"IconName": "PRCArtilleryBarrage", "HotkeyString": "CONTROLBAR:ArtilleryBarrage"}, {"IconName": "PRCDozer", "HotkeyString": "CONTROLBAR:ConstructChinaDozer"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "INFMiniGunner", "IngameName": "OBJECT:Redguard", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "PRCInfernoCannon", "IngameName": "OBJECT:InfernoCannon", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "PRCMIG", "IngameName": "OBJECT:MIG", "KeyboardLayouts": [[{"IconName": "AirGuard", "HotkeyString": "CONTROLBAR:GuardFlyingUnitsOnly"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "COH", + "DisplayName": "REACTOR GUARD", + "DisplayNameDescription": "Power economy Contra test side", + "Buildings": [ + {"Name": "PRCNuclearReactor", "IngameName": "OBJECT:NuclearReactor", "KeyboardLayouts": [[{"IconName": "PRCOvercharge", "HotkeyString": "CONTROLBAR:Overcharge"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "PRCHacker", "IngameName": "OBJECT:Hacker", "KeyboardLayouts": [[{"IconName": "PRCHackInternet", "HotkeyString": "CONTROLBAR:InternetHack"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "PRCGattlingTank", "IngameName": "OBJECT:GattlingTank", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "PRCHelix", "IngameName": "OBJECT:Helix", "KeyboardLayouts": [[{"IconName": "PRCHelixSpeakerTower", "HotkeyString": "CONTROLBAR:UpgradeChinaHelixPropagandaTower"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "COI", + "DisplayName": "BLACK MARKET", + "DisplayNameDescription": "Upgrade economy Contra test side", + "Buildings": [ + {"Name": "GLABlackMarket", "IngameName": "OBJECT:BlackMarket", "KeyboardLayouts": [[{"IconName": "GLAAPBullets", "HotkeyString": "CONTROLBAR:UpgradeGLAAPBullets"}, {"IconName": "GLAJunkRepair", "HotkeyString": "CONTROLBAR:UpgradeGLAJunkRepair"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "GLAJarmenKell", "IngameName": "OBJECT:JarmenKell", "KeyboardLayouts": [[{"IconName": "GLAPilotKill", "HotkeyString": "CONTROLBAR:SniperAttack"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "GLAQuadCannon", "IngameName": "OBJECT:QuadCannon", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "USAComanche", "IngameName": "OBJECT:Comanche", "KeyboardLayouts": [[{"IconName": "AirGuard", "HotkeyString": "CONTROLBAR:GuardFlyingUnitsOnly"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "COJ", + "DisplayName": "SMUGGLER LINE", + "DisplayNameDescription": "Fast transport Contra test side", + "Buildings": [ + {"Name": "GLAArmsDealer", "IngameName": "OBJECT:ArmsDealer", "KeyboardLayouts": [[{"IconName": "GLATechnical", "HotkeyString": "CONTROLBAR:ConstructGLAVehicleTechnical"}, {"IconName": "GLACombatBike", "HotkeyString": "CONTROLBAR:ConstructGLAVehicleCombatBike"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "GLARebel", "IngameName": "OBJECT:Rebel", "KeyboardLayouts": [[{"IconName": "CaptureBuilding", "HotkeyString": "CONTROLBAR:CaptureBuilding"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "GLATechnical", "IngameName": "OBJECT:Technical", "KeyboardLayouts": [[{"IconName": "Evacuate", "HotkeyString": "CONTROLBAR:Evacuate"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "PRCHelix", "IngameName": "OBJECT:Helix", "KeyboardLayouts": [[{"IconName": "Evacuate", "HotkeyString": "CONTROLBAR:Evacuate"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "COK", + "DisplayName": "DEMOLITION LAB", + "DisplayNameDescription": "Explosive Contra test side", + "Buildings": [ + {"Name": "GLADemoTrap", "IngameName": "OBJECT:DemoTrap", "KeyboardLayouts": [[{"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "GLATerrorist", "IngameName": "OBJECT:Terrorist", "KeyboardLayouts": [[{"IconName": "DMLSuicide", "HotkeyString": "CONTROLBAR:SuicideAttack"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "GLABombTruck", "IngameName": "OBJECT:BombTruck", "KeyboardLayouts": [[{"IconName": "GLACarBomb", "HotkeyString": "CONTROLBAR:DetonateBombTruck"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "USAStealthFighter", "IngameName": "OBJECT:StealthFighter", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "COL", + "DisplayName": "TOXIN CELL", + "DisplayNameDescription": "Contamination Contra test side", + "Buildings": [ + {"Name": "GLAScudStorm", "IngameName": "OBJECT:SCUDStorm", "KeyboardLayouts": [[{"IconName": "GLAScudStormLaunch", "HotkeyString": "CONTROLBAR:ScudStorm"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "TOXRebel", "IngameName": "OBJECT:Rebel", "KeyboardLayouts": [[{"IconName": "CaptureBuilding", "HotkeyString": "CONTROLBAR:CaptureBuilding"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "GLAToxinTractor", "IngameName": "OBJECT:ToxinTruck", "KeyboardLayouts": [[{"IconName": "GLAContaminate", "HotkeyString": "CONTROLBAR:Contaminate"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "USAComanche", "IngameName": "OBJECT:Comanche", "KeyboardLayouts": [[{"IconName": "AirGuard", "HotkeyString": "CONTROLBAR:GuardFlyingUnitsOnly"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + } + ] +} diff --git a/src/Resources/Profiles/Contra/Theme/Styles.css b/src/Resources/Profiles/Contra/Theme/Styles.css new file mode 100644 index 0000000..3298c24 --- /dev/null +++ b/src/Resources/Profiles/Contra/Theme/Styles.css @@ -0,0 +1,55 @@ +/* Lightweight non-ZH theme. */ +* +{ + font-family: Calibri; + font-size: 10pt; + color: white; +} + +LoadFromTheFileWindow, SetUpWindowsWrapper, LoadFromTheGameWindow, SettingsWindow, SelectProfileWindow, QWidget#pSettingsWindow, QDialog +{ + background-color: #171717; +} + +EditorWindow +{ + background-color: #171717; +} + +QPushButton, QComboBox +{ + font-weight: bold; + color: white; + background-color: #611927; + border: 2px outset #ffb3a7; + border-radius: 3px; + padding: 8px; +} + +QPushButton:hover, QComboBox:hover +{ + background-color: #9e2435; + color: #f9e76a; +} + +QTreeWidget, QTabWidget, QScrollArea, QStatusBar +{ + background: rgba(0, 0, 0, 0.75); + border: 1px outset #ffd0c9; + border-radius: 3px; + color: white; +} + +QTreeWidget::item +{ + min-height: 40px; +} + +QTreeWidget::item:selected, QTreeWidget::item:selected:!active +{ + background-color: #9e2435; + color: white; +} + +QScrollArea#Keyboard QPushButton[status="good"] { background-color: #128d2d; } +QScrollArea#Keyboard QPushButton[status="bad"] { background-color: #cb0d27; } diff --git a/src/Resources/Icons/AirGuard.webp b/src/Resources/Profiles/Generals/Icons/AirGuard.webp similarity index 100% rename from src/Resources/Icons/AirGuard.webp rename to src/Resources/Profiles/Generals/Icons/AirGuard.webp diff --git a/src/Resources/Icons/AttackMove.webp b/src/Resources/Profiles/Generals/Icons/AttackMove.webp similarity index 100% rename from src/Resources/Icons/AttackMove.webp rename to src/Resources/Profiles/Generals/Icons/AttackMove.webp diff --git a/src/Resources/Icons/CaptureBuilding.webp b/src/Resources/Profiles/Generals/Icons/CaptureBuilding.webp similarity index 100% rename from src/Resources/Icons/CaptureBuilding.webp rename to src/Resources/Profiles/Generals/Icons/CaptureBuilding.webp diff --git a/src/Resources/Icons/DisarmMinesAtPosition.webp b/src/Resources/Profiles/Generals/Icons/DisarmMinesAtPosition.webp similarity index 100% rename from src/Resources/Icons/DisarmMinesAtPosition.webp rename to src/Resources/Profiles/Generals/Icons/DisarmMinesAtPosition.webp diff --git a/src/Resources/Icons/EmergencyRepair.webp b/src/Resources/Profiles/Generals/Icons/EmergencyRepair.webp similarity index 100% rename from src/Resources/Icons/EmergencyRepair.webp rename to src/Resources/Profiles/Generals/Icons/EmergencyRepair.webp diff --git a/src/Resources/Icons/Evacuate.webp b/src/Resources/Profiles/Generals/Icons/Evacuate.webp similarity index 100% rename from src/Resources/Icons/Evacuate.webp rename to src/Resources/Profiles/Generals/Icons/Evacuate.webp diff --git a/src/Resources/Icons/GLA/DMLAdvancedDemoTrap.webp b/src/Resources/Profiles/Generals/Icons/GLA/DMLAdvancedDemoTrap.webp similarity index 100% rename from src/Resources/Icons/GLA/DMLAdvancedDemoTrap.webp rename to src/Resources/Profiles/Generals/Icons/GLA/DMLAdvancedDemoTrap.webp diff --git a/src/Resources/Icons/GLA/DMLDetonateCharges.webp b/src/Resources/Profiles/Generals/Icons/GLA/DMLDetonateCharges.webp similarity index 100% rename from src/Resources/Icons/GLA/DMLDetonateCharges.webp rename to src/Resources/Profiles/Generals/Icons/GLA/DMLDetonateCharges.webp diff --git a/src/Resources/Icons/GLA/DMLRemoteDemoCharge.webp b/src/Resources/Profiles/Generals/Icons/GLA/DMLRemoteDemoCharge.webp similarity index 100% rename from src/Resources/Icons/GLA/DMLRemoteDemoCharge.webp rename to src/Resources/Profiles/Generals/Icons/GLA/DMLRemoteDemoCharge.webp diff --git a/src/Resources/Icons/GLA/DMLSuicide.webp b/src/Resources/Profiles/Generals/Icons/GLA/DMLSuicide.webp similarity index 100% rename from src/Resources/Icons/GLA/DMLSuicide.webp rename to src/Resources/Profiles/Generals/Icons/GLA/DMLSuicide.webp diff --git a/src/Resources/Icons/GLA/DMLTimedDemoCharge.webp b/src/Resources/Profiles/Generals/Icons/GLA/DMLTimedDemoCharge.webp similarity index 100% rename from src/Resources/Icons/GLA/DMLTimedDemoCharge.webp rename to src/Resources/Profiles/Generals/Icons/GLA/DMLTimedDemoCharge.webp diff --git a/src/Resources/Icons/GLA/GLAAPBullets.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAAPBullets.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAAPBullets.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAAPBullets.webp diff --git a/src/Resources/Icons/GLA/GLAAPRockets.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAAPRockets.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAAPRockets.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAAPRockets.webp diff --git a/src/Resources/Icons/GLA/GLAAngryMob.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAAngryMob.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAAngryMob.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAAngryMob.webp diff --git a/src/Resources/Icons/GLA/GLAAnthraxBeta.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAAnthraxBeta.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAAnthraxBeta.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAAnthraxBeta.webp diff --git a/src/Resources/Icons/GLA/GLAAnthraxBomb.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAAnthraxBomb.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAAnthraxBomb.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAAnthraxBomb.webp diff --git a/src/Resources/Icons/GLA/GLAAnthraxShells.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAAnthraxShells.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAAnthraxShells.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAAnthraxShells.webp diff --git a/src/Resources/Icons/GLA/GLAAnthraxWarhead.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAAnthraxWarhead.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAAnthraxWarhead.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAAnthraxWarhead.webp diff --git a/src/Resources/Icons/GLA/GLAArmTheMob.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAArmTheMob.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAArmTheMob.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAArmTheMob.webp diff --git a/src/Resources/Icons/GLA/GLAArmsDealer.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAArmsDealer.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAArmsDealer.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAArmsDealer.webp diff --git a/src/Resources/Icons/GLA/GLABarracks.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLABarracks.webp similarity index 100% rename from src/Resources/Icons/GLA/GLABarracks.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLABarracks.webp diff --git a/src/Resources/Icons/GLA/GLABattleBus.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLABattleBus.webp similarity index 100% rename from src/Resources/Icons/GLA/GLABattleBus.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLABattleBus.webp diff --git a/src/Resources/Icons/GLA/GLABecomeReal.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLABecomeReal.webp similarity index 100% rename from src/Resources/Icons/GLA/GLABecomeReal.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLABecomeReal.webp diff --git a/src/Resources/Icons/GLA/GLABioBomb.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLABioBomb.webp similarity index 100% rename from src/Resources/Icons/GLA/GLABioBomb.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLABioBomb.webp diff --git a/src/Resources/Icons/GLA/GLABlackMarket.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLABlackMarket.webp similarity index 100% rename from src/Resources/Icons/GLA/GLABlackMarket.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLABlackMarket.webp diff --git a/src/Resources/Icons/GLA/GLABombTruck.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLABombTruck.webp similarity index 100% rename from src/Resources/Icons/GLA/GLABombTruck.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLABombTruck.webp diff --git a/src/Resources/Icons/GLA/GLABoobyTraps.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLABoobyTraps.webp similarity index 100% rename from src/Resources/Icons/GLA/GLABoobyTraps.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLABoobyTraps.webp diff --git a/src/Resources/Icons/GLA/GLACamoNetting.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLACamoNetting.webp similarity index 100% rename from src/Resources/Icons/GLA/GLACamoNetting.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLACamoNetting.webp diff --git a/src/Resources/Icons/GLA/GLACamouflage.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLACamouflage.webp similarity index 100% rename from src/Resources/Icons/GLA/GLACamouflage.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLACamouflage.webp diff --git a/src/Resources/Icons/GLA/GLACarBomb.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLACarBomb.webp similarity index 100% rename from src/Resources/Icons/GLA/GLACarBomb.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLACarBomb.webp diff --git a/src/Resources/Icons/GLA/GLACombatBike.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLACombatBike.webp similarity index 100% rename from src/Resources/Icons/GLA/GLACombatBike.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLACombatBike.webp diff --git a/src/Resources/Icons/GLA/GLACommandCenter.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLACommandCenter.webp similarity index 100% rename from src/Resources/Icons/GLA/GLACommandCenter.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLACommandCenter.webp diff --git a/src/Resources/Icons/GLA/GLAContaminate.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAContaminate.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAContaminate.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAContaminate.webp diff --git a/src/Resources/Icons/GLA/GLADemoTrap.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLADemoTrap.webp similarity index 100% rename from src/Resources/Icons/GLA/GLADemoTrap.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLADemoTrap.webp diff --git a/src/Resources/Icons/GLA/GLADetonate.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLADetonate.webp similarity index 100% rename from src/Resources/Icons/GLA/GLADetonate.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLADetonate.webp diff --git a/src/Resources/Icons/GLA/GLADisguise.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLADisguise.webp similarity index 100% rename from src/Resources/Icons/GLA/GLADisguise.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLADisguise.webp diff --git a/src/Resources/Icons/GLA/GLAExplosiveWarhead.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAExplosiveWarhead.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAExplosiveWarhead.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAExplosiveWarhead.webp diff --git a/src/Resources/Icons/GLA/GLAFakeArmsDealer.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAFakeArmsDealer.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAFakeArmsDealer.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAFakeArmsDealer.webp diff --git a/src/Resources/Icons/GLA/GLAFakeBarracks.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAFakeBarracks.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAFakeBarracks.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAFakeBarracks.webp diff --git a/src/Resources/Icons/GLA/GLAFakeBlackMarket.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAFakeBlackMarket.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAFakeBlackMarket.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAFakeBlackMarket.webp diff --git a/src/Resources/Icons/GLA/GLAFakeCommandCenter.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAFakeCommandCenter.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAFakeCommandCenter.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAFakeCommandCenter.webp diff --git a/src/Resources/Icons/GLA/GLAFakeCommandSet.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAFakeCommandSet.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAFakeCommandSet.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAFakeCommandSet.webp diff --git a/src/Resources/Icons/GLA/GLAFakeSupplyStash.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAFakeSupplyStash.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAFakeSupplyStash.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAFakeSupplyStash.webp diff --git a/src/Resources/Icons/GLA/GLAFortifiedStructure.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAFortifiedStructure.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAFortifiedStructure.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAFortifiedStructure.webp diff --git a/src/Resources/Icons/GLA/GLAGPSScrambler.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAGPSScrambler.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAGPSScrambler.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAGPSScrambler.webp diff --git a/src/Resources/Icons/GLA/GLAHighExplosiveBomb.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAHighExplosiveBomb.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAHighExplosiveBomb.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAHighExplosiveBomb.webp diff --git a/src/Resources/Icons/GLA/GLAHijack.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAHijack.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAHijack.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAHijack.webp diff --git a/src/Resources/Icons/GLA/GLAHijacker.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAHijacker.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAHijacker.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAHijacker.webp diff --git a/src/Resources/Icons/GLA/GLAHole.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAHole.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAHole.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAHole.webp diff --git a/src/Resources/Icons/GLA/GLAJarmenKell.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAJarmenKell.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAJarmenKell.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAJarmenKell.webp diff --git a/src/Resources/Icons/GLA/GLAJunkRepair.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAJunkRepair.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAJunkRepair.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAJunkRepair.webp diff --git a/src/Resources/Icons/GLA/GLAManualControl.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAManualControl.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAManualControl.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAManualControl.webp diff --git a/src/Resources/Icons/GLA/GLAMarauderTank.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAMarauderTank.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAMarauderTank.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAMarauderTank.webp diff --git a/src/Resources/Icons/GLA/GLAPalace.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAPalace.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAPalace.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAPalace.webp diff --git a/src/Resources/Icons/GLA/GLAPilotKill.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAPilotKill.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAPilotKill.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAPilotKill.webp diff --git a/src/Resources/Icons/GLA/GLAProximityFuse.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAProximityFuse.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAProximityFuse.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAProximityFuse.webp diff --git a/src/Resources/Icons/GLA/GLAQuadCannon.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAQuadCannon.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAQuadCannon.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAQuadCannon.webp diff --git a/src/Resources/Icons/GLA/GLARPGTrooper.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLARPGTrooper.webp similarity index 100% rename from src/Resources/Icons/GLA/GLARPGTrooper.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLARPGTrooper.webp diff --git a/src/Resources/Icons/GLA/GLARadarVan.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLARadarVan.webp similarity index 100% rename from src/Resources/Icons/GLA/GLARadarVan.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLARadarVan.webp diff --git a/src/Resources/Icons/GLA/GLARadarVanScan.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLARadarVanScan.webp similarity index 100% rename from src/Resources/Icons/GLA/GLARadarVanScan.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLARadarVanScan.webp diff --git a/src/Resources/Icons/GLA/GLARebel.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLARebel.webp similarity index 100% rename from src/Resources/Icons/GLA/GLARebel.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLARebel.webp diff --git a/src/Resources/Icons/GLA/GLARebelAmbush.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLARebelAmbush.webp similarity index 100% rename from src/Resources/Icons/GLA/GLARebelAmbush.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLARebelAmbush.webp diff --git a/src/Resources/Icons/GLA/GLARocketBuggy.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLARocketBuggy.webp similarity index 100% rename from src/Resources/Icons/GLA/GLARocketBuggy.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLARocketBuggy.webp diff --git a/src/Resources/Icons/GLA/GLARocketBuggyAmmo.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLARocketBuggyAmmo.webp similarity index 100% rename from src/Resources/Icons/GLA/GLARocketBuggyAmmo.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLARocketBuggyAmmo.webp diff --git a/src/Resources/Icons/GLA/GLASaboteur.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLASaboteur.webp similarity index 100% rename from src/Resources/Icons/GLA/GLASaboteur.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLASaboteur.webp diff --git a/src/Resources/Icons/GLA/GLAScorpionRocket.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAScorpionRocket.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAScorpionRocket.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAScorpionRocket.webp diff --git a/src/Resources/Icons/GLA/GLAScorpionTank.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAScorpionTank.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAScorpionTank.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAScorpionTank.webp diff --git a/src/Resources/Icons/GLA/GLAScudLauncher.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAScudLauncher.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAScudLauncher.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAScudLauncher.webp diff --git a/src/Resources/Icons/GLA/GLAScudStorm.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAScudStorm.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAScudStorm.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAScudStorm.webp diff --git a/src/Resources/Icons/GLA/GLAScudStormLaunch.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAScudStormLaunch.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAScudStormLaunch.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAScudStormLaunch.webp diff --git a/src/Resources/Icons/GLA/GLASneakAttack.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLASneakAttack.webp similarity index 100% rename from src/Resources/Icons/GLA/GLASneakAttack.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLASneakAttack.webp diff --git a/src/Resources/Icons/GLA/GLAStingerSite.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAStingerSite.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAStingerSite.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAStingerSite.webp diff --git a/src/Resources/Icons/GLA/GLASupplyStash.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLASupplyStash.webp similarity index 100% rename from src/Resources/Icons/GLA/GLASupplyStash.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLASupplyStash.webp diff --git a/src/Resources/Icons/GLA/GLATechnical.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLATechnical.webp similarity index 100% rename from src/Resources/Icons/GLA/GLATechnical.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLATechnical.webp diff --git a/src/Resources/Icons/GLA/GLATerrorist.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLATerrorist.webp similarity index 100% rename from src/Resources/Icons/GLA/GLATerrorist.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLATerrorist.webp diff --git a/src/Resources/Icons/GLA/GLAToxinTractor.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAToxinTractor.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAToxinTractor.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAToxinTractor.webp diff --git a/src/Resources/Icons/GLA/GLATunnelNetwork.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLATunnelNetwork.webp similarity index 100% rename from src/Resources/Icons/GLA/GLATunnelNetwork.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLATunnelNetwork.webp diff --git a/src/Resources/Icons/GLA/GLAWorker.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAWorker.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAWorker.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAWorker.webp diff --git a/src/Resources/Icons/GLA/GLAWorkerShoes.webp b/src/Resources/Profiles/Generals/Icons/GLA/GLAWorkerShoes.webp similarity index 100% rename from src/Resources/Icons/GLA/GLAWorkerShoes.webp rename to src/Resources/Profiles/Generals/Icons/GLA/GLAWorkerShoes.webp diff --git a/src/Resources/Icons/GLA/TOXAnthraxGamma.webp b/src/Resources/Profiles/Generals/Icons/GLA/TOXAnthraxGamma.webp similarity index 100% rename from src/Resources/Icons/GLA/TOXAnthraxGamma.webp rename to src/Resources/Profiles/Generals/Icons/GLA/TOXAnthraxGamma.webp diff --git a/src/Resources/Icons/GLA/TOXRebel.webp b/src/Resources/Profiles/Generals/Icons/GLA/TOXRebel.webp similarity index 100% rename from src/Resources/Icons/GLA/TOXRebel.webp rename to src/Resources/Profiles/Generals/Icons/GLA/TOXRebel.webp diff --git a/src/Resources/Icons/GLA/TOXTunnelNetwork.webp b/src/Resources/Profiles/Generals/Icons/GLA/TOXTunnelNetwork.webp similarity index 100% rename from src/Resources/Icons/GLA/TOXTunnelNetwork.webp rename to src/Resources/Profiles/Generals/Icons/GLA/TOXTunnelNetwork.webp diff --git a/src/Resources/Icons/Guard.webp b/src/Resources/Profiles/Generals/Icons/Guard.webp similarity index 100% rename from src/Resources/Icons/Guard.webp rename to src/Resources/Profiles/Generals/Icons/Guard.webp diff --git a/src/Resources/Icons/PRC/INFAssaultTroopTransport.webp b/src/Resources/Profiles/Generals/Icons/PRC/INFAssaultTroopTransport.webp similarity index 100% rename from src/Resources/Icons/PRC/INFAssaultTroopTransport.webp rename to src/Resources/Profiles/Generals/Icons/PRC/INFAssaultTroopTransport.webp diff --git a/src/Resources/Icons/PRC/INFFortifiedBunker.webp b/src/Resources/Profiles/Generals/Icons/PRC/INFFortifiedBunker.webp similarity index 100% rename from src/Resources/Icons/PRC/INFFortifiedBunker.webp rename to src/Resources/Profiles/Generals/Icons/PRC/INFFortifiedBunker.webp diff --git a/src/Resources/Icons/PRC/INFMiniGunner.webp b/src/Resources/Profiles/Generals/Icons/PRC/INFMiniGunner.webp similarity index 100% rename from src/Resources/Icons/PRC/INFMiniGunner.webp rename to src/Resources/Profiles/Generals/Icons/PRC/INFMiniGunner.webp diff --git a/src/Resources/Icons/PRC/INFSuperLotus.webp b/src/Resources/Profiles/Generals/Icons/PRC/INFSuperLotus.webp similarity index 100% rename from src/Resources/Icons/PRC/INFSuperLotus.webp rename to src/Resources/Profiles/Generals/Icons/PRC/INFSuperLotus.webp diff --git a/src/Resources/Icons/PRC/NUKCarpetBomb.webp b/src/Resources/Profiles/Generals/Icons/PRC/NUKCarpetBomb.webp similarity index 100% rename from src/Resources/Icons/PRC/NUKCarpetBomb.webp rename to src/Resources/Profiles/Generals/Icons/PRC/NUKCarpetBomb.webp diff --git a/src/Resources/Icons/PRC/NUKIsotopeStability.webp b/src/Resources/Profiles/Generals/Icons/PRC/NUKIsotopeStability.webp similarity index 100% rename from src/Resources/Icons/PRC/NUKIsotopeStability.webp rename to src/Resources/Profiles/Generals/Icons/PRC/NUKIsotopeStability.webp diff --git a/src/Resources/Icons/PRC/NUKTacticalNukeMig.webp b/src/Resources/Profiles/Generals/Icons/PRC/NUKTacticalNukeMig.webp similarity index 100% rename from src/Resources/Icons/PRC/NUKTacticalNukeMig.webp rename to src/Resources/Profiles/Generals/Icons/PRC/NUKTacticalNukeMig.webp diff --git a/src/Resources/Icons/PRC/PRCAdvancedNuclearReactor.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCAdvancedNuclearReactor.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCAdvancedNuclearReactor.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCAdvancedNuclearReactor.webp diff --git a/src/Resources/Icons/PRC/PRCAirfield.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCAirfield.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCAirfield.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCAirfield.webp diff --git a/src/Resources/Icons/PRC/PRCArtilleryBarrage.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCArtilleryBarrage.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCArtilleryBarrage.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCArtilleryBarrage.webp diff --git a/src/Resources/Icons/PRC/PRCBarracks.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCBarracks.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCBarracks.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCBarracks.webp diff --git a/src/Resources/Icons/PRC/PRCBattlemaster.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCBattlemaster.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCBattlemaster.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCBattlemaster.webp diff --git a/src/Resources/Icons/PRC/PRCBlackLotus.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCBlackLotus.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCBlackLotus.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCBlackLotus.webp diff --git a/src/Resources/Icons/PRC/PRCBlackLotusCaptureBuilding.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCBlackLotusCaptureBuilding.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCBlackLotusCaptureBuilding.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCBlackLotusCaptureBuilding.webp diff --git a/src/Resources/Icons/PRC/PRCBlackLotusCashHack.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCBlackLotusCashHack.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCBlackLotusCashHack.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCBlackLotusCashHack.webp diff --git a/src/Resources/Icons/PRC/PRCBlackLotusDisableVehicle.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCBlackLotusDisableVehicle.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCBlackLotusDisableVehicle.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCBlackLotusDisableVehicle.webp diff --git a/src/Resources/Icons/PRC/PRCBlackNapalm.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCBlackNapalm.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCBlackNapalm.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCBlackNapalm.webp diff --git a/src/Resources/Icons/PRC/PRCBunker.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCBunker.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCBunker.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCBunker.webp diff --git a/src/Resources/Icons/PRC/PRCCarpetBomb.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCCarpetBomb.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCCarpetBomb.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCCarpetBomb.webp diff --git a/src/Resources/Icons/PRC/PRCChainguns.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCChainguns.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCChainguns.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCChainguns.webp diff --git a/src/Resources/Icons/PRC/PRCClusterMine.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCClusterMine.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCClusterMine.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCClusterMine.webp diff --git a/src/Resources/Icons/PRC/PRCCommandCenter.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCCommandCenter.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCCommandCenter.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCCommandCenter.webp diff --git a/src/Resources/Icons/PRC/PRCDisableBuilding.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCDisableBuilding.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCDisableBuilding.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCDisableBuilding.webp diff --git a/src/Resources/Icons/PRC/PRCDisableVehicle.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCDisableVehicle.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCDisableVehicle.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCDisableVehicle.webp diff --git a/src/Resources/Icons/PRC/PRCDozer.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCDozer.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCDozer.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCDozer.webp diff --git a/src/Resources/Icons/PRC/PRCDragonTank.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCDragonTank.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCDragonTank.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCDragonTank.webp diff --git a/src/Resources/Icons/PRC/PRCDropNapalmBomb.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCDropNapalmBomb.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCDropNapalmBomb.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCDropNapalmBomb.webp diff --git a/src/Resources/Icons/PRC/PRCDropNukeBomb.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCDropNukeBomb.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCDropNukeBomb.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCDropNukeBomb.webp diff --git a/src/Resources/Icons/PRC/PRCECMTank.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCECMTank.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCECMTank.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCECMTank.webp diff --git a/src/Resources/Icons/PRC/PRCEMPPulse.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCEMPPulse.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCEMPPulse.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCEMPPulse.webp diff --git a/src/Resources/Icons/PRC/PRCFireWall.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCFireWall.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCFireWall.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCFireWall.webp diff --git a/src/Resources/Icons/PRC/PRCFrenzy.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCFrenzy.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCFrenzy.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCFrenzy.webp diff --git a/src/Resources/Icons/PRC/PRCGattlingCannon.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCGattlingCannon.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCGattlingCannon.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCGattlingCannon.webp diff --git a/src/Resources/Icons/PRC/PRCGattlingTank.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCGattlingTank.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCGattlingTank.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCGattlingTank.webp diff --git a/src/Resources/Icons/PRC/PRCHackInternet.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCHackInternet.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCHackInternet.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCHackInternet.webp diff --git a/src/Resources/Icons/PRC/PRCHacker.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCHacker.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCHacker.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCHacker.webp diff --git a/src/Resources/Icons/PRC/PRCHelix.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCHelix.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCHelix.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCHelix.webp diff --git a/src/Resources/Icons/PRC/PRCHelixBattleBunker.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCHelixBattleBunker.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCHelixBattleBunker.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCHelixBattleBunker.webp diff --git a/src/Resources/Icons/PRC/PRCHelixGattlingCannon.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCHelixGattlingCannon.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCHelixGattlingCannon.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCHelixGattlingCannon.webp diff --git a/src/Resources/Icons/PRC/PRCHelixSpeakerTower.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCHelixSpeakerTower.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCHelixSpeakerTower.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCHelixSpeakerTower.webp diff --git a/src/Resources/Icons/PRC/PRCInfernoCannon.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCInfernoCannon.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCInfernoCannon.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCInfernoCannon.webp diff --git a/src/Resources/Icons/PRC/PRCInternetCenter.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCInternetCenter.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCInternetCenter.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCInternetCenter.webp diff --git a/src/Resources/Icons/PRC/PRCLandMine.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCLandMine.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCLandMine.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCLandMine.webp diff --git a/src/Resources/Icons/PRC/PRCListeningOutpost.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCListeningOutpost.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCListeningOutpost.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCListeningOutpost.webp diff --git a/src/Resources/Icons/PRC/PRCMIG.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCMIG.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCMIG.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCMIG.webp diff --git a/src/Resources/Icons/PRC/PRCMiGArmour.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCMiGArmour.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCMiGArmour.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCMiGArmour.webp diff --git a/src/Resources/Icons/PRC/PRCNapalmBomb.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCNapalmBomb.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCNapalmBomb.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCNapalmBomb.webp diff --git a/src/Resources/Icons/PRC/PRCNationalismIcon.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCNationalismIcon.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCNationalismIcon.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCNationalismIcon.webp diff --git a/src/Resources/Icons/PRC/PRCNeutronMines.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCNeutronMines.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCNeutronMines.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCNeutronMines.webp diff --git a/src/Resources/Icons/PRC/PRCNeutronShells.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCNeutronShells.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCNeutronShells.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCNeutronShells.webp diff --git a/src/Resources/Icons/PRC/PRCNuclearMissile.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCNuclearMissile.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCNuclearMissile.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCNuclearMissile.webp diff --git a/src/Resources/Icons/PRC/PRCNuclearMissileSilo.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCNuclearMissileSilo.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCNuclearMissileSilo.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCNuclearMissileSilo.webp diff --git a/src/Resources/Icons/PRC/PRCNuclearReactor.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCNuclearReactor.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCNuclearReactor.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCNuclearReactor.webp diff --git a/src/Resources/Icons/PRC/PRCNuclearShells.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCNuclearShells.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCNuclearShells.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCNuclearShells.webp diff --git a/src/Resources/Icons/PRC/PRCNuclearTanks.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCNuclearTanks.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCNuclearTanks.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCNuclearTanks.webp diff --git a/src/Resources/Icons/PRC/PRCNukeBomb.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCNukeBomb.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCNukeBomb.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCNukeBomb.webp diff --git a/src/Resources/Icons/PRC/PRCNukeCannon.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCNukeCannon.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCNukeCannon.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCNukeCannon.webp diff --git a/src/Resources/Icons/PRC/PRCOvercharge.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCOvercharge.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCOvercharge.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCOvercharge.webp diff --git a/src/Resources/Icons/PRC/PRCOverlordBattleBunker.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCOverlordBattleBunker.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCOverlordBattleBunker.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCOverlordBattleBunker.webp diff --git a/src/Resources/Icons/PRC/PRCOverlordGatlingCannon.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCOverlordGatlingCannon.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCOverlordGatlingCannon.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCOverlordGatlingCannon.webp diff --git a/src/Resources/Icons/PRC/PRCOverlordPropagandaTower.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCOverlordPropagandaTower.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCOverlordPropagandaTower.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCOverlordPropagandaTower.webp diff --git a/src/Resources/Icons/PRC/PRCOverlordTank.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCOverlordTank.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCOverlordTank.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCOverlordTank.webp diff --git a/src/Resources/Icons/PRC/PRCPropagandaCenter.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCPropagandaCenter.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCPropagandaCenter.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCPropagandaCenter.webp diff --git a/src/Resources/Icons/PRC/PRCRadarUpgrade.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCRadarUpgrade.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCRadarUpgrade.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCRadarUpgrade.webp diff --git a/src/Resources/Icons/PRC/PRCRedGuard.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCRedGuard.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCRedGuard.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCRedGuard.webp diff --git a/src/Resources/Icons/PRC/PRCSatelliteHack1.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCSatelliteHack1.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCSatelliteHack1.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCSatelliteHack1.webp diff --git a/src/Resources/Icons/PRC/PRCSatelliteHack2.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCSatelliteHack2.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCSatelliteHack2.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCSatelliteHack2.webp diff --git a/src/Resources/Icons/PRC/PRCSpeakerTower.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCSpeakerTower.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCSpeakerTower.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCSpeakerTower.webp diff --git a/src/Resources/Icons/PRC/PRCSubliminalMessaging.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCSubliminalMessaging.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCSubliminalMessaging.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCSubliminalMessaging.webp diff --git a/src/Resources/Icons/PRC/PRCSupplyCenter.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCSupplyCenter.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCSupplyCenter.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCSupplyCenter.webp diff --git a/src/Resources/Icons/PRC/PRCSupplyTruck.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCSupplyTruck.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCSupplyTruck.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCSupplyTruck.webp diff --git a/src/Resources/Icons/PRC/PRCTNTAttack.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCTNTAttack.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCTNTAttack.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCTNTAttack.webp diff --git a/src/Resources/Icons/PRC/PRCTankHunter.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCTankHunter.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCTankHunter.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCTankHunter.webp diff --git a/src/Resources/Icons/PRC/PRCTroopCrawler.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCTroopCrawler.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCTroopCrawler.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCTroopCrawler.webp diff --git a/src/Resources/Icons/PRC/PRCUraniumShells.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCUraniumShells.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCUraniumShells.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCUraniumShells.webp diff --git a/src/Resources/Icons/PRC/PRCWarFactory.webp b/src/Resources/Profiles/Generals/Icons/PRC/PRCWarFactory.webp similarity index 100% rename from src/Resources/Icons/PRC/PRCWarFactory.webp rename to src/Resources/Profiles/Generals/Icons/PRC/PRCWarFactory.webp diff --git a/src/Resources/Icons/PRC/TNKAutoloader.webp b/src/Resources/Profiles/Generals/Icons/PRC/TNKAutoloader.webp similarity index 100% rename from src/Resources/Icons/PRC/TNKAutoloader.webp rename to src/Resources/Profiles/Generals/Icons/PRC/TNKAutoloader.webp diff --git a/src/Resources/Icons/PRC/TNKEmperorOverlordTank.webp b/src/Resources/Profiles/Generals/Icons/PRC/TNKEmperorOverlordTank.webp similarity index 100% rename from src/Resources/Icons/PRC/TNKEmperorOverlordTank.webp rename to src/Resources/Profiles/Generals/Icons/PRC/TNKEmperorOverlordTank.webp diff --git a/src/Resources/Icons/PRC/TNKTankDrop.webp b/src/Resources/Profiles/Generals/Icons/PRC/TNKTankDrop.webp similarity index 100% rename from src/Resources/Icons/PRC/TNKTankDrop.webp rename to src/Resources/Profiles/Generals/Icons/PRC/TNKTankDrop.webp diff --git a/src/Resources/Icons/Paradrop.webp b/src/Resources/Profiles/Generals/Icons/Paradrop.webp similarity index 100% rename from src/Resources/Icons/Paradrop.webp rename to src/Resources/Profiles/Generals/Icons/Paradrop.webp diff --git a/src/Resources/Icons/Sell.webp b/src/Resources/Profiles/Generals/Icons/Sell.webp similarity index 100% rename from src/Resources/Icons/Sell.webp rename to src/Resources/Profiles/Generals/Icons/Sell.webp diff --git a/src/Resources/Icons/Stop.webp b/src/Resources/Profiles/Generals/Icons/Stop.webp similarity index 100% rename from src/Resources/Icons/Stop.webp rename to src/Resources/Profiles/Generals/Icons/Stop.webp diff --git a/src/Resources/Icons/USA/AIRCarpetBomb.webp b/src/Resources/Profiles/Generals/Icons/USA/AIRCarpetBomb.webp similarity index 100% rename from src/Resources/Icons/USA/AIRCarpetBomb.webp rename to src/Resources/Profiles/Generals/Icons/USA/AIRCarpetBomb.webp diff --git a/src/Resources/Icons/USA/AIRCombatChinook.webp b/src/Resources/Profiles/Generals/Icons/USA/AIRCombatChinook.webp similarity index 100% rename from src/Resources/Icons/USA/AIRCombatChinook.webp rename to src/Resources/Profiles/Generals/Icons/USA/AIRCombatChinook.webp diff --git a/src/Resources/Icons/USA/AIRKingRaptor.webp b/src/Resources/Profiles/Generals/Icons/USA/AIRKingRaptor.webp similarity index 100% rename from src/Resources/Icons/USA/AIRKingRaptor.webp rename to src/Resources/Profiles/Generals/Icons/USA/AIRKingRaptor.webp diff --git a/src/Resources/Icons/USA/AIRStealthComancheUpgrade.webp b/src/Resources/Profiles/Generals/Icons/USA/AIRStealthComancheUpgrade.webp similarity index 100% rename from src/Resources/Icons/USA/AIRStealthComancheUpgrade.webp rename to src/Resources/Profiles/Generals/Icons/USA/AIRStealthComancheUpgrade.webp diff --git a/src/Resources/Icons/USA/LSRLaserTank.webp b/src/Resources/Profiles/Generals/Icons/USA/LSRLaserTank.webp similarity index 100% rename from src/Resources/Icons/USA/LSRLaserTank.webp rename to src/Resources/Profiles/Generals/Icons/USA/LSRLaserTank.webp diff --git a/src/Resources/Icons/USA/LSRPatriot.webp b/src/Resources/Profiles/Generals/Icons/USA/LSRPatriot.webp similarity index 100% rename from src/Resources/Icons/USA/LSRPatriot.webp rename to src/Resources/Profiles/Generals/Icons/USA/LSRPatriot.webp diff --git a/src/Resources/Icons/USA/SWGAdvancedControlRods.webp b/src/Resources/Profiles/Generals/Icons/USA/SWGAdvancedControlRods.webp similarity index 100% rename from src/Resources/Icons/USA/SWGAdvancedControlRods.webp rename to src/Resources/Profiles/Generals/Icons/USA/SWGAdvancedControlRods.webp diff --git a/src/Resources/Icons/USA/SWGAuroraAlpha.webp b/src/Resources/Profiles/Generals/Icons/USA/SWGAuroraAlpha.webp similarity index 100% rename from src/Resources/Icons/USA/SWGAuroraAlpha.webp rename to src/Resources/Profiles/Generals/Icons/USA/SWGAuroraAlpha.webp diff --git a/src/Resources/Icons/USA/SWGColdFusionReactor.webp b/src/Resources/Profiles/Generals/Icons/USA/SWGColdFusionReactor.webp similarity index 100% rename from src/Resources/Icons/USA/SWGColdFusionReactor.webp rename to src/Resources/Profiles/Generals/Icons/USA/SWGColdFusionReactor.webp diff --git a/src/Resources/Icons/USA/SWGPatriot.webp b/src/Resources/Profiles/Generals/Icons/USA/SWGPatriot.webp similarity index 100% rename from src/Resources/Icons/USA/SWGPatriot.webp rename to src/Resources/Profiles/Generals/Icons/USA/SWGPatriot.webp diff --git a/src/Resources/Icons/USA/USAA10ThunderboltMissileStrike.webp b/src/Resources/Profiles/Generals/Icons/USA/USAA10ThunderboltMissileStrike.webp similarity index 100% rename from src/Resources/Icons/USA/USAA10ThunderboltMissileStrike.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAA10ThunderboltMissileStrike.webp diff --git a/src/Resources/Icons/USA/USAAdvancedTraining.webp b/src/Resources/Profiles/Generals/Icons/USA/USAAdvancedTraining.webp similarity index 100% rename from src/Resources/Icons/USA/USAAdvancedTraining.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAAdvancedTraining.webp diff --git a/src/Resources/Icons/USA/USAAirfield.webp b/src/Resources/Profiles/Generals/Icons/USA/USAAirfield.webp similarity index 100% rename from src/Resources/Icons/USA/USAAirfield.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAAirfield.webp diff --git a/src/Resources/Icons/USA/USAAmbulance.webp b/src/Resources/Profiles/Generals/Icons/USA/USAAmbulance.webp similarity index 100% rename from src/Resources/Icons/USA/USAAmbulance.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAAmbulance.webp diff --git a/src/Resources/Icons/USA/USAAmbulanceCleanupArea.webp b/src/Resources/Profiles/Generals/Icons/USA/USAAmbulanceCleanupArea.webp similarity index 100% rename from src/Resources/Icons/USA/USAAmbulanceCleanupArea.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAAmbulanceCleanupArea.webp diff --git a/src/Resources/Icons/USA/USAAurora.webp b/src/Resources/Profiles/Generals/Icons/USA/USAAurora.webp similarity index 100% rename from src/Resources/Icons/USA/USAAurora.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAAurora.webp diff --git a/src/Resources/Icons/USA/USAAvenger.webp b/src/Resources/Profiles/Generals/Icons/USA/USAAvenger.webp similarity index 100% rename from src/Resources/Icons/USA/USAAvenger.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAAvenger.webp diff --git a/src/Resources/Icons/USA/USABarracks.webp b/src/Resources/Profiles/Generals/Icons/USA/USABarracks.webp similarity index 100% rename from src/Resources/Icons/USA/USABarracks.webp rename to src/Resources/Profiles/Generals/Icons/USA/USABarracks.webp diff --git a/src/Resources/Icons/USA/USABattleDrone.webp b/src/Resources/Profiles/Generals/Icons/USA/USABattleDrone.webp similarity index 100% rename from src/Resources/Icons/USA/USABattleDrone.webp rename to src/Resources/Profiles/Generals/Icons/USA/USABattleDrone.webp diff --git a/src/Resources/Icons/USA/USABombardment.webp b/src/Resources/Profiles/Generals/Icons/USA/USABombardment.webp similarity index 100% rename from src/Resources/Icons/USA/USABombardment.webp rename to src/Resources/Profiles/Generals/Icons/USA/USABombardment.webp diff --git a/src/Resources/Icons/USA/USABunkerBusters.webp b/src/Resources/Profiles/Generals/Icons/USA/USABunkerBusters.webp similarity index 100% rename from src/Resources/Icons/USA/USABunkerBusters.webp rename to src/Resources/Profiles/Generals/Icons/USA/USABunkerBusters.webp diff --git a/src/Resources/Icons/USA/USABurton.webp b/src/Resources/Profiles/Generals/Icons/USA/USABurton.webp similarity index 100% rename from src/Resources/Icons/USA/USABurton.webp rename to src/Resources/Profiles/Generals/Icons/USA/USABurton.webp diff --git a/src/Resources/Icons/USA/USAChemicalSuits.webp b/src/Resources/Profiles/Generals/Icons/USA/USAChemicalSuits.webp similarity index 100% rename from src/Resources/Icons/USA/USAChemicalSuits.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAChemicalSuits.webp diff --git a/src/Resources/Icons/USA/USAChinook.webp b/src/Resources/Profiles/Generals/Icons/USA/USAChinook.webp similarity index 100% rename from src/Resources/Icons/USA/USAChinook.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAChinook.webp diff --git a/src/Resources/Icons/USA/USAColdFusionReactor.webp b/src/Resources/Profiles/Generals/Icons/USA/USAColdFusionReactor.webp similarity index 100% rename from src/Resources/Icons/USA/USAColdFusionReactor.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAColdFusionReactor.webp diff --git a/src/Resources/Icons/USA/USAComanche.webp b/src/Resources/Profiles/Generals/Icons/USA/USAComanche.webp similarity index 100% rename from src/Resources/Icons/USA/USAComanche.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAComanche.webp diff --git a/src/Resources/Icons/USA/USACombatDrop.webp b/src/Resources/Profiles/Generals/Icons/USA/USACombatDrop.webp similarity index 100% rename from src/Resources/Icons/USA/USACombatDrop.webp rename to src/Resources/Profiles/Generals/Icons/USA/USACombatDrop.webp diff --git a/src/Resources/Icons/USA/USACommandCenter.webp b/src/Resources/Profiles/Generals/Icons/USA/USACommandCenter.webp similarity index 100% rename from src/Resources/Icons/USA/USACommandCenter.webp rename to src/Resources/Profiles/Generals/Icons/USA/USACommandCenter.webp diff --git a/src/Resources/Icons/USA/USACompositeArmour.webp b/src/Resources/Profiles/Generals/Icons/USA/USACompositeArmour.webp similarity index 100% rename from src/Resources/Icons/USA/USACompositeArmour.webp rename to src/Resources/Profiles/Generals/Icons/USA/USACompositeArmour.webp diff --git a/src/Resources/Icons/USA/USAControlRods.webp b/src/Resources/Profiles/Generals/Icons/USA/USAControlRods.webp similarity index 100% rename from src/Resources/Icons/USA/USAControlRods.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAControlRods.webp diff --git a/src/Resources/Icons/USA/USACountermeasures.webp b/src/Resources/Profiles/Generals/Icons/USA/USACountermeasures.webp similarity index 100% rename from src/Resources/Icons/USA/USACountermeasures.webp rename to src/Resources/Profiles/Generals/Icons/USA/USACountermeasures.webp diff --git a/src/Resources/Icons/USA/USACrusaderTank.webp b/src/Resources/Profiles/Generals/Icons/USA/USACrusaderTank.webp similarity index 100% rename from src/Resources/Icons/USA/USACrusaderTank.webp rename to src/Resources/Profiles/Generals/Icons/USA/USACrusaderTank.webp diff --git a/src/Resources/Icons/USA/USADaisyCutter.webp b/src/Resources/Profiles/Generals/Icons/USA/USADaisyCutter.webp similarity index 100% rename from src/Resources/Icons/USA/USADaisyCutter.webp rename to src/Resources/Profiles/Generals/Icons/USA/USADaisyCutter.webp diff --git a/src/Resources/Icons/USA/USADetentionCamp.webp b/src/Resources/Profiles/Generals/Icons/USA/USADetentionCamp.webp similarity index 100% rename from src/Resources/Icons/USA/USADetentionCamp.webp rename to src/Resources/Profiles/Generals/Icons/USA/USADetentionCamp.webp diff --git a/src/Resources/Icons/USA/USADetonateCharges.webp b/src/Resources/Profiles/Generals/Icons/USA/USADetonateCharges.webp similarity index 100% rename from src/Resources/Icons/USA/USADetonateCharges.webp rename to src/Resources/Profiles/Generals/Icons/USA/USADetonateCharges.webp diff --git a/src/Resources/Icons/USA/USADozer.webp b/src/Resources/Profiles/Generals/Icons/USA/USADozer.webp similarity index 100% rename from src/Resources/Icons/USA/USADozer.webp rename to src/Resources/Profiles/Generals/Icons/USA/USADozer.webp diff --git a/src/Resources/Icons/USA/USADrone.webp b/src/Resources/Profiles/Generals/Icons/USA/USADrone.webp similarity index 100% rename from src/Resources/Icons/USA/USADrone.webp rename to src/Resources/Profiles/Generals/Icons/USA/USADrone.webp diff --git a/src/Resources/Icons/USA/USADroneArmor.webp b/src/Resources/Profiles/Generals/Icons/USA/USADroneArmor.webp similarity index 100% rename from src/Resources/Icons/USA/USADroneArmor.webp rename to src/Resources/Profiles/Generals/Icons/USA/USADroneArmor.webp diff --git a/src/Resources/Icons/USA/USADropZone.webp b/src/Resources/Profiles/Generals/Icons/USA/USADropZone.webp similarity index 100% rename from src/Resources/Icons/USA/USADropZone.webp rename to src/Resources/Profiles/Generals/Icons/USA/USADropZone.webp diff --git a/src/Resources/Icons/USA/USAEvacuate.webp b/src/Resources/Profiles/Generals/Icons/USA/USAEvacuate.webp similarity index 100% rename from src/Resources/Icons/USA/USAEvacuate.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAEvacuate.webp diff --git a/src/Resources/Icons/USA/USAFireBase.webp b/src/Resources/Profiles/Generals/Icons/USA/USAFireBase.webp similarity index 100% rename from src/Resources/Icons/USA/USAFireBase.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAFireBase.webp diff --git a/src/Resources/Icons/USA/USAFireRocketPods.webp b/src/Resources/Profiles/Generals/Icons/USA/USAFireRocketPods.webp similarity index 100% rename from src/Resources/Icons/USA/USAFireRocketPods.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAFireRocketPods.webp diff --git a/src/Resources/Icons/USA/USAFlashbangs.webp b/src/Resources/Profiles/Generals/Icons/USA/USAFlashbangs.webp similarity index 100% rename from src/Resources/Icons/USA/USAFlashbangs.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAFlashbangs.webp diff --git a/src/Resources/Icons/USA/USAHellfireDrone.webp b/src/Resources/Profiles/Generals/Icons/USA/USAHellfireDrone.webp similarity index 100% rename from src/Resources/Icons/USA/USAHellfireDrone.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAHellfireDrone.webp diff --git a/src/Resources/Icons/USA/USAHoldTheLine.webp b/src/Resources/Profiles/Generals/Icons/USA/USAHoldTheLine.webp similarity index 100% rename from src/Resources/Icons/USA/USAHoldTheLine.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAHoldTheLine.webp diff --git a/src/Resources/Icons/USA/USAHumvee.webp b/src/Resources/Profiles/Generals/Icons/USA/USAHumvee.webp similarity index 100% rename from src/Resources/Icons/USA/USAHumvee.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAHumvee.webp diff --git a/src/Resources/Icons/USA/USAIntelligence.webp b/src/Resources/Profiles/Generals/Icons/USA/USAIntelligence.webp similarity index 100% rename from src/Resources/Icons/USA/USAIntelligence.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAIntelligence.webp diff --git a/src/Resources/Icons/USA/USAKnifeAttack.webp b/src/Resources/Profiles/Generals/Icons/USA/USAKnifeAttack.webp similarity index 100% rename from src/Resources/Icons/USA/USAKnifeAttack.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAKnifeAttack.webp diff --git a/src/Resources/Icons/USA/USALaserGuidedMissiles.webp b/src/Resources/Profiles/Generals/Icons/USA/USALaserGuidedMissiles.webp similarity index 100% rename from src/Resources/Icons/USA/USALaserGuidedMissiles.webp rename to src/Resources/Profiles/Generals/Icons/USA/USALaserGuidedMissiles.webp diff --git a/src/Resources/Icons/USA/USALaserLock.webp b/src/Resources/Profiles/Generals/Icons/USA/USALaserLock.webp similarity index 100% rename from src/Resources/Icons/USA/USALaserLock.webp rename to src/Resources/Profiles/Generals/Icons/USA/USALaserLock.webp diff --git a/src/Resources/Icons/USA/USALeafletDrop.webp b/src/Resources/Profiles/Generals/Icons/USA/USALeafletDrop.webp similarity index 100% rename from src/Resources/Icons/USA/USALeafletDrop.webp rename to src/Resources/Profiles/Generals/Icons/USA/USALeafletDrop.webp diff --git a/src/Resources/Icons/USA/USAMOAB.webp b/src/Resources/Profiles/Generals/Icons/USA/USAMOAB.webp similarity index 100% rename from src/Resources/Icons/USA/USAMOAB.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAMOAB.webp diff --git a/src/Resources/Icons/USA/USAMicrowave.webp b/src/Resources/Profiles/Generals/Icons/USA/USAMicrowave.webp similarity index 100% rename from src/Resources/Icons/USA/USAMicrowave.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAMicrowave.webp diff --git a/src/Resources/Icons/USA/USAMissileDefender.webp b/src/Resources/Profiles/Generals/Icons/USA/USAMissileDefender.webp similarity index 100% rename from src/Resources/Icons/USA/USAMissileDefender.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAMissileDefender.webp diff --git a/src/Resources/Icons/USA/USAPaladinTank.webp b/src/Resources/Profiles/Generals/Icons/USA/USAPaladinTank.webp similarity index 100% rename from src/Resources/Icons/USA/USAPaladinTank.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAPaladinTank.webp diff --git a/src/Resources/Icons/USA/USAParticleCannon.webp b/src/Resources/Profiles/Generals/Icons/USA/USAParticleCannon.webp similarity index 100% rename from src/Resources/Icons/USA/USAParticleCannon.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAParticleCannon.webp diff --git a/src/Resources/Icons/USA/USAParticleCannonFire.webp b/src/Resources/Profiles/Generals/Icons/USA/USAParticleCannonFire.webp similarity index 100% rename from src/Resources/Icons/USA/USAParticleCannonFire.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAParticleCannonFire.webp diff --git a/src/Resources/Icons/USA/USAPathfinder.webp b/src/Resources/Profiles/Generals/Icons/USA/USAPathfinder.webp similarity index 100% rename from src/Resources/Icons/USA/USAPathfinder.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAPathfinder.webp diff --git a/src/Resources/Icons/USA/USAPatriot.webp b/src/Resources/Profiles/Generals/Icons/USA/USAPatriot.webp similarity index 100% rename from src/Resources/Icons/USA/USAPatriot.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAPatriot.webp diff --git a/src/Resources/Icons/USA/USAPilot.webp b/src/Resources/Profiles/Generals/Icons/USA/USAPilot.webp similarity index 100% rename from src/Resources/Icons/USA/USAPilot.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAPilot.webp diff --git a/src/Resources/Icons/USA/USARanger.webp b/src/Resources/Profiles/Generals/Icons/USA/USARanger.webp similarity index 100% rename from src/Resources/Icons/USA/USARanger.webp rename to src/Resources/Profiles/Generals/Icons/USA/USARanger.webp diff --git a/src/Resources/Icons/USA/USARangerMachineGun.webp b/src/Resources/Profiles/Generals/Icons/USA/USARangerMachineGun.webp similarity index 100% rename from src/Resources/Icons/USA/USARangerMachineGun.webp rename to src/Resources/Profiles/Generals/Icons/USA/USARangerMachineGun.webp diff --git a/src/Resources/Icons/USA/USARaptor.webp b/src/Resources/Profiles/Generals/Icons/USA/USARaptor.webp similarity index 100% rename from src/Resources/Icons/USA/USARaptor.webp rename to src/Resources/Profiles/Generals/Icons/USA/USARaptor.webp diff --git a/src/Resources/Icons/USA/USARemoteDemoCharge.webp b/src/Resources/Profiles/Generals/Icons/USA/USARemoteDemoCharge.webp similarity index 100% rename from src/Resources/Icons/USA/USARemoteDemoCharge.webp rename to src/Resources/Profiles/Generals/Icons/USA/USARemoteDemoCharge.webp diff --git a/src/Resources/Icons/USA/USARocketPods.webp b/src/Resources/Profiles/Generals/Icons/USA/USARocketPods.webp similarity index 100% rename from src/Resources/Icons/USA/USARocketPods.webp rename to src/Resources/Profiles/Generals/Icons/USA/USARocketPods.webp diff --git a/src/Resources/Icons/USA/USASearchAndDestroy.webp b/src/Resources/Profiles/Generals/Icons/USA/USASearchAndDestroy.webp similarity index 100% rename from src/Resources/Icons/USA/USASearchAndDestroy.webp rename to src/Resources/Profiles/Generals/Icons/USA/USASearchAndDestroy.webp diff --git a/src/Resources/Icons/USA/USASentryDrone.webp b/src/Resources/Profiles/Generals/Icons/USA/USASentryDrone.webp similarity index 100% rename from src/Resources/Icons/USA/USASentryDrone.webp rename to src/Resources/Profiles/Generals/Icons/USA/USASentryDrone.webp diff --git a/src/Resources/Icons/USA/USASentryDroneGun.webp b/src/Resources/Profiles/Generals/Icons/USA/USASentryDroneGun.webp similarity index 100% rename from src/Resources/Icons/USA/USASentryDroneGun.webp rename to src/Resources/Profiles/Generals/Icons/USA/USASentryDroneGun.webp diff --git a/src/Resources/Icons/USA/USASpectreGunship.webp b/src/Resources/Profiles/Generals/Icons/USA/USASpectreGunship.webp similarity index 100% rename from src/Resources/Icons/USA/USASpectreGunship.webp rename to src/Resources/Profiles/Generals/Icons/USA/USASpectreGunship.webp diff --git a/src/Resources/Icons/USA/USASpySattelite.webp b/src/Resources/Profiles/Generals/Icons/USA/USASpySattelite.webp similarity index 100% rename from src/Resources/Icons/USA/USASpySattelite.webp rename to src/Resources/Profiles/Generals/Icons/USA/USASpySattelite.webp diff --git a/src/Resources/Icons/USA/USAStealthFighter.webp b/src/Resources/Profiles/Generals/Icons/USA/USAStealthFighter.webp similarity index 100% rename from src/Resources/Icons/USA/USAStealthFighter.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAStealthFighter.webp diff --git a/src/Resources/Icons/USA/USAStrategyCenter.webp b/src/Resources/Profiles/Generals/Icons/USA/USAStrategyCenter.webp similarity index 100% rename from src/Resources/Icons/USA/USAStrategyCenter.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAStrategyCenter.webp diff --git a/src/Resources/Icons/USA/USASupplyCenter.webp b/src/Resources/Profiles/Generals/Icons/USA/USASupplyCenter.webp similarity index 100% rename from src/Resources/Icons/USA/USASupplyCenter.webp rename to src/Resources/Profiles/Generals/Icons/USA/USASupplyCenter.webp diff --git a/src/Resources/Icons/USA/USASupplyDropZone.webp b/src/Resources/Profiles/Generals/Icons/USA/USASupplyDropZone.webp similarity index 100% rename from src/Resources/Icons/USA/USASupplyDropZone.webp rename to src/Resources/Profiles/Generals/Icons/USA/USASupplyDropZone.webp diff --git a/src/Resources/Icons/USA/USASupplyLines.webp b/src/Resources/Profiles/Generals/Icons/USA/USASupplyLines.webp similarity index 100% rename from src/Resources/Icons/USA/USASupplyLines.webp rename to src/Resources/Profiles/Generals/Icons/USA/USASupplyLines.webp diff --git a/src/Resources/Icons/USA/USATOWMissile.webp b/src/Resources/Profiles/Generals/Icons/USA/USATOWMissile.webp similarity index 100% rename from src/Resources/Icons/USA/USATOWMissile.webp rename to src/Resources/Profiles/Generals/Icons/USA/USATOWMissile.webp diff --git a/src/Resources/Icons/USA/USATimedDemoCharge.webp b/src/Resources/Profiles/Generals/Icons/USA/USATimedDemoCharge.webp similarity index 100% rename from src/Resources/Icons/USA/USATimedDemoCharge.webp rename to src/Resources/Profiles/Generals/Icons/USA/USATimedDemoCharge.webp diff --git a/src/Resources/Icons/USA/USATomahawkLauncher.webp b/src/Resources/Profiles/Generals/Icons/USA/USATomahawkLauncher.webp similarity index 100% rename from src/Resources/Icons/USA/USATomahawkLauncher.webp rename to src/Resources/Profiles/Generals/Icons/USA/USATomahawkLauncher.webp diff --git a/src/Resources/Icons/USA/USAWarFactory.webp b/src/Resources/Profiles/Generals/Icons/USA/USAWarFactory.webp similarity index 100% rename from src/Resources/Icons/USA/USAWarFactory.webp rename to src/Resources/Profiles/Generals/Icons/USA/USAWarFactory.webp diff --git a/src/Resources/TechTree.json b/src/Resources/Profiles/Generals/TechTree.json similarity index 100% rename from src/Resources/TechTree.json rename to src/Resources/Profiles/Generals/TechTree.json diff --git a/src/Resources/Theme/EditorBackground.webp b/src/Resources/Profiles/Generals/Theme/EditorBackground.webp similarity index 100% rename from src/Resources/Theme/EditorBackground.webp rename to src/Resources/Profiles/Generals/Theme/EditorBackground.webp diff --git a/src/Resources/Theme/EditorBackgroundWithPicture.webp b/src/Resources/Profiles/Generals/Theme/EditorBackgroundWithPicture.webp similarity index 100% rename from src/Resources/Theme/EditorBackgroundWithPicture.webp rename to src/Resources/Profiles/Generals/Theme/EditorBackgroundWithPicture.webp diff --git a/src/Resources/Theme/StartMenuBackground.webp b/src/Resources/Profiles/Generals/Theme/StartMenuBackground.webp similarity index 100% rename from src/Resources/Theme/StartMenuBackground.webp rename to src/Resources/Profiles/Generals/Theme/StartMenuBackground.webp diff --git a/src/Resources/Profiles/Generals/Theme/Styles.css b/src/Resources/Profiles/Generals/Theme/Styles.css new file mode 100644 index 0000000..6e740c5 --- /dev/null +++ b/src/Resources/Profiles/Generals/Theme/Styles.css @@ -0,0 +1,335 @@ +/* See more about Qt .css support in documentation and questions: */ +/* 1. https://doc.qt.io/qt-5/stylesheet-syntax.html */ +/* 2. https://doc.qt.io/qt-5/stylesheet-reference.html */ +/* 3. https://doc.qt.io/qt-5/stylesheet-examples.html */ +/* 4. https://forum.qt.io/topic/40151/solved-scaled-background-image-using-stylesheet/3 */ +/* 5. https://www.qtcentre.org/threads/55152-Is-it-possible-to-logically-combine-dynamic-properties-in-a-Qt-Stylesheet */ +/* 6. https://stackoverflow.com/questions/9536725/css-multiple-attribute-selectors/9536746#9536746 */ + +/* Global style setting */ +* +{ + font-family: Calibri; + font-size: 10pt; + color: black; +} + +QComboBox +{ + width: 70px; + color: white; + background-color: #b36e2e; + + border-style: outset; + border-width: 2px; + border-color: #d8b36a; + border-radius: 3px; +} + +QComboBox:checked +{ + background-color: #b36e2e; + color: #baff0c; +} + +QComboBox QAbstractItemView +{ + border-width: 2px; + border-radius: 3px; + border-style: outset; + border-color: #d8b36a; + color: white; + background-color: #3a2414; + selection-background-color: #b36e2e; +} + +QComboBox::drop-down +{ + width: 15px; + color: white; + border-color: #d8b36a; + border-radius: 3px; + padding-left: 10px; +} + +QComboBox::down-arrow { image: url(Resources/QtSources/ScrollArrowDown.webp); } +QComboBox::up-arrow { image: url(Resources/QtSources/ScrollArrowUp.webp); } + +/* ↓ Doesn't work */ +QComboBox#cmbLanguage { height: 25px; } + +QCheckBox::indicator +{ + width: 14px; + height: 14px; + background-color: rgba(216, 179, 106, 0.18); + border: 2px solid #d8b36a; +} + +QCheckBox::indicator:hover +{ + background-color: rgba(216, 179, 106, 0.28); + border-color: #f2d187; +} + +QCheckBox::indicator:checked +{ + background-color: #f2d187; + border-color: white; +} + +QPushButton +{ + font-family: Calibri; + font-weight: bold; + padding: 10px; + + color: white; + background-color: #4a3217; + + border-style: outset; + border-width: 2px; + border-color: #d8b36a; + border-radius: 3px; +} + +QPushButton:hover +{ + background-color: #b36e2e; + color: #baff0c; +} + +GreetingWindow QPushButton#btnSettings +{ + border-color: transparent; + background-color: transparent; +} + +GreetingWindow QPushButton { font-size: 18pt; } + +QLabel, QRadioButton, QCheckBox { color: white; } + +QLineEdit#txtActionName { font-style: italic; } + +QPushButton#btnReview +{ + padding-top: 2px; + padding-bottom: 2px; +} + +QPushButton#btnCancel +{ + margin-bottom: 40px; + padding-right: 10px; +} + +QPushButton#btnOk +{ + margin-bottom: 40px; + padding-left: 10px; +} + +/* Start widgets and SettingsWindow style settings */ +LoadFromTheFileWindow, SetUpWindowsWrapper, LoadFromTheGameWindow, SettingsWindow, QWidget#pSettingsWindow +{ + border-image: url(Resources/Profiles/Generals/Theme/StartMenuBackground.webp) 0 0 0 0 stretch stretch; + background-color: black; +} + +/* Editor window style settings */ +EditorWindow +{ + border-image: url(Resources/Profiles/Generals/Theme/EditorBackground.webp) 0 0 0 0 stretch stretch; + background-color: black; +} + +EditorWindow QPushButton +{ + font-family: Calibri; + font-weight: bold; + padding: 10px; + + background-color: #4a3217; + color: white; + + border-style: outset; + border-width: 2px; + border-color: #d8b36a; + border-radius: 3px; +} + +EditorWindow QPushButton:hover { background-color: #b36e2e; color: #baff0c; } +EditorWindow QPushButton:pressed { background-color: #b36e2e; color: white; } +EditorWindow QPushButton:pressed:hover { background-color: #b36e2e; color: #baff0c; } + +QPushButton[faction="GLA"] { background-color: #185a22; border-color: #b1ffbf; } +QPushButton[faction="GLA"]:pressed { background-color: #427b32; /*color: black;*/ } +QPushButton[faction="GLA"]:hover { background-color: #427b32; color: #c9c9c9; } +QPushButton[faction="GLA"]:pressed:hover { background-color: #427b32; color: #c9c9c9; } + +QPushButton[faction="PRC"] { background-color: #5a1f18; border-color: #ffbbb1; } +QPushButton[faction="PRC"]:hover { background-color: #e74135; color: #baff0c; } +QPushButton[faction="PRC"]:pressed { background-color: #e74135; color: white; } +QPushButton[faction="PRC"]:pressed:hover { background-color: #e74135; color: #baff0c; } + +/* QPushButton[faction="USA"] already defined as basic non-property */ +/* If you want to change -- copy and edit styles down below */ + +EditorWindow QTreeWidget, EditorWindow QTabWidget, EditorWindow QScrollArea, EditorWindow QStatusBar +{ + background: rgba(0, 0, 0, 0.7); + border-radius: 3px; + border-width: 1px; + border-style: outset; + border-color: white; + + color: white; +} + +QTreeWidget::item +{ + min-height: 40px; + font-family: "Collibri"; + font-size: 9pt; +} + +QTreeWidget::item:selected, QTreeWidget::item:selected:!active { background-color: #b36e2e; color: white; } + +QTreeWidget::branch:open:has-children { background-image: url(Resources/QtSources/DropArrowDown.webp); } +QTreeWidget::branch:closed:has-children { background-image: url(Resources/QtSources/DropArrowRight.webp); } + +QTabWidget QWidget +{ + background: rgba(0, 0, 0, 0); + color: white; + border: none; +} + +QTabWidget::pane +{ + background: rgba(0, 0, 0, 0); + color: white; + border: none; +} + +QTabBar::tab +{ + background: rgba(0, 0, 0, 0); + height: 30px; + width: 120px; + color: white; + + border-bottom-width: 1px; + border-bottom-style: outset; + border-bottom-color: white; +} + +QTabBar::tab:first +{ + border-right-width: 1px; + border-right-style: outset; + border-right-color: white; +} + +QTabBar::tab:selected +{ + border-right-width: 1px; + border-right-style: outset; + border-right-color: white; + + background: #b36e2e; +} + +QTabBar::tab:selected:hover, QTabBar::tab:hover +{ + color: #baff0c; +} + +QTabBar::tab:last +{ + border-bottom-right-radius: 3px; + border-right-width: 1px; + border-right-style: outset; + border-right-color: white; +} + +QScrollBar +{ + background: rgba(0, 0, 0, 0); +} + +QScrollBar::handle +{ + background: white; + border-radius: 1px; +} + +QScrollBar::add-line, QScrollBar::sub-line, +QScrollBar::up-arrow, QScrollBar::down-arrow, +QScrollBar::add-page, QScrollBar::sub-page +{ + background: none; +} + +QDialog +{ + border-image: url(Resources/Profiles/Generals/Theme/StartMenuBackground.webp) 0 0 0 0 stretch stretch; + background-color: black; +} + +QDialog QLabel { color: white; } +QDialog QLabel#left { margin: 0px 0px 0px 60px; } +QDialog QLabel#right { margin: 30px 40px 30px 0px; } + +/* Maybe will be useful in future */ +/* EditorWindow QMenu +{ + background: rgba(0, 0, 0, 0); + color: white; + border: none; +} */ + +QPushButton[unique="true"]#btnHotkey +{ + font-weight: bold; + padding-left: 30px; + padding-right: 30px; + background-color: #128d2d; +} + +QPushButton[unique="false"]#btnHotkey +{ + font-weight: bold; + padding-left: 30px; + padding-right: 30px; + background-color: #cb0d27; +} + +QScrollArea#Keyboard QPushButton +{ + background: rgba(0, 0, 0, 0); + color: white; + font-size: 9pt; + + border-width: 1px; + border-style: outset; + border-color: white; +} + +QScrollArea#Keyboard QPushButton:hover { color: #baff0c; } +QScrollArea#Keyboard QPushButton[status="good"] { background-color: #128d2d; } +QScrollArea#Keyboard QPushButton[status="bad"] { background-color: #cb0d27; } +QScrollArea#Keyboard QPushButton[status="null"] { background: rgba(0, 0, 0, 0); } + +QScrollArea#Keyboard QPushButton[key="null"] +{ + background: rgba(0, 0, 0, 0); + border-color: rgba(0, 0, 0, 0); +} + +QStatusBar +{ + font-family: Calibri; + font-weight: bold; + padding: 10px; +} diff --git a/src/Resources/Profiles/GeneralsZH/Icons/AirGuard.webp b/src/Resources/Profiles/GeneralsZH/Icons/AirGuard.webp new file mode 100644 index 0000000..c3c7dc4 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/AirGuard.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/AttackMove.webp b/src/Resources/Profiles/GeneralsZH/Icons/AttackMove.webp new file mode 100644 index 0000000..f6d2431 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/AttackMove.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/CaptureBuilding.webp b/src/Resources/Profiles/GeneralsZH/Icons/CaptureBuilding.webp new file mode 100644 index 0000000..4ca1a70 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/CaptureBuilding.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/DisarmMinesAtPosition.webp b/src/Resources/Profiles/GeneralsZH/Icons/DisarmMinesAtPosition.webp new file mode 100644 index 0000000..815736e Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/DisarmMinesAtPosition.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/EmergencyRepair.webp b/src/Resources/Profiles/GeneralsZH/Icons/EmergencyRepair.webp new file mode 100644 index 0000000..0ddb721 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/EmergencyRepair.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/Evacuate.webp b/src/Resources/Profiles/GeneralsZH/Icons/Evacuate.webp new file mode 100644 index 0000000..dc4130b Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/Evacuate.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/DMLAdvancedDemoTrap.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/DMLAdvancedDemoTrap.webp new file mode 100644 index 0000000..5b89c10 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/DMLAdvancedDemoTrap.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/DMLDetonateCharges.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/DMLDetonateCharges.webp new file mode 100644 index 0000000..157ae9a Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/DMLDetonateCharges.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/DMLRemoteDemoCharge.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/DMLRemoteDemoCharge.webp new file mode 100644 index 0000000..672aea8 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/DMLRemoteDemoCharge.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/DMLSuicide.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/DMLSuicide.webp new file mode 100644 index 0000000..8ffe4af Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/DMLSuicide.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/DMLTimedDemoCharge.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/DMLTimedDemoCharge.webp new file mode 100644 index 0000000..d307c6d Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/DMLTimedDemoCharge.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAAPBullets.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAAPBullets.webp new file mode 100644 index 0000000..b5c2edc Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAAPBullets.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAAPRockets.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAAPRockets.webp new file mode 100644 index 0000000..eec2cbc Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAAPRockets.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAAngryMob.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAAngryMob.webp new file mode 100644 index 0000000..a2fb50d Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAAngryMob.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAAnthraxBeta.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAAnthraxBeta.webp new file mode 100644 index 0000000..44b2f6a Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAAnthraxBeta.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAAnthraxBomb.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAAnthraxBomb.webp new file mode 100644 index 0000000..3519e28 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAAnthraxBomb.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAAnthraxShells.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAAnthraxShells.webp new file mode 100644 index 0000000..40bf01b Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAAnthraxShells.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAAnthraxWarhead.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAAnthraxWarhead.webp new file mode 100644 index 0000000..3519e28 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAAnthraxWarhead.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAArmTheMob.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAArmTheMob.webp new file mode 100644 index 0000000..3923ffa Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAArmTheMob.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAArmsDealer.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAArmsDealer.webp new file mode 100644 index 0000000..39164ab Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAArmsDealer.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLABarracks.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLABarracks.webp new file mode 100644 index 0000000..0fe6baa Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLABarracks.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLABattleBus.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLABattleBus.webp new file mode 100644 index 0000000..ca26094 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLABattleBus.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLABecomeReal.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLABecomeReal.webp new file mode 100644 index 0000000..deced3f Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLABecomeReal.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLABioBomb.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLABioBomb.webp new file mode 100644 index 0000000..33fef09 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLABioBomb.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLABlackMarket.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLABlackMarket.webp new file mode 100644 index 0000000..ce0b7df Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLABlackMarket.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLABombTruck.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLABombTruck.webp new file mode 100644 index 0000000..91d76dc Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLABombTruck.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLABoobyTraps.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLABoobyTraps.webp new file mode 100644 index 0000000..280456f Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLABoobyTraps.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLACamoNetting.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLACamoNetting.webp new file mode 100644 index 0000000..343d4f8 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLACamoNetting.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLACamouflage.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLACamouflage.webp new file mode 100644 index 0000000..a814e25 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLACamouflage.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLACarBomb.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLACarBomb.webp new file mode 100644 index 0000000..54c319c Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLACarBomb.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLACombatBike.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLACombatBike.webp new file mode 100644 index 0000000..838b104 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLACombatBike.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLACommandCenter.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLACommandCenter.webp new file mode 100644 index 0000000..85585a6 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLACommandCenter.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAContaminate.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAContaminate.webp new file mode 100644 index 0000000..56c8ffc Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAContaminate.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLADemoTrap.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLADemoTrap.webp new file mode 100644 index 0000000..baebd66 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLADemoTrap.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLADetonate.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLADetonate.webp new file mode 100644 index 0000000..cb289bd Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLADetonate.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLADisguise.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLADisguise.webp new file mode 100644 index 0000000..59b87db Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLADisguise.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAExplosiveWarhead.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAExplosiveWarhead.webp new file mode 100644 index 0000000..ddd4792 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAExplosiveWarhead.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAFakeArmsDealer.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAFakeArmsDealer.webp new file mode 100644 index 0000000..783dc7f Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAFakeArmsDealer.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAFakeBarracks.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAFakeBarracks.webp new file mode 100644 index 0000000..4d2f1b8 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAFakeBarracks.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAFakeBlackMarket.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAFakeBlackMarket.webp new file mode 100644 index 0000000..2d21ff7 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAFakeBlackMarket.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAFakeCommandCenter.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAFakeCommandCenter.webp new file mode 100644 index 0000000..7bf8590 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAFakeCommandCenter.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAFakeCommandSet.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAFakeCommandSet.webp new file mode 100644 index 0000000..26f8d04 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAFakeCommandSet.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAFakeSupplyStash.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAFakeSupplyStash.webp new file mode 100644 index 0000000..4a771c7 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAFakeSupplyStash.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAFortifiedStructure.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAFortifiedStructure.webp new file mode 100644 index 0000000..0faaa88 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAFortifiedStructure.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAGPSScrambler.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAGPSScrambler.webp new file mode 100644 index 0000000..be526e5 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAGPSScrambler.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAHighExplosiveBomb.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAHighExplosiveBomb.webp new file mode 100644 index 0000000..aff438e Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAHighExplosiveBomb.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAHijack.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAHijack.webp new file mode 100644 index 0000000..60c9cb8 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAHijack.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAHijacker.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAHijacker.webp new file mode 100644 index 0000000..825439c Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAHijacker.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAHole.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAHole.webp new file mode 100644 index 0000000..3996fb0 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAHole.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAJarmenKell.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAJarmenKell.webp new file mode 100644 index 0000000..52d60f0 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAJarmenKell.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAJunkRepair.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAJunkRepair.webp new file mode 100644 index 0000000..10c284b Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAJunkRepair.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAManualControl.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAManualControl.webp new file mode 100644 index 0000000..15b508d Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAManualControl.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAMarauderTank.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAMarauderTank.webp new file mode 100644 index 0000000..96f231b Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAMarauderTank.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAPalace.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAPalace.webp new file mode 100644 index 0000000..c97cf9c Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAPalace.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAPilotKill.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAPilotKill.webp new file mode 100644 index 0000000..32d1f69 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAPilotKill.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAProximityFuse.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAProximityFuse.webp new file mode 100644 index 0000000..982b9a4 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAProximityFuse.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAQuadCannon.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAQuadCannon.webp new file mode 100644 index 0000000..2e9b7c0 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAQuadCannon.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLARPGTrooper.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLARPGTrooper.webp new file mode 100644 index 0000000..fd91918 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLARPGTrooper.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLARadarVan.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLARadarVan.webp new file mode 100644 index 0000000..69bb4fa Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLARadarVan.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLARadarVanScan.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLARadarVanScan.webp new file mode 100644 index 0000000..d00bf4f Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLARadarVanScan.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLARebel.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLARebel.webp new file mode 100644 index 0000000..18db8ef Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLARebel.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLARebelAmbush.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLARebelAmbush.webp new file mode 100644 index 0000000..fd697dd Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLARebelAmbush.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLARocketBuggy.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLARocketBuggy.webp new file mode 100644 index 0000000..d4306e5 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLARocketBuggy.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLARocketBuggyAmmo.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLARocketBuggyAmmo.webp new file mode 100644 index 0000000..882b0d4 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLARocketBuggyAmmo.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLASaboteur.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLASaboteur.webp new file mode 100644 index 0000000..6a408c2 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLASaboteur.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAScorpionRocket.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAScorpionRocket.webp new file mode 100644 index 0000000..1d3280c Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAScorpionRocket.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAScorpionTank.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAScorpionTank.webp new file mode 100644 index 0000000..f614450 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAScorpionTank.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAScudLauncher.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAScudLauncher.webp new file mode 100644 index 0000000..f07a2cd Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAScudLauncher.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAScudStorm.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAScudStorm.webp new file mode 100644 index 0000000..55044a9 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAScudStorm.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAScudStormLaunch.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAScudStormLaunch.webp new file mode 100644 index 0000000..1be0687 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAScudStormLaunch.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLASneakAttack.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLASneakAttack.webp new file mode 100644 index 0000000..aade9c1 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLASneakAttack.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAStingerSite.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAStingerSite.webp new file mode 100644 index 0000000..74bc5a7 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAStingerSite.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLASupplyStash.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLASupplyStash.webp new file mode 100644 index 0000000..075f5c7 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLASupplyStash.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLATechnical.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLATechnical.webp new file mode 100644 index 0000000..e744df0 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLATechnical.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLATerrorist.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLATerrorist.webp new file mode 100644 index 0000000..372024c Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLATerrorist.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAToxinTractor.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAToxinTractor.webp new file mode 100644 index 0000000..1c78a93 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAToxinTractor.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLATunnelNetwork.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLATunnelNetwork.webp new file mode 100644 index 0000000..8667a6c Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLATunnelNetwork.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAWorker.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAWorker.webp new file mode 100644 index 0000000..61e56cf Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAWorker.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAWorkerShoes.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAWorkerShoes.webp new file mode 100644 index 0000000..c145b1e Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/GLAWorkerShoes.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/TOXAnthraxGamma.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/TOXAnthraxGamma.webp new file mode 100644 index 0000000..683c4b3 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/TOXAnthraxGamma.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/TOXRebel.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/TOXRebel.webp new file mode 100644 index 0000000..3169a13 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/TOXRebel.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/GLA/TOXTunnelNetwork.webp b/src/Resources/Profiles/GeneralsZH/Icons/GLA/TOXTunnelNetwork.webp new file mode 100644 index 0000000..8e78388 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/GLA/TOXTunnelNetwork.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/Guard.webp b/src/Resources/Profiles/GeneralsZH/Icons/Guard.webp new file mode 100644 index 0000000..d618a54 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/Guard.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/INFAssaultTroopTransport.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/INFAssaultTroopTransport.webp new file mode 100644 index 0000000..ce97c46 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/INFAssaultTroopTransport.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/INFFortifiedBunker.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/INFFortifiedBunker.webp new file mode 100644 index 0000000..edcec3d Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/INFFortifiedBunker.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/INFMiniGunner.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/INFMiniGunner.webp new file mode 100644 index 0000000..605c338 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/INFMiniGunner.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/INFSuperLotus.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/INFSuperLotus.webp new file mode 100644 index 0000000..92cb341 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/INFSuperLotus.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/NUKCarpetBomb.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/NUKCarpetBomb.webp new file mode 100644 index 0000000..39563eb Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/NUKCarpetBomb.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/NUKIsotopeStability.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/NUKIsotopeStability.webp new file mode 100644 index 0000000..80b439c Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/NUKIsotopeStability.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/NUKTacticalNukeMig.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/NUKTacticalNukeMig.webp new file mode 100644 index 0000000..a6d206b Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/NUKTacticalNukeMig.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCAdvancedNuclearReactor.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCAdvancedNuclearReactor.webp new file mode 100644 index 0000000..d64f9a4 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCAdvancedNuclearReactor.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCAirfield.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCAirfield.webp new file mode 100644 index 0000000..6baac7a Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCAirfield.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCArtilleryBarrage.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCArtilleryBarrage.webp new file mode 100644 index 0000000..d051adf Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCArtilleryBarrage.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBarracks.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBarracks.webp new file mode 100644 index 0000000..d65739e Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBarracks.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBattlemaster.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBattlemaster.webp new file mode 100644 index 0000000..cd340bf Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBattlemaster.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBlackLotus.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBlackLotus.webp new file mode 100644 index 0000000..026dc84 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBlackLotus.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBlackLotusCaptureBuilding.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBlackLotusCaptureBuilding.webp new file mode 100644 index 0000000..cb83333 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBlackLotusCaptureBuilding.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBlackLotusCashHack.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBlackLotusCashHack.webp new file mode 100644 index 0000000..959779a Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBlackLotusCashHack.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBlackLotusDisableVehicle.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBlackLotusDisableVehicle.webp new file mode 100644 index 0000000..c47ce86 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBlackLotusDisableVehicle.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBlackNapalm.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBlackNapalm.webp new file mode 100644 index 0000000..4f9b895 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBlackNapalm.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBunker.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBunker.webp new file mode 100644 index 0000000..2c6d403 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCBunker.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCCarpetBomb.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCCarpetBomb.webp new file mode 100644 index 0000000..19b6b58 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCCarpetBomb.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCChainguns.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCChainguns.webp new file mode 100644 index 0000000..48ce7f9 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCChainguns.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCClusterMine.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCClusterMine.webp new file mode 100644 index 0000000..e031cdf Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCClusterMine.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCCommandCenter.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCCommandCenter.webp new file mode 100644 index 0000000..69367f4 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCCommandCenter.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCDisableBuilding.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCDisableBuilding.webp new file mode 100644 index 0000000..3a8f01c Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCDisableBuilding.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCDisableVehicle.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCDisableVehicle.webp new file mode 100644 index 0000000..74e3243 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCDisableVehicle.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCDozer.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCDozer.webp new file mode 100644 index 0000000..b5d6467 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCDozer.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCDragonTank.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCDragonTank.webp new file mode 100644 index 0000000..0e6651f Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCDragonTank.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCDropNapalmBomb.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCDropNapalmBomb.webp new file mode 100644 index 0000000..83fe7e7 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCDropNapalmBomb.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCDropNukeBomb.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCDropNukeBomb.webp new file mode 100644 index 0000000..955689d Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCDropNukeBomb.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCECMTank.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCECMTank.webp new file mode 100644 index 0000000..4613edc Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCECMTank.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCEMPPulse.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCEMPPulse.webp new file mode 100644 index 0000000..6dffb19 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCEMPPulse.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCFireWall.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCFireWall.webp new file mode 100644 index 0000000..4f02841 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCFireWall.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCFrenzy.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCFrenzy.webp new file mode 100644 index 0000000..caf6813 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCFrenzy.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCGattlingCannon.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCGattlingCannon.webp new file mode 100644 index 0000000..3c6ef6b Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCGattlingCannon.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCGattlingTank.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCGattlingTank.webp new file mode 100644 index 0000000..fd2ab95 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCGattlingTank.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCHackInternet.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCHackInternet.webp new file mode 100644 index 0000000..34cb938 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCHackInternet.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCHacker.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCHacker.webp new file mode 100644 index 0000000..b73e23e Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCHacker.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCHelix.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCHelix.webp new file mode 100644 index 0000000..70c8caf Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCHelix.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCHelixBattleBunker.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCHelixBattleBunker.webp new file mode 100644 index 0000000..d7d214a Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCHelixBattleBunker.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCHelixGattlingCannon.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCHelixGattlingCannon.webp new file mode 100644 index 0000000..9481059 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCHelixGattlingCannon.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCHelixSpeakerTower.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCHelixSpeakerTower.webp new file mode 100644 index 0000000..5640478 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCHelixSpeakerTower.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCInfernoCannon.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCInfernoCannon.webp new file mode 100644 index 0000000..75238ea Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCInfernoCannon.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCInternetCenter.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCInternetCenter.webp new file mode 100644 index 0000000..eb98b4d Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCInternetCenter.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCLandMine.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCLandMine.webp new file mode 100644 index 0000000..c90b764 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCLandMine.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCListeningOutpost.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCListeningOutpost.webp new file mode 100644 index 0000000..db75eb2 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCListeningOutpost.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCMIG.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCMIG.webp new file mode 100644 index 0000000..7741e85 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCMIG.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCMiGArmour.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCMiGArmour.webp new file mode 100644 index 0000000..700eaac Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCMiGArmour.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNapalmBomb.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNapalmBomb.webp new file mode 100644 index 0000000..7851ba3 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNapalmBomb.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNationalismIcon.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNationalismIcon.webp new file mode 100644 index 0000000..fb7d40d Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNationalismIcon.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNeutronMines.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNeutronMines.webp new file mode 100644 index 0000000..1af36b3 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNeutronMines.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNeutronShells.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNeutronShells.webp new file mode 100644 index 0000000..1ed744d Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNeutronShells.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNuclearMissile.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNuclearMissile.webp new file mode 100644 index 0000000..44c0436 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNuclearMissile.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNuclearMissileSilo.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNuclearMissileSilo.webp new file mode 100644 index 0000000..b0bbef0 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNuclearMissileSilo.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNuclearReactor.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNuclearReactor.webp new file mode 100644 index 0000000..ba8c768 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNuclearReactor.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNuclearShells.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNuclearShells.webp new file mode 100644 index 0000000..3b925e9 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNuclearShells.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNuclearTanks.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNuclearTanks.webp new file mode 100644 index 0000000..1273053 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNuclearTanks.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNukeBomb.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNukeBomb.webp new file mode 100644 index 0000000..955689d Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNukeBomb.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNukeCannon.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNukeCannon.webp new file mode 100644 index 0000000..e90d517 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCNukeCannon.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCOvercharge.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCOvercharge.webp new file mode 100644 index 0000000..5145f64 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCOvercharge.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCOverlordBattleBunker.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCOverlordBattleBunker.webp new file mode 100644 index 0000000..97a8aad Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCOverlordBattleBunker.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCOverlordGatlingCannon.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCOverlordGatlingCannon.webp new file mode 100644 index 0000000..dfd8e92 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCOverlordGatlingCannon.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCOverlordPropagandaTower.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCOverlordPropagandaTower.webp new file mode 100644 index 0000000..382dd51 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCOverlordPropagandaTower.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCOverlordTank.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCOverlordTank.webp new file mode 100644 index 0000000..3dd20a1 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCOverlordTank.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCPropagandaCenter.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCPropagandaCenter.webp new file mode 100644 index 0000000..4d0b6a5 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCPropagandaCenter.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCRadarUpgrade.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCRadarUpgrade.webp new file mode 100644 index 0000000..29086c9 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCRadarUpgrade.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCRedGuard.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCRedGuard.webp new file mode 100644 index 0000000..b81e50c Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCRedGuard.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCSatelliteHack1.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCSatelliteHack1.webp new file mode 100644 index 0000000..9c889fc Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCSatelliteHack1.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCSatelliteHack2.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCSatelliteHack2.webp new file mode 100644 index 0000000..cffcf06 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCSatelliteHack2.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCSpeakerTower.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCSpeakerTower.webp new file mode 100644 index 0000000..335b761 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCSpeakerTower.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCSubliminalMessaging.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCSubliminalMessaging.webp new file mode 100644 index 0000000..ea5b1d7 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCSubliminalMessaging.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCSupplyCenter.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCSupplyCenter.webp new file mode 100644 index 0000000..697d4d7 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCSupplyCenter.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCSupplyTruck.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCSupplyTruck.webp new file mode 100644 index 0000000..a452fa5 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCSupplyTruck.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCTNTAttack.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCTNTAttack.webp new file mode 100644 index 0000000..280456f Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCTNTAttack.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCTankHunter.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCTankHunter.webp new file mode 100644 index 0000000..77a0b0e Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCTankHunter.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCTroopCrawler.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCTroopCrawler.webp new file mode 100644 index 0000000..7e1ff08 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCTroopCrawler.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCUraniumShells.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCUraniumShells.webp new file mode 100644 index 0000000..1cef23a Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCUraniumShells.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCWarFactory.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCWarFactory.webp new file mode 100644 index 0000000..c2d851e Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/PRCWarFactory.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/TNKAutoloader.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/TNKAutoloader.webp new file mode 100644 index 0000000..2f0db25 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/TNKAutoloader.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/TNKEmperorOverlordTank.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/TNKEmperorOverlordTank.webp new file mode 100644 index 0000000..579577c Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/TNKEmperorOverlordTank.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/PRC/TNKTankDrop.webp b/src/Resources/Profiles/GeneralsZH/Icons/PRC/TNKTankDrop.webp new file mode 100644 index 0000000..fd57494 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/PRC/TNKTankDrop.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/Paradrop.webp b/src/Resources/Profiles/GeneralsZH/Icons/Paradrop.webp new file mode 100644 index 0000000..21abcd1 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/Paradrop.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/Sell.webp b/src/Resources/Profiles/GeneralsZH/Icons/Sell.webp new file mode 100644 index 0000000..168ff7c Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/Sell.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/Stop.webp b/src/Resources/Profiles/GeneralsZH/Icons/Stop.webp new file mode 100644 index 0000000..a8e907e Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/Stop.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/AIRCarpetBomb.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/AIRCarpetBomb.webp new file mode 100644 index 0000000..5f400e3 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/AIRCarpetBomb.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/AIRCombatChinook.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/AIRCombatChinook.webp new file mode 100644 index 0000000..8f03266 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/AIRCombatChinook.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/AIRKingRaptor.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/AIRKingRaptor.webp new file mode 100644 index 0000000..4442313 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/AIRKingRaptor.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/AIRStealthComancheUpgrade.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/AIRStealthComancheUpgrade.webp new file mode 100644 index 0000000..939518c Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/AIRStealthComancheUpgrade.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/LSRLaserTank.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/LSRLaserTank.webp new file mode 100644 index 0000000..211ad61 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/LSRLaserTank.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/LSRPatriot.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/LSRPatriot.webp new file mode 100644 index 0000000..9d3e4f9 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/LSRPatriot.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/SWGAdvancedControlRods.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/SWGAdvancedControlRods.webp new file mode 100644 index 0000000..08a87d6 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/SWGAdvancedControlRods.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/SWGAuroraAlpha.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/SWGAuroraAlpha.webp new file mode 100644 index 0000000..71eed37 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/SWGAuroraAlpha.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/SWGColdFusionReactor.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/SWGColdFusionReactor.webp new file mode 100644 index 0000000..d571ec1 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/SWGColdFusionReactor.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/SWGPatriot.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/SWGPatriot.webp new file mode 100644 index 0000000..6b294b9 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/SWGPatriot.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAA10ThunderboltMissileStrike.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAA10ThunderboltMissileStrike.webp new file mode 100644 index 0000000..bbcd591 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAA10ThunderboltMissileStrike.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAAdvancedTraining.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAAdvancedTraining.webp new file mode 100644 index 0000000..12e88bb Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAAdvancedTraining.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAAirfield.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAAirfield.webp new file mode 100644 index 0000000..c57166b Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAAirfield.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAAmbulance.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAAmbulance.webp new file mode 100644 index 0000000..6647d57 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAAmbulance.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAAmbulanceCleanupArea.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAAmbulanceCleanupArea.webp new file mode 100644 index 0000000..8b2843a Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAAmbulanceCleanupArea.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAAurora.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAAurora.webp new file mode 100644 index 0000000..6e85d04 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAAurora.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAAvenger.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAAvenger.webp new file mode 100644 index 0000000..a604e4b Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAAvenger.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USABarracks.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USABarracks.webp new file mode 100644 index 0000000..7a349bf Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USABarracks.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USABattleDrone.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USABattleDrone.webp new file mode 100644 index 0000000..e41f68d Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USABattleDrone.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USABombardment.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USABombardment.webp new file mode 100644 index 0000000..e511068 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USABombardment.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USABunkerBusters.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USABunkerBusters.webp new file mode 100644 index 0000000..5349f31 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USABunkerBusters.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USABurton.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USABurton.webp new file mode 100644 index 0000000..11e75ab Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USABurton.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAChemicalSuits.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAChemicalSuits.webp new file mode 100644 index 0000000..d21a65b Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAChemicalSuits.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAChinook.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAChinook.webp new file mode 100644 index 0000000..f3a5f6e Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAChinook.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAColdFusionReactor.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAColdFusionReactor.webp new file mode 100644 index 0000000..bd690a5 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAColdFusionReactor.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAComanche.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAComanche.webp new file mode 100644 index 0000000..6c68da1 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAComanche.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USACombatDrop.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USACombatDrop.webp new file mode 100644 index 0000000..72f5e8e Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USACombatDrop.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USACommandCenter.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USACommandCenter.webp new file mode 100644 index 0000000..2b536a6 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USACommandCenter.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USACompositeArmour.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USACompositeArmour.webp new file mode 100644 index 0000000..97ca72b Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USACompositeArmour.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAControlRods.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAControlRods.webp new file mode 100644 index 0000000..8dbba6a Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAControlRods.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USACountermeasures.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USACountermeasures.webp new file mode 100644 index 0000000..ec19dc9 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USACountermeasures.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USACrusaderTank.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USACrusaderTank.webp new file mode 100644 index 0000000..c3b4adb Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USACrusaderTank.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USADaisyCutter.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USADaisyCutter.webp new file mode 100644 index 0000000..b9c5dbb Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USADaisyCutter.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USADetentionCamp.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USADetentionCamp.webp new file mode 100644 index 0000000..d683e2c Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USADetentionCamp.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USADetonateCharges.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USADetonateCharges.webp new file mode 100644 index 0000000..34f06a0 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USADetonateCharges.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USADozer.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USADozer.webp new file mode 100644 index 0000000..d7fb0a8 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USADozer.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USADrone.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USADrone.webp new file mode 100644 index 0000000..9dc4f63 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USADrone.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USADroneArmor.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USADroneArmor.webp new file mode 100644 index 0000000..7f95237 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USADroneArmor.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USADropZone.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USADropZone.webp new file mode 100644 index 0000000..e3f1afe Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USADropZone.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAEvacuate.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAEvacuate.webp new file mode 100644 index 0000000..9e9ac4e Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAEvacuate.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAFireBase.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAFireBase.webp new file mode 100644 index 0000000..92724f4 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAFireBase.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAFireRocketPods.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAFireRocketPods.webp new file mode 100644 index 0000000..59e3dcc Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAFireRocketPods.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAFlashbangs.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAFlashbangs.webp new file mode 100644 index 0000000..919579a Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAFlashbangs.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAHellfireDrone.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAHellfireDrone.webp new file mode 100644 index 0000000..bfeef47 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAHellfireDrone.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAHoldTheLine.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAHoldTheLine.webp new file mode 100644 index 0000000..b905d5c Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAHoldTheLine.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAHumvee.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAHumvee.webp new file mode 100644 index 0000000..46d190a Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAHumvee.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAIntelligence.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAIntelligence.webp new file mode 100644 index 0000000..0a49abb Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAIntelligence.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAKnifeAttack.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAKnifeAttack.webp new file mode 100644 index 0000000..dc65256 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAKnifeAttack.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USALaserGuidedMissiles.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USALaserGuidedMissiles.webp new file mode 100644 index 0000000..23b0e05 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USALaserGuidedMissiles.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USALaserLock.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USALaserLock.webp new file mode 100644 index 0000000..f2a1e34 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USALaserLock.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USALeafletDrop.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USALeafletDrop.webp new file mode 100644 index 0000000..0fa54f4 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USALeafletDrop.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAMOAB.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAMOAB.webp new file mode 100644 index 0000000..5500205 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAMOAB.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAMicrowave.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAMicrowave.webp new file mode 100644 index 0000000..1a04860 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAMicrowave.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAMissileDefender.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAMissileDefender.webp new file mode 100644 index 0000000..d119e6d Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAMissileDefender.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAPaladinTank.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAPaladinTank.webp new file mode 100644 index 0000000..b4b0039 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAPaladinTank.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAParticleCannon.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAParticleCannon.webp new file mode 100644 index 0000000..8a82bc1 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAParticleCannon.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAParticleCannonFire.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAParticleCannonFire.webp new file mode 100644 index 0000000..d63648f Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAParticleCannonFire.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAPathfinder.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAPathfinder.webp new file mode 100644 index 0000000..d172c03 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAPathfinder.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAPatriot.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAPatriot.webp new file mode 100644 index 0000000..91d9401 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAPatriot.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAPilot.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAPilot.webp new file mode 100644 index 0000000..41e0f5e Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAPilot.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USARanger.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USARanger.webp new file mode 100644 index 0000000..4a0400c Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USARanger.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USARangerMachineGun.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USARangerMachineGun.webp new file mode 100644 index 0000000..4364f2e Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USARangerMachineGun.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USARaptor.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USARaptor.webp new file mode 100644 index 0000000..3d78a65 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USARaptor.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USARemoteDemoCharge.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USARemoteDemoCharge.webp new file mode 100644 index 0000000..827715e Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USARemoteDemoCharge.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USARocketPods.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USARocketPods.webp new file mode 100644 index 0000000..03f22ec Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USARocketPods.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USASearchAndDestroy.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USASearchAndDestroy.webp new file mode 100644 index 0000000..69dfddf Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USASearchAndDestroy.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USASentryDrone.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USASentryDrone.webp new file mode 100644 index 0000000..fcc8946 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USASentryDrone.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USASentryDroneGun.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USASentryDroneGun.webp new file mode 100644 index 0000000..4a75e8d Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USASentryDroneGun.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USASpectreGunship.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USASpectreGunship.webp new file mode 100644 index 0000000..12ef3c3 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USASpectreGunship.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USASpySattelite.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USASpySattelite.webp new file mode 100644 index 0000000..0bae982 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USASpySattelite.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAStealthFighter.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAStealthFighter.webp new file mode 100644 index 0000000..ca04b23 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAStealthFighter.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAStrategyCenter.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAStrategyCenter.webp new file mode 100644 index 0000000..acc0b14 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAStrategyCenter.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USASupplyCenter.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USASupplyCenter.webp new file mode 100644 index 0000000..ec18282 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USASupplyCenter.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USASupplyDropZone.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USASupplyDropZone.webp new file mode 100644 index 0000000..2e76fe0 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USASupplyDropZone.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USASupplyLines.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USASupplyLines.webp new file mode 100644 index 0000000..75d8dab Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USASupplyLines.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USATOWMissile.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USATOWMissile.webp new file mode 100644 index 0000000..d95c9df Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USATOWMissile.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USATimedDemoCharge.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USATimedDemoCharge.webp new file mode 100644 index 0000000..b7236f3 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USATimedDemoCharge.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USATomahawkLauncher.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USATomahawkLauncher.webp new file mode 100644 index 0000000..32a802f Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USATomahawkLauncher.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Icons/USA/USAWarFactory.webp b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAWarFactory.webp new file mode 100644 index 0000000..26f8254 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Icons/USA/USAWarFactory.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/TechTree.json b/src/Resources/Profiles/GeneralsZH/TechTree.json new file mode 100644 index 0000000..bd751cc --- /dev/null +++ b/src/Resources/Profiles/GeneralsZH/TechTree.json @@ -0,0 +1,5730 @@ +{ + "TechTree" : + [ + { + "ShortName" : "USA", + "DisplayName" : "USA", + "DisplayNameDescription" : "United Stated Of America", + + "Buildings" : + [ + { + "Name" : "USACommandCenter", + "IngameName" : "OBJECT:CommandCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USADozer", "HotkeyString" : "CONTROLBAR:ConstructAmericaDozer"}, + {"IconName" : "USASpectreGunship", "HotkeyString" : "CONTROLBAR:SpectreGunship"}, + {"IconName" : "USALeafletDrop", "HotkeyString" : "CONTROLBAR:LeafletDrop"}, + {"IconName" : "USAA10ThunderboltMissileStrike", "HotkeyString" : "CONTROLBAR:A10ThunderboltMissileStrike"}, + {"IconName" : "Paradrop", "HotkeyString" : "CONTROLBAR:Paradrop"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:SpyDrone"}, + {"IconName" : "EmergencyRepair", "HotkeyString" : "CONTROLBAR:EmergencyRepair"}, + {"IconName" : "USADaisyCutter", "HotkeyString" : "CONTROLBAR:DaisyCutter"}, + {"IconName" : "USAMOAB", "HotkeyString" : "CONTROLBAR:MOAB"}, + {"IconName" : "USASpySattelite", "HotkeyString" : "CONTROLBAR:SpySatellite"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAColdFusionReactor", + "IngameName" : "OBJECT:ColdFusionReactor", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAControlRods", "HotkeyString" : "CONTROLBAR:UpgradeAmericaAdvancedControlRods"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USABarracks", + "IngameName" : "OBJECT:Barracks", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USARanger", "HotkeyString" : "CONTROLBAR:ConstructAmericaInfantryRanger"}, + {"IconName" : "USAMissileDefender", "HotkeyString" : "CONTROLBAR:ConstructAmericaInfantryMissileDefender"}, + {"IconName" : "USABurton", "HotkeyString" : "CONTROLBAR:ConstructAmericaInfantryColonelBurton"}, + {"IconName" : "USAPathfinder", "HotkeyString" : "CONTROLBAR:ConstructAmericaInfantryPathfinder"}, + {"IconName" : "USAFlashbangs", "HotkeyString" : "CONTROLBAR:UpgradeAmericaFlashBangGrenade"}, + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:UpgradeAmericaRangerCaptureBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USASupplyCenter", + "IngameName" : "OBJECT:SupplyCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAChinook", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleChinook"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAPatriot", + "IngameName" : "OBJECT:PatriotBattery", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAFireBase", + "IngameName" : "OBJECT:FireBase", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAWarFactory", + "IngameName" : "OBJECT:WarFactory", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USACrusaderTank", "HotkeyString" : "CONTROLBAR:ConstructAmericaTankCrusader"}, + {"IconName" : "USAHumvee", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHumvee"}, + {"IconName" : "USAPaladinTank", "HotkeyString" : "CONTROLBAR:ConstructAmericaTankPaladin"}, + {"IconName" : "USAAvenger", "HotkeyString" : "CONTROLBAR:ConstructAmericaTankAvenger"}, + {"IconName" : "USATomahawkLauncher", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleTomahawk"}, + {"IconName" : "USAAmbulance", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleMedic"}, + {"IconName" : "USASentryDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleSentryDrone"}, + {"IconName" : "USAMicrowave", "HotkeyString" : "CONTROLBAR:ConstructAmericaTankMicrowave"}, + {"IconName" : "USASentryDroneGun", "HotkeyString" : "CONTROLBAR:UpgradeAmericaSentryDroneGun"}, + {"IconName" : "USATOWMissile", "HotkeyString" : "CONTROLBAR:UpgradeAmericaTOWMissile"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAAirfield", + "IngameName" : "OBJECT:Airfield", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USARaptor", "HotkeyString" : "CONTROLBAR:ConstructAmericaJetRaptor"}, + {"IconName" : "USAAurora", "HotkeyString" : "CONTROLBAR:ConstructAmericaJetAurora"}, + {"IconName" : "USAComanche", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleComanche"}, + {"IconName" : "USAStealthFighter", "HotkeyString" : "CONTROLBAR:ConstructAmericaJetStealthFighter"}, + {"IconName" : "USARocketPods", "HotkeyString" : "CONTROLBAR:UpgradeComancheRocketPods"}, + {"IconName" : "USACountermeasures", "HotkeyString" : "CONTROLBAR:UpgradeAmericaCountermeasures"}, + {"IconName" : "USALaserGuidedMissiles", "HotkeyString" : "CONTROLBAR:UpgradeAmericaLaserMissiles"}, + {"IconName" : "USABunkerBusters", "HotkeyString" : "CONTROLBAR:UpgradeAmericaBunkerBusters"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAStrategyCenter", + "IngameName" : "OBJECT:StrategyCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USABombardment", "HotkeyString" : "CONTROLBAR:InitiateBattlePlanBombardment"}, + {"IconName" : "USAHoldTheLine", "HotkeyString" : "CONTROLBAR:InitiateBattlePlanHoldTheLine"}, + {"IconName" : "USASearchAndDestroy", "HotkeyString" : "CONTROLBAR:InitiateBattlePlanSearchAndDestroy"}, + {"IconName" : "USAMOAB", "HotkeyString" : "CONTROLBAR:UpgradeAmericaMOAB"}, + {"IconName" : "USAAdvancedTraining", "HotkeyString" : "CONTROLBAR:UpgradeAmericaAdvancedTraining"}, + {"IconName" : "USASupplyLines", "HotkeyString" : "CONTROLBAR:UpgradeAmericaSupplyLines"}, + {"IconName" : "USAIntelligence", "HotkeyString" : "CONTROLBAR:CIAIntelligence"}, + {"IconName" : "USAChemicalSuits", "HotkeyString" : "CONTROLBAR:UpgradeAmericaChemicalSuits"}, + {"IconName" : "USACompositeArmour", "HotkeyString" : "CONTROLBAR:UpgradeAmericaCompositeArmor"}, + {"IconName" : "USADroneArmor", "HotkeyString" : "CONTROLBAR:UpgradeAmericaDroneArmor"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USADropZone", + "IngameName" : "OBJECT:AmericaSupplyDropZone", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAParticleCannon", + "IngameName" : "OBJECT:ParticleCannon", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAParticleCannonFire", "HotkeyString" : "CONTROLBAR:FireParticleUplinkCannon"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + } + ], + "Infantry" : + [ + { + "Name" : "USARanger", + "IngameName" : "OBJECT:Ranger", + "KeyboardLayouts" : + [ + [ + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:CaptureBuilding"}, + {"IconName" : "USARangerMachineGun", "HotkeyString" : "CONTROLBAR:RangerMachineGun"}, + {"IconName" : "USAFlashbangs", "HotkeyString" : "CONTROLBAR:FlashBangGrenadeMode"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAMissileDefender", + "IngameName" : "OBJECT:MissileTeam", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USALaserLock", "HotkeyString" : "CONTROLBAR:LaserMissileAttack"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAPathfinder", + "IngameName" : "OBJECT:Pathfinder", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USABurton", + "IngameName" : "OBJECT:ColonelBurton", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAKnifeAttack", "HotkeyString" : "CONTROLBAR:KnifeAttack"}, + {"IconName" : "USATimedDemoCharge", "HotkeyString" : "CONTROLBAR:TimedDemoCharge"}, + {"IconName" : "USARemoteDemoCharge", "HotkeyString" : "CONTROLBAR:RemoteDemoCharge"}, + {"IconName" : "USADetonateCharges", "HotkeyString" : "CONTROLBAR:DetonateCharges"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ], + "Vehicles" : + [ + { + "Name" : "USADozer", + "IngameName" : "OBJECT:Dozer", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAColdFusionReactor", "HotkeyString" : "CONTROLBAR:ConstructAmericaPowerPlant"}, + {"IconName" : "USABarracks", "HotkeyString" : "CONTROLBAR:ConstructAmericaBarracks"}, + {"IconName" : "USASupplyCenter", "HotkeyString" : "CONTROLBAR:ConstructAmericaSupplyCenter"}, + {"IconName" : "USAPatriot", "HotkeyString" : "CONTROLBAR:ConstructAmericaPatriotBattery"}, + {"IconName" : "USAFireBase", "HotkeyString" : "CONTROLBAR:ConstructAmericaFireBase"}, + {"IconName" : "USAWarFactory", "HotkeyString" : "CONTROLBAR:ConstructAmericaWarFactory"}, + {"IconName" : "USAAirfield", "HotkeyString" : "CONTROLBAR:ConstructAmericaAirfield"}, + {"IconName" : "USAStrategyCenter", "HotkeyString" : "CONTROLBAR:ConstructAmericaStrategyCenter"}, + {"IconName" : "USASupplyDropZone", "HotkeyString" : "CONTROLBAR:ConstructAmericaSupplyDropZone"}, + {"IconName" : "USAParticleCannon", "HotkeyString" : "CONTROLBAR:ConstructAmericaParticleCannonUplink"}, + {"IconName" : "USACommandCenter", "HotkeyString" : "CONTROLBAR:ConstructAmericaCommandCenter"}, + {"IconName" : "DisarmMinesAtPosition", "HotkeyString" : "CONTROLBAR:DisarmMinesAtPosition"} + ] + ] + }, + + { + "Name" : "USACrusaderTank", + "IngameName" : "OBJECT:Crusader", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAPaladinTank", + "IngameName" : "OBJECT:Paladin", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAAvenger", + "IngameName" : "OBJECT:Avenger", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USATomahawkLauncher", + "IngameName" : "OBJECT:Tomahawk", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAMicrowave", + "IngameName" : "OBJECT:Microwave", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USASentryDrone", + "IngameName" : "OBJECT:SentryDrone", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAHumvee", + "IngameName" : "OBJECT:Humvee", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAEvacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAAmbulance", + "IngameName" : "OBJECT:Ambulance", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAEvacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "USAAmbulanceCleanupArea", "HotkeyString" : "CONTROLBAR:AmbulanceCleanupArea"}, + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ], + "Aircrafts" : + [ + { + "Name" : "USAChinook", + "IngameName" : "OBJECT:Chinook", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAEvacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "USACombatDrop", "HotkeyString" : "CONTROLBAR:CombatDrop"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAComanche", + "IngameName" : "OBJECT:Comanche", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAFireRocketPods", "HotkeyString" : "CONTROLBAR:FireRocketPods"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAStealthFighter", + "IngameName" : "OBJECT:StealthFighter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USARaptor", + "IngameName" : "OBJECT:Raptor", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AirGuard", "HotkeyString" : "CONTROLBAR:GuardFlyingUnitsOnly"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAAurora", + "IngameName" : "OBJECT:Aurora", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ] + }, + + { + "ShortName" : "SWG", + "DisplayName" : "SUPERWEAPON", + "DisplayNameDescription" : "Superweapons General", + + "Buildings" : + [ + { + "Name" : "USACommandCenter", + "IngameName" : "OBJECT:CommandCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USADozer", "HotkeyString" : "CONTROLBAR:ConstructAmericaDozer"}, + {"IconName" : "USASpectreGunship", "HotkeyString" : "CONTROLBAR:SpectreGunship"}, + {"IconName" : "USALeafletDrop", "HotkeyString" : "CONTROLBAR:LeafletDrop"}, + {"IconName" : "USAA10ThunderboltMissileStrike", "HotkeyString" : "CONTROLBAR:A10ThunderboltMissileStrike"}, + {"IconName" : "Paradrop", "HotkeyString" : "CONTROLBAR:Paradrop"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:SpyDrone"}, + {"IconName" : "EmergencyRepair", "HotkeyString" : "CONTROLBAR:EmergencyRepair"}, + {"IconName" : "USADaisyCutter", "HotkeyString" : "CONTROLBAR:DaisyCutter"}, + {"IconName" : "USAMOAB", "HotkeyString" : "CONTROLBAR:MOAB"}, + {"IconName" : "USASpySattelite", "HotkeyString" : "CONTROLBAR:SpySatellite"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "SWGColdFusionReactor", + "IngameName" : "OBJECT:ColdFusionReactor", + "KeyboardLayouts" : + [ + [ + {"IconName" : "SWGAdvancedControlRods", "HotkeyString" : "CONTROLBAR:SupW_UpgradeAmericaAdvancedControlRods"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USABarracks", + "IngameName" : "OBJECT:Barracks", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USARanger", "HotkeyString" : "CONTROLBAR:ConstructAmericaInfantryRanger"}, + {"IconName" : "USAMissileDefender", "HotkeyString" : "CONTROLBAR:ConstructAmericaInfantryMissileDefender"}, + {"IconName" : "USABurton", "HotkeyString" : "CONTROLBAR:ConstructAmericaInfantryColonelBurton"}, + {"IconName" : "USAPathfinder", "HotkeyString" : "CONTROLBAR:ConstructAmericaInfantryPathfinder"}, + {"IconName" : "USAFlashbangs", "HotkeyString" : "CONTROLBAR:UpgradeAmericaFlashBangGrenade"}, + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:UpgradeAmericaRangerCaptureBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USASupplyCenter", + "IngameName" : "OBJECT:SupplyCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAChinook", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleChinook"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "SWGPatriot", + "IngameName" : "OBJECT:PatriotBattery", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAFireBase", + "IngameName" : "OBJECT:FireBase", + "KeyboardLayouts" : + [ + [ + {"IconName": "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName": "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName": "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAWarFactory", + "IngameName" : "OBJECT:WarFactory", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAHumvee", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHumvee"}, + {"IconName" : "USAAvenger", "HotkeyString" : "CONTROLBAR:ConstructAmericaTankAvenger"}, + {"IconName" : "USATomahawkLauncher", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleTomahawk"}, + {"IconName" : "USAAmbulance", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleMedic"}, + {"IconName" : "USASentryDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleSentryDrone"}, + {"IconName" : "USAMicrowave", "HotkeyString" : "CONTROLBAR:ConstructAmericaTankMicrowave"}, + {"IconName" : "USASentryDroneGun", "HotkeyString" : "CONTROLBAR:UpgradeAmericaSentryDroneGun"}, + {"IconName" : "USATOWMissile", "HotkeyString" : "CONTROLBAR:UpgradeAmericaTOWMissile"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAAirfield", + "IngameName" : "OBJECT:Airfield", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USARaptor", "HotkeyString" : "CONTROLBAR:ConstructAmericaJetRaptor"}, + {"IconName" : "SWGAuroraAlpha", "HotkeyString" : "CONTROLBAR:ConstructAmericaJetFuelAirAurora"}, + {"IconName" : "USAComanche", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleComanche"}, + {"IconName" : "USAStealthFighter", "HotkeyString" : "CONTROLBAR:ConstructAmericaJetStealthFighter"}, + {"IconName" : "USARocketPods", "HotkeyString" : "CONTROLBAR:UpgradeComancheRocketPods"}, + {"IconName" : "USACountermeasures", "HotkeyString" : "CONTROLBAR:UpgradeAmericaCountermeasures"}, + {"IconName" : "USALaserGuidedMissiles", "HotkeyString" : "CONTROLBAR:UpgradeAmericaLaserMissiles"}, + {"IconName" : "USABunkerBusters", "HotkeyString" : "CONTROLBAR:UpgradeAmericaBunkerBusters"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAStrategyCenter", + "IngameName" : "OBJECT:StrategyCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USABombardment", "HotkeyString" : "CONTROLBAR:InitiateBattlePlanBombardment"}, + {"IconName" : "USAHoldTheLine", "HotkeyString" : "CONTROLBAR:InitiateBattlePlanHoldTheLine"}, + {"IconName" : "USASearchAndDestroy", "HotkeyString" : "CONTROLBAR:InitiateBattlePlanSearchAndDestroy"}, + {"IconName" : "USAMOAB", "HotkeyString" : "CONTROLBAR:UpgradeAmericaMOAB"}, + {"IconName" : "USAAdvancedTraining", "HotkeyString" : "CONTROLBAR:UpgradeAmericaAdvancedTraining"}, + {"IconName" : "USASupplyLines", "HotkeyString" : "CONTROLBAR:UpgradeAmericaSupplyLines"}, + {"IconName" : "USAIntelligence", "HotkeyString" : "CONTROLBAR:CIAIntelligence"}, + {"IconName" : "USAChemicalSuits", "HotkeyString" : "CONTROLBAR:UpgradeAmericaChemicalSuits"}, + {"IconName" : "USADroneArmor", "HotkeyString" : "CONTROLBAR:UpgradeAmericaDroneArmor"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USADropZone", + "IngameName" : "OBJECT:AmericaSupplyDropZone", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAParticleCannon", + "IngameName" : "OBJECT:ParticleCannon", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAParticleCannonFire", "HotkeyString" : "CONTROLBAR:FireParticleUplinkCannon"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + } + ], + "Infantry" : + [ + { + "Name" : "USARanger", + "IngameName" : "OBJECT:Ranger", + "KeyboardLayouts" : + [ + [ + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:CaptureBuilding"}, + {"IconName" : "USARangerMachineGun", "HotkeyString" : "CONTROLBAR:RangerMachineGun"}, + {"IconName" : "USAFlashbangs", "HotkeyString" : "CONTROLBAR:FlashBangGrenadeMode"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAMissileDefender", + "IngameName" : "OBJECT:MissileTeam", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USALaserLock", "HotkeyString" : "CONTROLBAR:LaserMissileAttack"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAPathfinder", + "IngameName" : "OBJECT:Pathfinder", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USABurton", + "IngameName" : "OBJECT:ColonelBurton", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAKnifeAttack", "HotkeyString" : "CONTROLBAR:KnifeAttack"}, + {"IconName" : "USATimedDemoCharge", "HotkeyString" : "CONTROLBAR:TimedDemoCharge"}, + {"IconName" : "USARemoteDemoCharge", "HotkeyString" : "CONTROLBAR:RemoteDemoCharge"}, + {"IconName" : "USADetonateCharges", "HotkeyString" : "CONTROLBAR:DetonateCharges"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ], + "Vehicles" : + [ + { + "Name" : "USADozer", + "IngameName" : "OBJECT:Dozer", + "KeyboardLayouts" : + [ + [ + {"IconName" : "SWGColdFusionReactor", "HotkeyString" : "CONTROLBAR:ConstructAmericaPowerPlant"}, + {"IconName" : "USABarracks", "HotkeyString" : "CONTROLBAR:ConstructAmericaBarracks"}, + {"IconName" : "USASupplyCenter", "HotkeyString" : "CONTROLBAR:ConstructAmericaSupplyCenter"}, + {"IconName" : "SWGPatriot", "HotkeyString" : "CONTROLBAR:SupW_ConstructAmericaPatriotBattery"}, + {"IconName" : "USAFireBase", "HotkeyString" : "CONTROLBAR:ConstructAmericaFireBase"}, + {"IconName" : "USAWarFactory", "HotkeyString" : "CONTROLBAR:ConstructAmericaWarFactory"}, + {"IconName" : "USAAirfield", "HotkeyString" : "CONTROLBAR:ConstructAmericaAirfield"}, + {"IconName" : "USAStrategyCenter", "HotkeyString" : "CONTROLBAR:ConstructAmericaStrategyCenter"}, + {"IconName" : "USASupplyDropZone", "HotkeyString" : "CONTROLBAR:ConstructAmericaSupplyDropZone"}, + {"IconName" : "USAParticleCannon", "HotkeyString" : "CONTROLBAR:ConstructAmericaParticleCannonUplink"}, + {"IconName" : "USACommandCenter", "HotkeyString" : "CONTROLBAR:ConstructAmericaCommandCenter"}, + {"IconName" : "DisarmMinesAtPosition", "HotkeyString" : "CONTROLBAR:DisarmMinesAtPosition"} + ] + ] + }, + + { + "Name" : "USAAvenger", + "IngameName" : "OBJECT:Avenger", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USATomahawkLauncher", + "IngameName" : "OBJECT:Tomahawk", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAMicrowave", + "IngameName" : "OBJECT:Microwave", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USASentryDrone", + "IngameName" : "OBJECT:SentryDrone", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAHumvee", + "IngameName" : "OBJECT:Humvee", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAEvacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAAmbulance", + "IngameName" : "OBJECT:Ambulance", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAEvacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "USAAmbulanceCleanupArea", "HotkeyString" : "CONTROLBAR:AmbulanceCleanupArea"}, + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ], + "Aircrafts" : + [ + { + "Name" : "USAChinook", + "IngameName" : "OBJECT:Chinook", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAEvacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "USACombatDrop", "HotkeyString" : "CONTROLBAR:CombatDrop"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAComanche", + "IngameName" : "OBJECT:Comanche", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAFireRocketPods", "HotkeyString" : "CONTROLBAR:FireRocketPods"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAStealthFighter", + "IngameName" : "OBJECT:StealthFighter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USARaptor", + "IngameName" : "OBJECT:Raptor", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AirGuard", "HotkeyString" : "CONTROLBAR:GuardFlyingUnitsOnly"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "SWGAuroraAlpha", + "IngameName" : "OBJECT:SupW_Aurora", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ] + }, + + { + "ShortName" : "AIR", + "DisplayName" : "AIR", + "DisplayNameDescription" : "Airforce General", + + "Buildings" : + [ + { + "Name" : "USACommandCenter", + "IngameName" : "OBJECT:CommandCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USADozer", "HotkeyString" : "CONTROLBAR:ConstructAmericaDozer"}, + {"IconName" : "USASpectreGunship", "HotkeyString" : "CONTROLBAR:SpectreGunship"}, + {"IconName" : "USALeafletDrop", "HotkeyString" : "CONTROLBAR:LeafletDrop"}, + {"IconName" : "USAA10ThunderboltMissileStrike", "HotkeyString" : "CONTROLBAR:A10ThunderboltMissileStrike"}, + {"IconName" : "Paradrop", "HotkeyString" : "CONTROLBAR:Paradrop"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:SpyDrone"}, + {"IconName" : "EmergencyRepair", "HotkeyString" : "CONTROLBAR:EmergencyRepair"}, + {"IconName" : "USADaisyCutter", "HotkeyString" : "CONTROLBAR:DaisyCutter"}, + {"IconName" : "USAMOAB", "HotkeyString" : "CONTROLBAR:MOAB"}, + {"IconName" : "USASpySattelite", "HotkeyString" : "CONTROLBAR:SpySatellite"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAColdFusionReactor", + "IngameName" : "OBJECT:ColdFusionReactor", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAControlRods", "HotkeyString" : "CONTROLBAR:UpgradeAmericaAdvancedControlRods"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USABarracks", + "IngameName" : "OBJECT:Barracks", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USARanger", "HotkeyString" : "CONTROLBAR:ConstructAmericaInfantryRanger"}, + {"IconName" : "USAMissileDefender", "HotkeyString" : "CONTROLBAR:ConstructAmericaInfantryMissileDefender"}, + {"IconName" : "USABurton", "HotkeyString" : "CONTROLBAR:ConstructAmericaInfantryColonelBurton"}, + {"IconName" : "USAPathfinder", "HotkeyString" : "CONTROLBAR:ConstructAmericaInfantryPathfinder"}, + {"IconName" : "USAFlashbangs", "HotkeyString" : "CONTROLBAR:UpgradeAmericaFlashBangGrenade"}, + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:UpgradeAmericaRangerCaptureBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USASupplyCenter", + "IngameName" : "OBJECT:SupplyCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAChinook", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleChinook"}, + {"IconName" : "AIRCombatChinook", "HotkeyString" : "CONTROLBAR:AirF_ConstructAmericaVehicleChinook"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAPatriot", + "IngameName" : "OBJECT:PatriotBattery", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAFireBase", + "IngameName" : "OBJECT:FireBase", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAWarFactory", + "IngameName" : "OBJECT:WarFactory", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAHumvee", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHumvee"}, + {"IconName" : "USAAvenger", "HotkeyString" : "CONTROLBAR:ConstructAmericaTankAvenger"}, + {"IconName" : "USATomahawkLauncher", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleTomahawk"}, + {"IconName" : "USAAmbulance", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleMedic"}, + {"IconName" : "USASentryDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleSentryDrone"}, + {"IconName" : "USAMicrowave", "HotkeyString" : "CONTROLBAR:ConstructAmericaTankMicrowave"}, + {"IconName" : "USASentryDroneGun", "HotkeyString" : "CONTROLBAR:UpgradeAmericaSentryDroneGun"}, + {"IconName" : "USATOWMissile", "HotkeyString" : "CONTROLBAR:UpgradeAmericaTOWMissile"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAAirfield", + "IngameName" : "OBJECT:Airfield", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USARaptor", "HotkeyString" : "CONTROLBAR:ConstructAmericaJetRaptor"}, + {"IconName" : "USAAurora", "HotkeyString" : "CONTROLBAR:ConstructAmericaJetAurora"}, + {"IconName" : "USAComanche", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleComanche"}, + {"IconName" : "USAStealthFighter", "HotkeyString" : "CONTROLBAR:ConstructAmericaJetStealthFighter"}, + {"IconName" : "USARocketPods", "HotkeyString" : "CONTROLBAR:UpgradeComancheRocketPods"}, + {"IconName" : "USACountermeasures", "HotkeyString" : "CONTROLBAR:UpgradeAmericaCountermeasures"}, + {"IconName" : "USALaserGuidedMissiles", "HotkeyString" : "CONTROLBAR:UpgradeAmericaLaserMissiles"}, + {"IconName" : "USABunkerBusters", "HotkeyString" : "CONTROLBAR:UpgradeAmericaBunkerBusters"}, + {"IconName" : "AIRStealthComancheUpgrade", "HotkeyString" : "CONTROLBAR:UpgradeStealthComanche"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAStrategyCenter", + "IngameName" : "OBJECT:StrategyCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USABombardment", "HotkeyString" : "CONTROLBAR:InitiateBattlePlanBombardment"}, + {"IconName" : "USAHoldTheLine", "HotkeyString" : "CONTROLBAR:InitiateBattlePlanHoldTheLine"}, + {"IconName" : "USASearchAndDestroy", "HotkeyString" : "CONTROLBAR:InitiateBattlePlanSearchAndDestroy"}, + {"IconName" : "USAMOAB", "HotkeyString" : "CONTROLBAR:UpgradeAmericaMOAB"}, + {"IconName" : "USAAdvancedTraining", "HotkeyString" : "CONTROLBAR:UpgradeAmericaAdvancedTraining"}, + {"IconName" : "USASupplyLines", "HotkeyString" : "CONTROLBAR:UpgradeAmericaSupplyLines"}, + {"IconName" : "USAIntelligence", "HotkeyString" : "CONTROLBAR:CIAIntelligence"}, + {"IconName" : "USAChemicalSuits", "HotkeyString" : "CONTROLBAR:UpgradeAmericaChemicalSuits"}, + {"IconName" : "USACompositeArmour", "HotkeyString" : "CONTROLBAR:UpgradeAmericaCompositeArmor"}, + {"IconName" : "USADroneArmor", "HotkeyString" : "CONTROLBAR:UpgradeAmericaDroneArmor"}, + {"IconName" : "AIRCarpetBomb", "HotkeyString" : "CONTROLBAR:CarpetBomb"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USADropZone", + "IngameName" : "OBJECT:AmericaSupplyDropZone", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAParticleCannon", + "IngameName" : "OBJECT:ParticleCannon", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAParticleCannonFire", "HotkeyString" : "CONTROLBAR:FireParticleUplinkCannon"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + } + ], + "Infantry" : + [ + { + "Name" : "USARanger", + "IngameName" : "OBJECT:Ranger", + "KeyboardLayouts" : + [ + [ + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:CaptureBuilding"}, + {"IconName" : "USARangerMachineGun", "HotkeyString" : "CONTROLBAR:RangerMachineGun"}, + {"IconName" : "USAFlashbangs", "HotkeyString" : "CONTROLBAR:FlashBangGrenadeMode"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAMissileDefender", + "IngameName" : "OBJECT:MissileTeam", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USALaserLock", "HotkeyString" : "CONTROLBAR:LaserMissileAttack"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAPathfinder", + "IngameName" : "OBJECT:Pathfinder", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USABurton", + "IngameName" : "OBJECT:ColonelBurton", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAKnifeAttack", "HotkeyString" : "CONTROLBAR:KnifeAttack"}, + {"IconName" : "USATimedDemoCharge", "HotkeyString" : "CONTROLBAR:TimedDemoCharge"}, + {"IconName" : "USARemoteDemoCharge", "HotkeyString" : "CONTROLBAR:RemoteDemoCharge"}, + {"IconName" : "USADetonateCharges", "HotkeyString" : "CONTROLBAR:DetonateCharges"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ], + "Vehicles" : + [ + { + "Name" : "USADozer", + "IngameName" : "OBJECT:Dozer", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAColdFusionReactor", "HotkeyString" : "CONTROLBAR:ConstructAmericaPowerPlant"}, + {"IconName" : "USABarracks", "HotkeyString" : "CONTROLBAR:ConstructAmericaBarracks"}, + {"IconName" : "USASupplyCenter", "HotkeyString" : "CONTROLBAR:ConstructAmericaSupplyCenter"}, + {"IconName" : "USAPatriot", "HotkeyString" : "CONTROLBAR:ConstructAmericaPatriotBattery"}, + {"IconName" : "USAFireBase", "HotkeyString" : "CONTROLBAR:ConstructAmericaFireBase"}, + {"IconName" : "USAWarFactory", "HotkeyString" : "CONTROLBAR:ConstructAmericaWarFactory"}, + {"IconName" : "USAAirfield", "HotkeyString" : "CONTROLBAR:ConstructAmericaAirfield"}, + {"IconName" : "USAStrategyCenter", "HotkeyString" : "CONTROLBAR:ConstructAmericaStrategyCenter"}, + {"IconName" : "USASupplyDropZone", "HotkeyString" : "CONTROLBAR:ConstructAmericaSupplyDropZone"}, + {"IconName" : "USAParticleCannon", "HotkeyString" : "CONTROLBAR:ConstructAmericaParticleCannonUplink"}, + {"IconName" : "USACommandCenter", "HotkeyString" : "CONTROLBAR:ConstructAmericaCommandCenter"}, + {"IconName" : "DisarmMinesAtPosition", "HotkeyString" : "CONTROLBAR:DisarmMinesAtPosition"} + ] + ] + }, + + { + "Name" : "USAAvenger", + "IngameName" : "OBJECT:Avenger", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USATomahawkLauncher", + "IngameName" : "OBJECT:Tomahawk", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAMicrowave", + "IngameName" : "OBJECT:Microwave", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USASentryDrone", + "IngameName" : "OBJECT:SentryDrone", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAHumvee", + "IngameName" : "OBJECT:Humvee", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAEvacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAAmbulance", + "IngameName" : "OBJECT:Ambulance", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAEvacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "USAAmbulanceCleanupArea", "HotkeyString" : "CONTROLBAR:AmbulanceCleanupArea"}, + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ], + "Aircrafts" : + [ + { + "Name" : "USAChinook", + "IngameName" : "OBJECT:Chinook", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAEvacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "USACombatDrop", "HotkeyString" : "CONTROLBAR:CombatDrop"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "AIRCombatChinook", + "IngameName" : "OBJECT:AirF_Chinook", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAEvacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "USACombatDrop", "HotkeyString" : "CONTROLBAR:CombatDrop"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAComanche", + "IngameName" : "OBJECT:Comanche", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAFireRocketPods", "HotkeyString" : "CONTROLBAR:FireRocketPods"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAStealthFighter", + "IngameName" : "OBJECT:StealthFighter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "AIRKingRaptor", + "IngameName" : "OBJECT:KingRaptor", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AirGuard", "HotkeyString" : "CONTROLBAR:GuardFlyingUnitsOnly"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAAurora", + "IngameName" : "OBJECT:Aurora", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ] + }, + + { + "ShortName" : "LSR", + "DisplayName" : "LASER", + "DisplayNameDescription" : "Laser Weapons Generals", + + "Buildings" : + [ + { + "Name" : "USACommandCenter", + "IngameName" : "OBJECT:CommandCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USADozer", "HotkeyString" : "CONTROLBAR:ConstructAmericaDozer"}, + {"IconName" : "USASpectreGunship", "HotkeyString" : "CONTROLBAR:SpectreGunship"}, + {"IconName" : "USALeafletDrop", "HotkeyString" : "CONTROLBAR:LeafletDrop"}, + {"IconName" : "USAA10ThunderboltMissileStrike", "HotkeyString" : "CONTROLBAR:A10ThunderboltMissileStrike"}, + {"IconName" : "Paradrop", "HotkeyString" : "CONTROLBAR:Paradrop"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:SpyDrone"}, + {"IconName" : "EmergencyRepair", "HotkeyString" : "CONTROLBAR:EmergencyRepair"}, + {"IconName" : "USADaisyCutter", "HotkeyString" : "CONTROLBAR:DaisyCutter"}, + {"IconName" : "USAMOAB", "HotkeyString" : "CONTROLBAR:MOAB"}, + {"IconName" : "USASpySattelite", "HotkeyString" : "CONTROLBAR:SpySatellite"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAColdFusionReactor", + "IngameName" : "OBJECT:ColdFusionReactor", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAControlRods", "HotkeyString" : "CONTROLBAR:UpgradeAmericaAdvancedControlRods"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USABarracks", + "IngameName" : "OBJECT:Barracks", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USARanger", "HotkeyString" : "CONTROLBAR:ConstructAmericaInfantryRanger"}, + {"IconName" : "USAMissileDefender", "HotkeyString" : "CONTROLBAR:ConstructAmericaInfantryMissileDefender"}, + {"IconName" : "USABurton", "HotkeyString" : "CONTROLBAR:ConstructAmericaInfantryColonelBurton"}, + {"IconName" : "USAPathfinder", "HotkeyString" : "CONTROLBAR:ConstructAmericaInfantryPathfinder"}, + {"IconName" : "USAFlashbangs", "HotkeyString" : "CONTROLBAR:UpgradeAmericaFlashBangGrenade"}, + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:UpgradeAmericaRangerCaptureBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USASupplyCenter", + "IngameName" : "OBJECT:SupplyCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAChinook", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleChinook"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "LSRPatriot", + "IngameName" : "OBJECT:LaserCannon", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAFireBase", + "IngameName" : "OBJECT:FireBase", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAWarFactory", + "IngameName" : "OBJECT:WarFactory", + "KeyboardLayouts" : + [ + [ + {"IconName" : "LSRLaserTank", "HotkeyString" : "CONTROLBAR:Lazr_ConstructAmericaTankCrusader"}, + {"IconName" : "USAHumvee", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHumvee"}, + {"IconName" : "USAAvenger", "HotkeyString" : "CONTROLBAR:ConstructAmericaTankAvenger"}, + {"IconName" : "USATomahawkLauncher", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleTomahawk"}, + {"IconName" : "USAAmbulance", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleMedic"}, + {"IconName" : "USASentryDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleSentryDrone"}, + {"IconName" : "USAMicrowave", "HotkeyString" : "CONTROLBAR:ConstructAmericaTankMicrowave"}, + {"IconName" : "USASentryDroneGun", "HotkeyString" : "CONTROLBAR:UpgradeAmericaSentryDroneGun"}, + {"IconName" : "USATOWMissile", "HotkeyString" : "CONTROLBAR:UpgradeAmericaTOWMissile"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAAirfield", + "IngameName" : "OBJECT:Airfield", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USARaptor", "HotkeyString" : "CONTROLBAR:ConstructAmericaJetRaptor"}, + {"IconName" : "USAAurora", "HotkeyString" : "CONTROLBAR:ConstructAmericaJetAurora"}, + {"IconName" : "USAComanche", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleComanche"}, + {"IconName" : "USAStealthFighter", "HotkeyString" : "CONTROLBAR:ConstructAmericaJetStealthFighter"}, + {"IconName" : "USARocketPods", "HotkeyString" : "CONTROLBAR:UpgradeComancheRocketPods"}, + {"IconName" : "USACountermeasures", "HotkeyString" : "CONTROLBAR:UpgradeAmericaCountermeasures"}, + {"IconName" : "USALaserGuidedMissiles", "HotkeyString" : "CONTROLBAR:UpgradeAmericaLaserMissiles"}, + {"IconName" : "USABunkerBusters", "HotkeyString" : "CONTROLBAR:UpgradeAmericaBunkerBusters"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAStrategyCenter", + "IngameName" : "OBJECT:StrategyCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USABombardment", "HotkeyString" : "CONTROLBAR:InitiateBattlePlanBombardment"}, + {"IconName" : "USAHoldTheLine", "HotkeyString" : "CONTROLBAR:InitiateBattlePlanHoldTheLine"}, + {"IconName" : "USASearchAndDestroy", "HotkeyString" : "CONTROLBAR:InitiateBattlePlanSearchAndDestroy"}, + {"IconName" : "USAMOAB", "HotkeyString" : "CONTROLBAR:UpgradeAmericaMOAB"}, + {"IconName" : "USAAdvancedTraining", "HotkeyString" : "CONTROLBAR:UpgradeAmericaAdvancedTraining"}, + {"IconName" : "USASupplyLines", "HotkeyString" : "CONTROLBAR:UpgradeAmericaSupplyLines"}, + {"IconName" : "USAIntelligence", "HotkeyString" : "CONTROLBAR:CIAIntelligence"}, + {"IconName" : "USAChemicalSuits", "HotkeyString" : "CONTROLBAR:UpgradeAmericaChemicalSuits"}, + {"IconName" : "USACompositeArmour", "HotkeyString" : "CONTROLBAR:UpgradeAmericaCompositeArmor"}, + {"IconName" : "USADroneArmor", "HotkeyString" : "CONTROLBAR:UpgradeAmericaDroneArmor"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USADropZone", + "IngameName" : "OBJECT:AmericaSupplyDropZone", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "USAParticleCannon", + "IngameName" : "OBJECT:ParticleCannon", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAParticleCannonFire", "HotkeyString" : "CONTROLBAR:FireParticleUplinkCannon"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + } + ], + "Infantry" : + [ + { + "Name" : "USARanger", + "IngameName" : "OBJECT:Ranger", + "KeyboardLayouts" : + [ + [ + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:CaptureBuilding"}, + {"IconName" : "USARangerMachineGun", "HotkeyString" : "CONTROLBAR:RangerMachineGun"}, + {"IconName" : "USAFlashbangs", "HotkeyString" : "CONTROLBAR:FlashBangGrenadeMode"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAMissileDefender", + "IngameName" : "OBJECT:MissileTeam", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USALaserLock", "HotkeyString" : "CONTROLBAR:LaserMissileAttack"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAPathfinder", + "IngameName" : "OBJECT:Pathfinder", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USABurton", + "IngameName" : "OBJECT:ColonelBurton", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAKnifeAttack", "HotkeyString" : "CONTROLBAR:KnifeAttack"}, + {"IconName" : "USATimedDemoCharge", "HotkeyString" : "CONTROLBAR:TimedDemoCharge"}, + {"IconName" : "USARemoteDemoCharge", "HotkeyString" : "CONTROLBAR:RemoteDemoCharge"}, + {"IconName" : "USADetonateCharges", "HotkeyString" : "CONTROLBAR:DetonateCharges"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ], + "Vehicles" : + [ + { + "Name" : "USADozer", + "IngameName" : "OBJECT:Dozer", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAColdFusionReactor", "HotkeyString" : "CONTROLBAR:ConstructAmericaPowerPlant"}, + {"IconName" : "USABarracks", "HotkeyString" : "CONTROLBAR:ConstructAmericaBarracks"}, + {"IconName" : "USASupplyCenter", "HotkeyString" : "CONTROLBAR:ConstructAmericaSupplyCenter"}, + {"IconName" : "LSRPatriot", "HotkeyString" : "CONTROLBAR:ConstructAmericaPatriotBattery"}, + {"IconName" : "USAFireBase", "HotkeyString" : "CONTROLBAR:ConstructAmericaFireBase"}, + {"IconName" : "USAWarFactory", "HotkeyString" : "CONTROLBAR:ConstructAmericaWarFactory"}, + {"IconName" : "USAAirfield", "HotkeyString" : "CONTROLBAR:ConstructAmericaAirfield"}, + {"IconName" : "USAStrategyCenter", "HotkeyString" : "CONTROLBAR:ConstructAmericaStrategyCenter"}, + {"IconName" : "USASupplyDropZone", "HotkeyString" : "CONTROLBAR:ConstructAmericaSupplyDropZone"}, + {"IconName" : "USAParticleCannon", "HotkeyString" : "CONTROLBAR:ConstructAmericaParticleCannonUplink"}, + {"IconName" : "USACommandCenter", "HotkeyString" : "CONTROLBAR:ConstructAmericaCommandCenter"}, + {"IconName" : "DisarmMinesAtPosition", "HotkeyString" : "CONTROLBAR:DisarmMinesAtPosition"} + ] + ] + }, + + { + "Name" : "LSRLaserTank", + "IngameName" : "OBJECT:Lazr_Tank", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAAvenger", + "IngameName" : "OBJECT:Avenger", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USATomahawkLauncher", + "IngameName" : "OBJECT:Tomahawk", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAMicrowave", + "IngameName" : "OBJECT:Microwave", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USASentryDrone", + "IngameName" : "OBJECT:SentryDrone", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAHumvee", + "IngameName" : "OBJECT:Humvee", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAEvacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAAmbulance", + "IngameName" : "OBJECT:Ambulance", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAEvacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "USAAmbulanceCleanupArea", "HotkeyString" : "CONTROLBAR:AmbulanceCleanupArea"}, + {"IconName" : "USABattleDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, + {"IconName" : "USAHellfireDrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleHellfireDrone"}, + {"IconName" : "USADrone", "HotkeyString" : "CONTROLBAR:ConstructAmericaVehicleScoutDrone"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ], + "Aircrafts" : + [ + { + "Name" : "USAChinook", + "IngameName" : "OBJECT:Chinook", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAEvacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "USACombatDrop", "HotkeyString" : "CONTROLBAR:CombatDrop"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAComanche", + "IngameName" : "OBJECT:Comanche", + "KeyboardLayouts" : + [ + [ + {"IconName" : "USAFireRocketPods", "HotkeyString" : "CONTROLBAR:FireRocketPods"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAStealthFighter", + "IngameName" : "OBJECT:StealthFighter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USARaptor", + "IngameName" : "OBJECT:Raptor", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AirGuard", "HotkeyString" : "CONTROLBAR:GuardFlyingUnitsOnly"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "USAAurora", + "IngameName" : "OBJECT:Aurora", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ] + }, + + { + "ShortName" : "PRC", + "DisplayName" : "CHINA", + "DisplayNameDescription" : "China", + + "Buildings" : + [ + { + "Name" : "PRCNuclearReactor", + "IngameName" : "OBJECT:NuclearReactor", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCOvercharge", "HotkeyString" : "CONTROLBAR:Overcharge"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + + [ + {"IconName" : "PRCOvercharge", "HotkeyString" : "CONTROLBAR:Overcharge"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCBarracks", + "IngameName" : "OBJECT:Barracks", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCRedGuard", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryRedguard"}, + {"IconName" : "PRCTankHunter", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryTankHunter"}, + {"IconName" : "PRCHacker", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryHacker"}, + {"IconName" : "PRCBlackLotus", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryBlackLotus"}, + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:UpgradeChinaRedguardCaptureBuilding"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCRedGuard", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryRedguard"}, + {"IconName" : "PRCTankHunter", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryTankHunter"}, + {"IconName" : "PRCHacker", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryHacker"}, + {"IconName" : "PRCBlackLotus", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryBlackLotus"}, + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:UpgradeChinaRedguardCaptureBuilding"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCSupplyCenter", + "IngameName" : "OBJECT:SupplyCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCSupplyTruck", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleSupplyTruck"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCSupplyTruck", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleSupplyTruck"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCBunker", + "IngameName" : "OBJECT:Bunker", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCGattlingCannon", + "IngameName" : "OBJECT:GattlingCannon", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCWarFactory", + "IngameName" : "OBJECT:WarFactory", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCBattlemaster", "HotkeyString" : "CONTROLBAR:ConstructGLATankBattleMaster"}, + {"IconName" : "PRCTroopCrawler", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleTroopCrawler"}, + {"IconName" : "PRCGattlingTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankGattling"}, + {"IconName" : "PRCDragonTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankDragon"}, + {"IconName" : "PRCInfernoCannon", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleInfernoCannon"}, + {"IconName" : "PRCECMTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankECM"}, + {"IconName" : "PRCOverlordTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankOverlord"}, + {"IconName" : "PRCListeningOutpost", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleListeningOutpost"}, + {"IconName" : "PRCNukeCannon", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleNukeLauncher"}, + {"IconName" : "PRCChainguns", "HotkeyString" : "CONTROLBAR:UpgradeChinaChainGuns"}, + {"IconName" : "PRCBlackNapalm", "HotkeyString" : "CONTROLBAR:UpgradeChinaBlackNapalm"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCBattlemaster", "HotkeyString" : "CONTROLBAR:ConstructGLATankBattleMaster"}, + {"IconName" : "PRCTroopCrawler", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleTroopCrawler"}, + {"IconName" : "PRCGattlingTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankGattling"}, + {"IconName" : "PRCDragonTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankDragon"}, + {"IconName" : "PRCInfernoCannon", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleInfernoCannon"}, + {"IconName" : "PRCECMTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankECM"}, + {"IconName" : "PRCOverlordTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankOverlord"}, + {"IconName" : "PRCListeningOutpost", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleListeningOutpost"}, + {"IconName" : "PRCNukeCannon", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleNukeLauncher"}, + {"IconName" : "PRCChainguns", "HotkeyString" : "CONTROLBAR:UpgradeChinaChainGuns"}, + {"IconName" : "PRCBlackNapalm", "HotkeyString" : "CONTROLBAR:UpgradeChinaBlackNapalm"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCInternetCenter", + "IngameName" : "OBJECT:InternetCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCSatelliteHack1", "HotkeyString" : "CONTROLBAR:UpgradeChinaSatelliteHackOne"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCSatelliteHack2", "HotkeyString" : "CONTROLBAR:UpgradeChinaSatelliteHackTwo"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCAirfield", + "IngameName" : "OBJECT:Airfield", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCMIG", "HotkeyString" : "CONTROLBAR:ConstructChinaJetMIG"}, + {"IconName" : "PRCHelix", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleHelix"}, + {"IconName" : "PRCMiGArmour", "HotkeyString" : "CONTROLBAR:UpgradeChinaAircraftArmor"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCMIG", "HotkeyString" : "CONTROLBAR:ConstructChinaJetMIG"}, + {"IconName" : "PRCHelix", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleHelix"}, + {"IconName" : "PRCMiGArmour", "HotkeyString" : "CONTROLBAR:UpgradeChinaAircraftArmor"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCPropagandaCenter", + "IngameName" : "OBJECT:PropagandaCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCNationalismIcon", "HotkeyString" : "CONTROLBAR:UpgradeChinaFanaticism"}, + {"IconName" : "PRCSubliminalMessaging", "HotkeyString" : "CONTROLBAR:UpgradeChinaSubliminalMessaging"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCNationalismIcon", "HotkeyString" : "CONTROLBAR:UpgradeChinaFanaticism"}, + {"IconName" : "PRCSubliminalMessaging", "HotkeyString" : "CONTROLBAR:UpgradeChinaSubliminalMessaging"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCSpeakerTower", + "IngameName" : "OBJECT:PropagandaTrooper", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCNuclearMissileSilo", + "IngameName" : "OBJECT:NeutronMissile", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCNuclearMissile", "HotkeyString" : "CONTROLBAR:NeutronMissile"}, + {"IconName" : "PRCUraniumShells", "HotkeyString" : "CONTROLBAR:UpgradeChinaUraniumShells"}, + {"IconName" : "PRCNuclearTanks", "HotkeyString" : "CONTROLBAR:UpgradeChinaNuclearTanks"}, + {"IconName" : "PRCNeutronShells", "HotkeyString" : "CONTROLBAR:UpgradeChinaNeutronShells"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCNuclearMissile", "HotkeyString" : "CONTROLBAR:NeutronMissile"}, + {"IconName" : "PRCUraniumShells", "HotkeyString" : "CONTROLBAR:UpgradeChinaUraniumShells"}, + {"IconName" : "PRCNuclearTanks", "HotkeyString" : "CONTROLBAR:UpgradeChinaNuclearTanks"}, + {"IconName" : "PRCNeutronShells", "HotkeyString" : "CONTROLBAR:UpgradeChinaNeutronShells"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCCommandCenter", + "IngameName" : "OBJECT:CommandCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCDozer", "HotkeyString" : "CONTROLBAR:ConstructChinaDozer"}, + {"IconName" : "PRCBlackLotusCashHack", "HotkeyString" : "CONTROLBAR:StealCashHack"}, + {"IconName" : "EmergencyRepair", "HotkeyString" : "CONTROLBAR:EmergencyRepair"}, + {"IconName" : "PRCRadarUpgrade", "HotkeyString" : "CONTROLBAR:UpgradeChinaRadar"}, + {"IconName" : "PRCCarpetBomb", "HotkeyString" : "CONTROLBAR:CarpetBomb"}, + {"IconName" : "PRCClusterMine", "HotkeyString" : "CONTROLBAR:ClusterMines"}, + {"IconName" : "PRCArtilleryBarrage", "HotkeyString" : "CONTROLBAR:ArtilleryBarrage"}, + {"IconName" : "PRCEMPPulse", "HotkeyString" : "CONTROLBAR:EMPPulse"}, + {"IconName" : "PRCFrenzy", "HotkeyString" : "CONTROLBAR:Frenzy"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCDozer", "HotkeyString" : "CONTROLBAR:ConstructChinaDozer"}, + {"IconName" : "PRCBlackLotusCashHack", "HotkeyString" : "CONTROLBAR:StealCashHack"}, + {"IconName" : "EmergencyRepair", "HotkeyString" : "CONTROLBAR:EmergencyRepair"}, + {"IconName" : "PRCRadarUpgrade", "HotkeyString" : "CONTROLBAR:UpgradeChinaRadar"}, + {"IconName" : "PRCCarpetBomb", "HotkeyString" : "CONTROLBAR:CarpetBomb"}, + {"IconName" : "PRCClusterMine", "HotkeyString" : "CONTROLBAR:ClusterMines"}, + {"IconName" : "PRCArtilleryBarrage", "HotkeyString" : "CONTROLBAR:ArtilleryBarrage"}, + {"IconName" : "PRCEMPPulse", "HotkeyString" : "CONTROLBAR:EMPPulse"}, + {"IconName" : "PRCFrenzy", "HotkeyString" : "CONTROLBAR:Frenzy"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + } + ], + "Infantry" : + [ + { + "Name" : "PRCRedGuard", + "IngameName" : "OBJECT:Redguard", + "KeyboardLayouts" : + [ + [ + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:CaptureBuilding"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCTankHunter", + "IngameName" : "OBJECT:TankHunter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCTNTAttack", "HotkeyString" : "CONTROLBAR:TNTAttack"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCHacker", + "IngameName" : "OBJECT:Hacker", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCDisableBuilding", "HotkeyString" : "CONTROLBAR:DisableBuildingHack"}, + {"IconName" : "PRCHackInternet", "HotkeyString" : "CONTROLBAR:InternetHack"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCBlackLotus", + "IngameName" : "OBJECT:BlackLotus", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCBlackLotusCaptureBuilding", "HotkeyString" : "CONTROLBAR:CaptureBuilding"}, + {"IconName" : "PRCBlackLotusDisableVehicle", "HotkeyString" : "CONTROLBAR:DisableVehicleHack"}, + {"IconName" : "PRCBlackLotusCashHack", "HotkeyString" : "CONTROLBAR:CashHack"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ], + "Vehicles" : + [ + { + "Name" : "PRCECMTank", + "IngameName" : "OBJECT:ECMTank", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCDisableVehicle", "HotkeyString" : "CONTROLBAR:ECMDisableVehicle"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCBattlemaster", + "IngameName" : "OBJECT:BattleMaster", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCInfernoCannon", + "IngameName" : "OBJECT:InfernoCannon", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCGattlingTank", + "IngameName" : "OBJECT:GattlingTank", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCDragonTank", + "IngameName" : "OBJECT:Dragon", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCFireWall", "HotkeyString" : "CONTROLBAR:FireWall"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCTroopCrawler", + "IngameName" : "OBJECT:TroopCrawler", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCListeningOutpost", + "IngameName" : "OBJECT:ListeningOutpost", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCOverlordTank", + "IngameName" : "OBJECT:Overlord", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCOverlordBattleBunker", "HotkeyString" : "CONTROLBAR:UpgradeChinaOverlordBattleBunker"}, + {"IconName" : "PRCOverlordGatlingCannon", "HotkeyString" : "CONTROLBAR:UpgradeChinaOverlordGattlingCannon"}, + {"IconName" : "PRCOverlordPropagandaTower", "HotkeyString" : "CONTROLBAR:UpgradeChinaOverlordPropagandaTower"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCNukeCannon", + "IngameName" : "OBJECT:NukeLauncher", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCNuclearShells", "HotkeyString" : "CONTROLBAR:NukeWarhead"}, + {"IconName" : "PRCNeutronShells", "HotkeyString" : "CONTROLBAR:NeutronWarhead"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCDozer", + "IngameName" : "OBJECT:Dozer", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCNuclearReactor", "HotkeyString" : "CONTROLBAR:ConstructChinaPowerPlant"}, + {"IconName" : "PRCBarracks", "HotkeyString" : "CONTROLBAR:ConstructChinaBarracks"}, + {"IconName" : "PRCSupplyCenter", "HotkeyString" : "CONTROLBAR:ConstructChinaSupplyCenter"}, + {"IconName" : "PRCBunker", "HotkeyString" : "CONTROLBAR:ConstructChinaBunker"}, + {"IconName" : "PRCGattlingCannon", "HotkeyString" : "CONTROLBAR:ConstructChinaGattlingCannon"}, + {"IconName" : "PRCWarFactory", "HotkeyString" : "CONTROLBAR:ConstructChinaWarFactory"}, + {"IconName" : "PRCInternetCenter", "HotkeyString" : "CONTROLBAR:ConstructChinaInternetCenter"}, + {"IconName" : "PRCAirfield", "HotkeyString" : "CONTROLBAR:ConstructChinaAirfield"}, + {"IconName" : "PRCPropagandaCenter", "HotkeyString" : "CONTROLBAR:ConstructChinaPropagandaCenter"}, + {"IconName" : "PRCSpeakerTower", "HotkeyString" : "CONTROLBAR:ConstructChinaSpeakerTower"}, + {"IconName" : "PRCNuclearMissileSilo", "HotkeyString" : "CONTROLBAR:ConstructChinaNuclearMissileLauncher"}, + {"IconName" : "PRCCommandCenter", "HotkeyString" : "CONTROLBAR:ConstructChinaCommandCenter"}, + {"IconName" : "DisarmMinesAtPosition", "HotkeyString" : "CONTROLBAR:DisarmMinesAtPosition"} + ] + ] + } + ], + "Aircrafts" : + [ + { + "Name" : "PRCMIG", + "IngameName" : "OBJECT:MIG", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AirGuard", "HotkeyString" : "CONTROLBAR:GuardFlyingUnitsOnly"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCHelix", + "IngameName" : "OBJECT:Helix", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCNapalmBomb", "HotkeyString" : "CONTROLBAR:UpgradeHelixNapalmBomb"}, + {"IconName" : "PRCDropNapalmBomb", "HotkeyString" : "CONTROLBAR:DropNapalmBomb"}, + {"IconName" : "PRCHelixBattleBunker", "HotkeyString" : "CONTROLBAR:UpgradeChinaHelixBattleBunker"}, + {"IconName" : "PRCHelixSpeakerTower", "HotkeyString" : "CONTROLBAR:UpgradeChinaHelixPropagandaTower"}, + {"IconName" : "PRCHelixGattlingCannon", "HotkeyString" : "CONTROLBAR:UpgradeChinaHelixGattlingCannon"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ] + }, + + { + "ShortName" : "INF", + "DisplayName" : "INFANTRY", + "DisplayNameDescription" : "Infantry General", + + "Buildings" : + [ + { + "Name" : "PRCNuclearReactor", + "IngameName" : "OBJECT:NuclearReactor", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCOvercharge", "HotkeyString" : "CONTROLBAR:Overcharge"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCOvercharge", "HotkeyString" : "CONTROLBAR:Overcharge"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCBarracks", + "IngameName" : "OBJECT:Barracks", + "KeyboardLayouts" : + [ + [ + {"IconName" : "INFMiniGunner", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryMiniGunner"}, + {"IconName" : "PRCTankHunter", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryTankHunter"}, + {"IconName" : "PRCHacker", "HotkeyString" : "CONTROLBAR:Infa_ConstructChinaInfantryHacker"}, + {"IconName" : "INFSuperLotus", "HotkeyString" : "CONTROLBAR:Infa_ConstructChinaInfantryBlackLotus"}, + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:UpgradeChinaRedguardCaptureBuilding"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "INFMiniGunner", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryMiniGunner"}, + {"IconName" : "PRCTankHunter", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryTankHunter"}, + {"IconName" : "PRCHacker", "HotkeyString" : "CONTROLBAR:Infa_ConstructChinaInfantryHacker"}, + {"IconName" : "INFSuperLotus", "HotkeyString" : "CONTROLBAR:Infa_ConstructChinaInfantryBlackLotus"}, + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:UpgradeChinaRedguardCaptureBuilding"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCSupplyCenter", + "IngameName" : "OBJECT:SupplyCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCSupplyTruck", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleSupplyTruck"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCSupplyTruck", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleSupplyTruck"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "INFFortifiedBunker", + "IngameName" : "OBJECT:Infa_Bunker", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCGattlingCannon", + "IngameName" : "OBJECT:GattlingCannon", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCWarFactory", + "IngameName" : "OBJECT:WarFactory", + "KeyboardLayouts" : + [ + [ + {"IconName" : "INFAssaultTroopTransport", "HotkeyString" : "CONTROLBAR:Infa_ConstructChinaVehicleTroopCrawler"}, + {"IconName" : "PRCDragonTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankDragon"}, + {"IconName" : "PRCInfernoCannon", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleInfernoCannon"}, + {"IconName" : "PRCECMTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankECM"}, + {"IconName" : "PRCListeningOutpost", "HotkeyString" : "CONTROLBAR:Infa_ConstructChinaVehicleListeningOutpost"}, + {"IconName" : "PRCNukeCannon", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleNukeLauncher"}, + {"IconName" : "PRCChainguns", "HotkeyString" : "CONTROLBAR:UpgradeChinaChainGuns"}, + {"IconName" : "PRCBlackNapalm", "HotkeyString" : "CONTROLBAR:UpgradeChinaBlackNapalm"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "INFAssaultTroopTransport", "HotkeyString" : "CONTROLBAR:Infa_ConstructChinaVehicleTroopCrawler"}, + {"IconName" : "PRCDragonTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankDragon"}, + {"IconName" : "PRCInfernoCannon", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleInfernoCannon"}, + {"IconName" : "PRCECMTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankECM"}, + {"IconName" : "PRCListeningOutpost", "HotkeyString" : "CONTROLBAR:Infa_ConstructChinaVehicleListeningOutpost"}, + {"IconName" : "PRCNukeCannon", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleNukeLauncher"}, + {"IconName" : "PRCChainguns", "HotkeyString" : "CONTROLBAR:UpgradeChinaChainGuns"}, + {"IconName" : "PRCBlackNapalm", "HotkeyString" : "CONTROLBAR:UpgradeChinaBlackNapalm"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCInternetCenter", + "IngameName" : "OBJECT:InternetCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCSatelliteHack1", "HotkeyString" : "CONTROLBAR:UpgradeChinaSatelliteHackOne"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCSatelliteHack2", "HotkeyString" : "CONTROLBAR:UpgradeChinaSatelliteHackTwo"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCAirfield", + "IngameName" : "OBJECT:Airfield", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCMIG", "HotkeyString" : "CONTROLBAR:ConstructChinaJetMIG"}, + {"IconName" : "PRCHelix", "HotkeyString" : "CONTROLBAR:Infa_ConstructChinaVehicleHelix"}, + {"IconName" : "PRCMiGArmour", "HotkeyString" : "CONTROLBAR:UpgradeChinaAircraftArmor"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCMIG", "HotkeyString" : "CONTROLBAR:ConstructChinaJetMIG"}, + {"IconName" : "PRCHelix", "HotkeyString" : "CONTROLBAR:Infa_ConstructChinaVehicleHelix"}, + {"IconName" : "PRCMiGArmour", "HotkeyString" : "CONTROLBAR:UpgradeChinaAircraftArmor"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCPropagandaCenter", + "IngameName" : "OBJECT:PropagandaCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCNationalismIcon", "HotkeyString" : "CONTROLBAR:UpgradeChinaFanaticism"}, + {"IconName" : "PRCSubliminalMessaging", "HotkeyString" : "CONTROLBAR:UpgradeChinaSubliminalMessaging"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCNationalismIcon", "HotkeyString" : "CONTROLBAR:UpgradeChinaFanaticism"}, + {"IconName" : "PRCSubliminalMessaging", "HotkeyString" : "CONTROLBAR:UpgradeChinaSubliminalMessaging"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCSpeakerTower", + "IngameName" : "OBJECT:PropagandaTrooper", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCNuclearMissileSilo", + "IngameName" : "OBJECT:NeutronMissile", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCNuclearMissile", "HotkeyString" : "CONTROLBAR:NeutronMissile"}, + {"IconName" : "PRCNeutronShells", "HotkeyString" : "CONTROLBAR:UpgradeChinaNeutronShells"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCNuclearMissile", "HotkeyString" : "CONTROLBAR:NeutronMissile"}, + {"IconName" : "PRCNeutronShells", "HotkeyString" : "CONTROLBAR:UpgradeChinaNeutronShells"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCCommandCenter", + "IngameName" : "OBJECT:CommandCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCDozer", "HotkeyString" : "CONTROLBAR:ConstructChinaDozer"}, + {"IconName" : "Paradrop", "HotkeyString" : "CONTROLBAR:Paradrop"}, + {"IconName" : "EmergencyRepair", "HotkeyString" : "CONTROLBAR:EmergencyRepair"}, + {"IconName" : "PRCRadarUpgrade", "HotkeyString" : "CONTROLBAR:UpgradeChinaRadar"}, + {"IconName" : "PRCCarpetBomb", "HotkeyString" : "CONTROLBAR:CarpetBomb"}, + {"IconName" : "PRCClusterMine", "HotkeyString" : "CONTROLBAR:ClusterMines"}, + {"IconName" : "PRCArtilleryBarrage", "HotkeyString" : "CONTROLBAR:ArtilleryBarrage"}, + {"IconName" : "PRCEMPPulse", "HotkeyString" : "CONTROLBAR:EMPPulse"}, + {"IconName" : "PRCFrenzy", "HotkeyString" : "CONTROLBAR:Frenzy"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCDozer", "HotkeyString" : "CONTROLBAR:ConstructChinaDozer"}, + {"IconName" : "Paradrop", "HotkeyString" : "CONTROLBAR:Paradrop"}, + {"IconName" : "EmergencyRepair", "HotkeyString" : "CONTROLBAR:EmergencyRepair"}, + {"IconName" : "PRCRadarUpgrade", "HotkeyString" : "CONTROLBAR:UpgradeChinaRadar"}, + {"IconName" : "PRCCarpetBomb", "HotkeyString" : "CONTROLBAR:CarpetBomb"}, + {"IconName" : "PRCClusterMine", "HotkeyString" : "CONTROLBAR:ClusterMines"}, + {"IconName" : "PRCArtilleryBarrage", "HotkeyString" : "CONTROLBAR:ArtilleryBarrage"}, + {"IconName" : "PRCEMPPulse", "HotkeyString" : "CONTROLBAR:EMPPulse"}, + {"IconName" : "PRCFrenzy", "HotkeyString" : "CONTROLBAR:Frenzy"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + } + ], + "Infantry" : + [ + { + "Name" : "INFMiniGunner", + "IngameName" : "OBJECT:MiniGunner", + "KeyboardLayouts" : + [ + [ + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:CaptureBuilding"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCTankHunter", + "IngameName" : "OBJECT:TankHunter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCTNTAttack", "HotkeyString" : "CONTROLBAR:TNTAttack"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCHacker", + "IngameName" : "OBJECT:Hacker", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCDisableBuilding", "HotkeyString" : "CONTROLBAR:DisableBuildingHack"}, + {"IconName" : "PRCHackInternet", "HotkeyString" : "CONTROLBAR:InternetHack"}, + {"IconName" : "PRCBlackLotusDisableVehicle", "HotkeyString" : "CONTROLBAR:DisableVehicleHack"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "INFSuperLotus", + "IngameName" : "OBJECT:BlackLotus", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCBlackLotusCaptureBuilding", "HotkeyString" : "CONTROLBAR:CaptureBuilding"}, + {"IconName" : "PRCBlackLotusDisableVehicle", "HotkeyString" : "CONTROLBAR:DisableVehicleHack"}, + {"IconName" : "PRCBlackLotusCashHack", "HotkeyString" : "CONTROLBAR:CashHack"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ], + "Vehicles" : + [ + { + "Name" : "PRCECMTank", + "IngameName" : "OBJECT:ECMTank", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCDisableVehicle", "HotkeyString" : "CONTROLBAR:ECMDisableVehicle"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCInfernoCannon", + "IngameName" : "OBJECT:InfernoCannon", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCDragonTank", + "IngameName" : "OBJECT:Dragon", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCFireWall", "HotkeyString" : "CONTROLBAR:FireWall"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "INFAssaultTroopTransport", + "IngameName" : "OBJECT:AssaultTroopTransport", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCListeningOutpost", + "IngameName" : "OBJECT:AssaultListeningOutpost", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCNukeCannon", + "IngameName" : "OBJECT:NukeLauncher", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCNuclearShells", "HotkeyString" : "CONTROLBAR:NukeWarhead"}, + {"IconName" : "PRCNeutronShells", "HotkeyString" : "CONTROLBAR:NeutronWarhead"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCDozer", + "IngameName" : "OBJECT:Dozer", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCNuclearReactor", "HotkeyString" : "CONTROLBAR:ConstructChinaPowerPlant"}, + {"IconName" : "PRCBarracks", "HotkeyString" : "CONTROLBAR:ConstructChinaBarracks"}, + {"IconName" : "PRCSupplyCenter", "HotkeyString" : "CONTROLBAR:ConstructChinaSupplyCenter"}, + {"IconName" : "INFFortifiedBunker", "HotkeyString" : "CONTROLBAR:Infa_ConstructChinaBunker"}, + {"IconName" : "PRCGattlingCannon", "HotkeyString" : "CONTROLBAR:ConstructChinaGattlingCannon"}, + {"IconName" : "PRCWarFactory", "HotkeyString" : "CONTROLBAR:ConstructChinaWarFactory"}, + {"IconName" : "PRCInternetCenter", "HotkeyString" : "CONTROLBAR:ConstructChinaInternetCenter"}, + {"IconName" : "PRCAirfield", "HotkeyString" : "CONTROLBAR:ConstructChinaAirfield"}, + {"IconName" : "PRCPropagandaCenter", "HotkeyString" : "CONTROLBAR:ConstructChinaPropagandaCenter"}, + {"IconName" : "PRCSpeakerTower", "HotkeyString" : "CONTROLBAR:ConstructChinaSpeakerTower"}, + {"IconName" : "PRCNuclearMissileSilo", "HotkeyString" : "CONTROLBAR:ConstructChinaNuclearMissileLauncher"}, + {"IconName" : "PRCCommandCenter", "HotkeyString" : "CONTROLBAR:ConstructChinaCommandCenter"}, + {"IconName" : "DisarmMinesAtPosition", "HotkeyString" : "CONTROLBAR:DisarmMinesAtPosition"} + ] + ] + } + ], + "Aircrafts" : + [ + { + "Name" : "PRCMIG", + "IngameName" : "OBJECT:MIG", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AirGuard", "HotkeyString" : "CONTROLBAR:GuardFlyingUnitsOnly"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCHelix", + "IngameName" : "OBJECT:Infa_Helix", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCNapalmBomb", "HotkeyString" : "CONTROLBAR:UpgradeHelixNapalmBomb"}, + {"IconName" : "PRCDropNapalmBomb", "HotkeyString" : "CONTROLBAR:DropNapalmBomb"}, + {"IconName" : "PRCHelixBattleBunker", "HotkeyString" : "CONTROLBAR:UpgradeChinaHelixBattleBunker"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ] + }, + + { + "ShortName" : "NUK", + "DisplayName" : "NUKE", + "DisplayNameDescription" : "Nuke General", + + "Buildings" : + [ + { + "Name" : "PRCAdvancedNuclearReactor", + "IngameName" : "OBJECT:Nuke_NuclearReactor", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCOvercharge", "HotkeyString" : "CONTROLBAR:Overcharge"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCOvercharge", "HotkeyString" : "CONTROLBAR:Overcharge"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCBarracks", + "IngameName" : "OBJECT:Barracks", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCRedGuard", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryRedguard"}, + {"IconName" : "PRCTankHunter", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryTankHunter"}, + {"IconName" : "PRCHacker", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryHacker"}, + {"IconName" : "PRCBlackLotus", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryBlackLotus"}, + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:UpgradeChinaRedguardCaptureBuilding"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCRedGuard", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryRedguard"}, + {"IconName" : "PRCTankHunter", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryTankHunter"}, + {"IconName" : "PRCHacker", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryHacker"}, + {"IconName" : "PRCBlackLotus", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryBlackLotus"}, + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:UpgradeChinaRedguardCaptureBuilding"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCSupplyCenter", + "IngameName" : "OBJECT:SupplyCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCSupplyTruck", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleSupplyTruck"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCSupplyTruck", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleSupplyTruck"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCBunker", + "IngameName" : "OBJECT:Bunker", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCGattlingCannon", + "IngameName" : "OBJECT:GattlingCannon", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCWarFactory", + "IngameName" : "OBJECT:WarFactory", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCBattlemaster", "HotkeyString" : "CONTROLBAR:ConstructGLATankBattleMaster"}, + {"IconName" : "PRCTroopCrawler", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleTroopCrawler"}, + {"IconName" : "PRCGattlingTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankGattling"}, + {"IconName" : "PRCDragonTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankDragon"}, + {"IconName" : "PRCInfernoCannon", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleInfernoCannon"}, + {"IconName" : "PRCECMTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankECM"}, + {"IconName" : "PRCOverlordTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankOverlord"}, + {"IconName" : "PRCListeningOutpost", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleListeningOutpost"}, + {"IconName" : "PRCNukeCannon", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleNukeLauncher"}, + {"IconName" : "PRCChainguns", "HotkeyString" : "CONTROLBAR:UpgradeChinaChainGuns"}, + {"IconName" : "PRCBlackNapalm", "HotkeyString" : "CONTROLBAR:UpgradeChinaBlackNapalm"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCBattlemaster", "HotkeyString" : "CONTROLBAR:ConstructGLATankBattleMaster"}, + {"IconName" : "PRCTroopCrawler", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleTroopCrawler"}, + {"IconName" : "PRCGattlingTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankGattling"}, + {"IconName" : "PRCDragonTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankDragon"}, + {"IconName" : "PRCInfernoCannon", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleInfernoCannon"}, + {"IconName" : "PRCECMTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankECM"}, + {"IconName" : "PRCOverlordTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankOverlord"}, + {"IconName" : "PRCListeningOutpost", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleListeningOutpost"}, + {"IconName" : "PRCNukeCannon", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleNukeLauncher"}, + {"IconName" : "PRCChainguns", "HotkeyString" : "CONTROLBAR:UpgradeChinaChainGuns"}, + {"IconName" : "PRCBlackNapalm", "HotkeyString" : "CONTROLBAR:UpgradeChinaBlackNapalm"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCInternetCenter", + "IngameName" : "OBJECT:InternetCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCSatelliteHack1", "HotkeyString" : "CONTROLBAR:UpgradeChinaSatelliteHackOne"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCSatelliteHack2", "HotkeyString" : "CONTROLBAR:UpgradeChinaSatelliteHackTwo"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCAirfield", + "IngameName" : "OBJECT:Airfield", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCMIG", "HotkeyString" : "CONTROLBAR:ConstructChinaJetMIG"}, + {"IconName" : "PRCHelix", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleHelix"}, + {"IconName" : "PRCMiGArmour", "HotkeyString" : "CONTROLBAR:UpgradeChinaAircraftArmor"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCMIG", "HotkeyString" : "CONTROLBAR:ConstructChinaJetMIG"}, + {"IconName" : "PRCHelix", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleHelix"}, + {"IconName" : "PRCMiGArmour", "HotkeyString" : "CONTROLBAR:UpgradeChinaAircraftArmor"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCPropagandaCenter", + "IngameName" : "OBJECT:PropagandaCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCNationalismIcon", "HotkeyString" : "CONTROLBAR:UpgradeChinaFanaticism"}, + {"IconName" : "PRCSubliminalMessaging", "HotkeyString" : "CONTROLBAR:UpgradeChinaSubliminalMessaging"}, + {"IconName" : "NUKIsotopeStability", "HotkeyString" : "UPGRADE:UpgradeChinaIsotopeStability"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCNationalismIcon", "HotkeyString" : "CONTROLBAR:UpgradeChinaFanaticism"}, + {"IconName" : "PRCSubliminalMessaging", "HotkeyString" : "CONTROLBAR:UpgradeChinaSubliminalMessaging"}, + {"IconName" : "NUKIsotopeStability", "HotkeyString" : "UPGRADE:UpgradeChinaIsotopeStability"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCSpeakerTower", + "IngameName" : "OBJECT:PropagandaTrooper", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCNuclearMissileSilo", + "IngameName" : "OBJECT:NeutronMissile", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCNuclearMissile", "HotkeyString" : "CONTROLBAR:NeutronMissile"}, + {"IconName" : "NUKTacticalNukeMig", "HotkeyString" : "CONTROLBAR:UpgradeChinaTacticalNukeMig"}, + {"IconName" : "PRCNeutronShells", "HotkeyString" : "CONTROLBAR:UpgradeChinaNeutronShells"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCNuclearMissile", "HotkeyString" : "CONTROLBAR:NeutronMissile"}, + {"IconName" : "NUKTacticalNukeMig", "HotkeyString" : "CONTROLBAR:UpgradeChinaTacticalNukeMig"}, + {"IconName" : "PRCNeutronShells", "HotkeyString" : "CONTROLBAR:UpgradeChinaNeutronShells"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCCommandCenter", + "IngameName" : "OBJECT:CommandCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCDozer", "HotkeyString" : "CONTROLBAR:ConstructChinaDozer"}, + {"IconName" : "PRCBlackLotusCashHack", "HotkeyString" : "CONTROLBAR:StealCashHack"}, + {"IconName" : "EmergencyRepair", "HotkeyString" : "CONTROLBAR:EmergencyRepair"}, + {"IconName" : "PRCRadarUpgrade", "HotkeyString" : "CONTROLBAR:UpgradeChinaRadar"}, + {"IconName" : "NUKCarpetBomb", "HotkeyString" : "CONTROLBAR:Nuke_CarpetBomb"}, + {"IconName" : "PRCClusterMine", "HotkeyString" : "CONTROLBAR:ClusterMines"}, + {"IconName" : "PRCArtilleryBarrage", "HotkeyString" : "CONTROLBAR:ArtilleryBarrage"}, + {"IconName" : "PRCEMPPulse", "HotkeyString" : "CONTROLBAR:EMPPulse"}, + {"IconName" : "PRCFrenzy", "HotkeyString" : "CONTROLBAR:Frenzy"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCDozer", "HotkeyString" : "CONTROLBAR:ConstructChinaDozer"}, + {"IconName" : "PRCBlackLotusCashHack", "HotkeyString" : "CONTROLBAR:StealCashHack"}, + {"IconName" : "EmergencyRepair", "HotkeyString" : "CONTROLBAR:EmergencyRepair"}, + {"IconName" : "PRCRadarUpgrade", "HotkeyString" : "CONTROLBAR:UpgradeChinaRadar"}, + {"IconName" : "NUKCarpetBomb", "HotkeyString" : "CONTROLBAR:Nuke_CarpetBomb"}, + {"IconName" : "PRCClusterMine", "HotkeyString" : "CONTROLBAR:ClusterMines"}, + {"IconName" : "PRCArtilleryBarrage", "HotkeyString" : "CONTROLBAR:ArtilleryBarrage"}, + {"IconName" : "PRCEMPPulse", "HotkeyString" : "CONTROLBAR:EMPPulse"}, + {"IconName" : "PRCFrenzy", "HotkeyString" : "CONTROLBAR:Frenzy"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + } + ], + "Infantry" : + [ + { + "Name" : "PRCRedGuard", + "IngameName" : "OBJECT:Redguard", + "KeyboardLayouts" : + [ + [ + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:CaptureBuilding"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCTankHunter", + "IngameName" : "OBJECT:TankHunter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCTNTAttack", "HotkeyString" : "CONTROLBAR:TNTAttack"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCHacker", + "IngameName" : "OBJECT:Hacker", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCDisableBuilding", "HotkeyString" : "CONTROLBAR:DisableBuildingHack"}, + {"IconName" : "PRCHackInternet", "HotkeyString" : "CONTROLBAR:InternetHack"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCBlackLotus", + "IngameName" : "OBJECT:BlackLotus", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCBlackLotusCaptureBuilding", "HotkeyString" : "CONTROLBAR:CaptureBuilding"}, + {"IconName" : "PRCBlackLotusDisableVehicle", "HotkeyString" : "CONTROLBAR:DisableVehicleHack"}, + {"IconName" : "PRCBlackLotusCashHack", "HotkeyString" : "CONTROLBAR:CashHack"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ], + "Vehicles" : + [ + { + "Name" : "PRCECMTank", + "IngameName" : "OBJECT:ECMTank", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCDisableVehicle", "HotkeyString" : "CONTROLBAR:ECMDisableVehicle"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCBattlemaster", + "IngameName" : "OBJECT:BattleMaster", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCInfernoCannon", + "IngameName" : "OBJECT:InfernoCannon", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCGattlingTank", + "IngameName" : "OBJECT:GattlingTank", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCDragonTank", + "IngameName" : "OBJECT:Dragon", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCFireWall", "HotkeyString" : "CONTROLBAR:FireWall"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCTroopCrawler", + "IngameName" : "OBJECT:TroopCrawler", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCListeningOutpost", + "IngameName" : "OBJECT:ListeningOutpost", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCOverlordTank", + "IngameName" : "OBJECT:Overlord", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCOverlordBattleBunker", "HotkeyString" : "CONTROLBAR:UpgradeChinaOverlordBattleBunker"}, + {"IconName" : "PRCOverlordGatlingCannon", "HotkeyString" : "CONTROLBAR:UpgradeChinaOverlordGattlingCannon"}, + {"IconName" : "PRCOverlordPropagandaTower", "HotkeyString" : "CONTROLBAR:UpgradeChinaOverlordPropagandaTower"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCNukeCannon", + "IngameName" : "OBJECT:NukeLauncher", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCNuclearShells", "HotkeyString" : "CONTROLBAR:NukeWarhead"}, + {"IconName" : "PRCNeutronShells", "HotkeyString" : "CONTROLBAR:NeutronWarhead"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCDozer", + "IngameName" : "OBJECT:Dozer", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCNuclearReactor", "HotkeyString" : "CONTROLBAR:ConstructChinaPowerPlant"}, + {"IconName" : "PRCBarracks", "HotkeyString" : "CONTROLBAR:ConstructChinaBarracks"}, + {"IconName" : "PRCSupplyCenter", "HotkeyString" : "CONTROLBAR:ConstructChinaSupplyCenter"}, + {"IconName" : "PRCBunker", "HotkeyString" : "CONTROLBAR:ConstructChinaBunker"}, + {"IconName" : "PRCGattlingCannon", "HotkeyString" : "CONTROLBAR:ConstructChinaGattlingCannon"}, + {"IconName" : "PRCWarFactory", "HotkeyString" : "CONTROLBAR:ConstructChinaWarFactory"}, + {"IconName" : "PRCInternetCenter", "HotkeyString" : "CONTROLBAR:ConstructChinaInternetCenter"}, + {"IconName" : "PRCAirfield", "HotkeyString" : "CONTROLBAR:ConstructChinaAirfield"}, + {"IconName" : "PRCPropagandaCenter", "HotkeyString" : "CONTROLBAR:ConstructChinaPropagandaCenter"}, + {"IconName" : "PRCSpeakerTower", "HotkeyString" : "CONTROLBAR:ConstructChinaSpeakerTower"}, + {"IconName" : "PRCNuclearMissileSilo", "HotkeyString" : "CONTROLBAR:ConstructChinaNuclearMissileLauncher"}, + {"IconName" : "PRCCommandCenter", "HotkeyString" : "CONTROLBAR:ConstructChinaCommandCenter"}, + {"IconName" : "DisarmMinesAtPosition", "HotkeyString" : "CONTROLBAR:DisarmMinesAtPosition"} + ] + ] + } + ], + "Aircrafts" : + [ + { + "Name" : "PRCMIG", + "IngameName" : "OBJECT:MIG", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AirGuard", "HotkeyString" : "CONTROLBAR:GuardFlyingUnitsOnly"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCHelix", + "IngameName" : "OBJECT:Helix", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCNukeBomb", "HotkeyString" : "CONTROLBAR:UpgradeHelixNukeBomb"}, + {"IconName" : "PRCDropNukeBomb", "HotkeyString" : "CONTROLBAR:DropNukeBomb"}, + {"IconName" : "PRCHelixBattleBunker", "HotkeyString" : "CONTROLBAR:UpgradeChinaHelixBattleBunker"}, + {"IconName" : "PRCHelixSpeakerTower", "HotkeyString" : "CONTROLBAR:UpgradeChinaHelixPropagandaTower"}, + {"IconName" : "PRCHelixGattlingCannon", "HotkeyString" : "CONTROLBAR:UpgradeChinaHelixGattlingCannon"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ] + }, + + { + "ShortName" : "TNK", + "DisplayName" : "TANK", + "DisplayNameDescription" : "Tank General", + + "Buildings" : + [ + { + "Name" : "PRCNuclearReactor", + "IngameName" : "OBJECT:NuclearReactor", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCOvercharge", "HotkeyString" : "CONTROLBAR:Overcharge"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCOvercharge", "HotkeyString" : "CONTROLBAR:Overcharge"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCBarracks", + "IngameName" : "OBJECT:Barracks", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCRedGuard", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryRedguard"}, + {"IconName" : "PRCTankHunter", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryTankHunter"}, + {"IconName" : "PRCHacker", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryHacker"}, + {"IconName" : "PRCBlackLotus", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryBlackLotus"}, + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:UpgradeChinaRedguardCaptureBuilding"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCRedGuard", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryRedguard"}, + {"IconName" : "PRCTankHunter", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryTankHunter"}, + {"IconName" : "PRCHacker", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryHacker"}, + {"IconName" : "PRCBlackLotus", "HotkeyString" : "CONTROLBAR:ConstructChinaInfantryBlackLotus"}, + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:UpgradeChinaRedguardCaptureBuilding"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCSupplyCenter", + "IngameName" : "OBJECT:SupplyCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCSupplyTruck", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleSupplyTruck"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCSupplyTruck", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleSupplyTruck"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCBunker", + "IngameName" : "OBJECT:Bunker", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCGattlingCannon", + "IngameName" : "OBJECT:GattlingCannon", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCWarFactory", + "IngameName" : "OBJECT:WarFactory", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCBattlemaster", "HotkeyString" : "CONTROLBAR:ConstructGLATankBattleMaster"}, + {"IconName" : "PRCTroopCrawler", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleTroopCrawler"}, + {"IconName" : "PRCGattlingTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankGattling"}, + {"IconName" : "PRCDragonTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankDragon"}, + {"IconName" : "PRCECMTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankECM"}, + {"IconName" : "TNKEmperorOverlordTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankEmperor"}, + {"IconName" : "PRCListeningOutpost", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleListeningOutpost"}, + {"IconName" : "PRCChainguns", "HotkeyString" : "CONTROLBAR:UpgradeChinaChainGuns"}, + {"IconName" : "PRCBlackNapalm", "HotkeyString" : "CONTROLBAR:UpgradeChinaBlackNapalm"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCBattlemaster", "HotkeyString" : "CONTROLBAR:ConstructGLATankBattleMaster"}, + {"IconName" : "PRCTroopCrawler", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleTroopCrawler"}, + {"IconName" : "PRCGattlingTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankGattling"}, + {"IconName" : "PRCDragonTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankDragon"}, + {"IconName" : "PRCECMTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankECM"}, + {"IconName" : "TNKEmperorOverlordTank", "HotkeyString" : "CONTROLBAR:ConstructChinaTankEmperor"}, + {"IconName" : "PRCListeningOutpost", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleListeningOutpost"}, + {"IconName" : "PRCChainguns", "HotkeyString" : "CONTROLBAR:UpgradeChinaChainGuns"}, + {"IconName" : "PRCBlackNapalm", "HotkeyString" : "CONTROLBAR:UpgradeChinaBlackNapalm"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCInternetCenter", + "IngameName" : "OBJECT:InternetCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCSatelliteHack1", "HotkeyString" : "CONTROLBAR:UpgradeChinaSatelliteHackOne"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCSatelliteHack2", "HotkeyString" : "CONTROLBAR:UpgradeChinaSatelliteHackTwo"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCAirfield", + "IngameName" : "OBJECT:Airfield", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCMIG", "HotkeyString" : "CONTROLBAR:ConstructChinaJetMIG"}, + {"IconName" : "PRCHelix", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleHelix"}, + {"IconName" : "PRCMiGArmour", "HotkeyString" : "CONTROLBAR:UpgradeChinaAircraftArmor"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCMIG", "HotkeyString" : "CONTROLBAR:ConstructChinaJetMIG"}, + {"IconName" : "PRCHelix", "HotkeyString" : "CONTROLBAR:ConstructChinaVehicleHelix"}, + {"IconName" : "PRCMiGArmour", "HotkeyString" : "CONTROLBAR:UpgradeChinaAircraftArmor"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCPropagandaCenter", + "IngameName" : "OBJECT:PropagandaCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCNationalismIcon", "HotkeyString" : "CONTROLBAR:UpgradeChinaFanaticism"}, + {"IconName" : "PRCSubliminalMessaging", "HotkeyString" : "CONTROLBAR:UpgradeChinaSubliminalMessaging"}, + {"IconName" : "TNKAutoloader", "HotkeyString" : "CONTROLBAR:UpgradeChinaTankAutoLoader"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCNationalismIcon", "HotkeyString" : "CONTROLBAR:UpgradeChinaFanaticism"}, + {"IconName" : "PRCSubliminalMessaging", "HotkeyString" : "CONTROLBAR:UpgradeChinaSubliminalMessaging"}, + {"IconName" : "TNKAutoloader", "HotkeyString" : "CONTROLBAR:UpgradeChinaTankAutoLoader"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCSpeakerTower", + "IngameName" : "OBJECT:PropagandaTrooper", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCNuclearMissileSilo", + "IngameName" : "OBJECT:NeutronMissile", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCNuclearMissile", "HotkeyString" : "CONTROLBAR:NeutronMissile"}, + {"IconName" : "PRCUraniumShells", "HotkeyString" : "CONTROLBAR:UpgradeChinaUraniumShells"}, + {"IconName" : "PRCNuclearTanks", "HotkeyString" : "CONTROLBAR:UpgradeChinaNuclearTanks"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCNuclearMissile", "HotkeyString" : "CONTROLBAR:NeutronMissile"}, + {"IconName" : "PRCUraniumShells", "HotkeyString" : "CONTROLBAR:UpgradeChinaUraniumShells"}, + {"IconName" : "PRCNuclearTanks", "HotkeyString" : "CONTROLBAR:UpgradeChinaNuclearTanks"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "PRCCommandCenter", + "IngameName" : "OBJECT:CommandCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCDozer", "HotkeyString" : "CONTROLBAR:ConstructChinaDozer"}, + {"IconName" : "TNKTankDrop", "HotkeyString" : "CONTROLBAR:TankParadrop"}, + {"IconName" : "EmergencyRepair", "HotkeyString" : "CONTROLBAR:EmergencyRepair"}, + {"IconName" : "PRCRadarUpgrade", "HotkeyString" : "CONTROLBAR:UpgradeChinaRadar"}, + {"IconName" : "PRCCarpetBomb", "HotkeyString" : "CONTROLBAR:CarpetBomb"}, + {"IconName" : "PRCClusterMine", "HotkeyString" : "CONTROLBAR:ClusterMines"}, + {"IconName" : "PRCArtilleryBarrage", "HotkeyString" : "CONTROLBAR:ArtilleryBarrage"}, + {"IconName" : "PRCEMPPulse", "HotkeyString" : "CONTROLBAR:EMPPulse"}, + {"IconName" : "PRCFrenzy", "HotkeyString" : "CONTROLBAR:Frenzy"}, + {"IconName" : "PRCLandMine", "HotkeyString" : "CONTROLBAR:UpgradeChinaMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ], + [ + {"IconName" : "PRCDozer", "HotkeyString" : "CONTROLBAR:ConstructChinaDozer"}, + {"IconName" : "TNKTankDrop", "HotkeyString" : "CONTROLBAR:TankParadrop"}, + {"IconName" : "EmergencyRepair", "HotkeyString" : "CONTROLBAR:EmergencyRepair"}, + {"IconName" : "PRCRadarUpgrade", "HotkeyString" : "CONTROLBAR:UpgradeChinaRadar"}, + {"IconName" : "PRCCarpetBomb", "HotkeyString" : "CONTROLBAR:CarpetBomb"}, + {"IconName" : "PRCClusterMine", "HotkeyString" : "CONTROLBAR:ClusterMines"}, + {"IconName" : "PRCArtilleryBarrage", "HotkeyString" : "CONTROLBAR:ArtilleryBarrage"}, + {"IconName" : "PRCEMPPulse", "HotkeyString" : "CONTROLBAR:EMPPulse"}, + {"IconName" : "PRCFrenzy", "HotkeyString" : "CONTROLBAR:Frenzy"}, + {"IconName" : "PRCNeutronMines", "HotkeyString" : "CONTROLBAR:UpgradeEMPMines"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + } + ], + "Infantry" : + [ + { + "Name" : "PRCRedGuard", + "IngameName" : "OBJECT:Redguard", + "KeyboardLayouts" : + [ + [ + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:CaptureBuilding"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCTankHunter", + "IngameName" : "OBJECT:TankHunter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCTNTAttack", "HotkeyString" : "CONTROLBAR:TNTAttack"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCHacker", + "IngameName" : "OBJECT:Hacker", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCDisableBuilding", "HotkeyString" : "CONTROLBAR:DisableBuildingHack"}, + {"IconName" : "PRCHackInternet", "HotkeyString" : "CONTROLBAR:InternetHack"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCBlackLotus", + "IngameName" : "OBJECT:BlackLotus", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCBlackLotusCaptureBuilding", "HotkeyString" : "CONTROLBAR:CaptureBuilding"}, + {"IconName" : "PRCBlackLotusDisableVehicle", "HotkeyString" : "CONTROLBAR:DisableVehicleHack"}, + {"IconName" : "PRCBlackLotusCashHack", "HotkeyString" : "CONTROLBAR:CashHack"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ], + "Vehicles" : + [ + { + "Name" : "PRCECMTank", + "IngameName" : "OBJECT:ECMTank", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCDisableVehicle", "HotkeyString" : "CONTROLBAR:ECMDisableVehicle"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCBattlemaster", + "IngameName" : "OBJECT:BattleMaster", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCGattlingTank", + "IngameName" : "OBJECT:GattlingTank", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCDragonTank", + "IngameName" : "OBJECT:Dragon", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCFireWall", "HotkeyString" : "CONTROLBAR:FireWall"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCTroopCrawler", + "IngameName" : "OBJECT:TroopCrawler", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCListeningOutpost", + "IngameName" : "OBJECT:ListeningOutpost", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "TNKEmperorOverlordTank", + "IngameName" : "OBJECT:Tank_Overlord", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCOverlordGatlingCannon", "HotkeyString" : "CONTROLBAR:UpgradeChinaOverlordGattlingCannon"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCDozer", + "IngameName" : "OBJECT:Dozer", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCNuclearReactor", "HotkeyString" : "CONTROLBAR:ConstructChinaPowerPlant"}, + {"IconName" : "PRCBarracks", "HotkeyString" : "CONTROLBAR:ConstructChinaBarracks"}, + {"IconName" : "PRCSupplyCenter", "HotkeyString" : "CONTROLBAR:ConstructChinaSupplyCenter"}, + {"IconName" : "PRCBunker", "HotkeyString" : "CONTROLBAR:ConstructChinaBunker"}, + {"IconName" : "PRCGattlingCannon", "HotkeyString" : "CONTROLBAR:ConstructChinaGattlingCannon"}, + {"IconName" : "PRCWarFactory", "HotkeyString" : "CONTROLBAR:ConstructChinaWarFactory"}, + {"IconName" : "PRCInternetCenter", "HotkeyString" : "CONTROLBAR:ConstructChinaInternetCenter"}, + {"IconName" : "PRCAirfield", "HotkeyString" : "CONTROLBAR:ConstructChinaAirfield"}, + {"IconName" : "PRCPropagandaCenter", "HotkeyString" : "CONTROLBAR:ConstructChinaPropagandaCenter"}, + {"IconName" : "PRCSpeakerTower", "HotkeyString" : "CONTROLBAR:ConstructChinaSpeakerTower"}, + {"IconName" : "PRCNuclearMissileSilo", "HotkeyString" : "CONTROLBAR:ConstructChinaNuclearMissileLauncher"}, + {"IconName" : "PRCCommandCenter", "HotkeyString" : "CONTROLBAR:ConstructChinaCommandCenter"}, + {"IconName" : "DisarmMinesAtPosition", "HotkeyString" : "CONTROLBAR:DisarmMinesAtPosition"} + ] + ] + } + ], + "Aircrafts" : + [ + { + "Name" : "PRCMIG", + "IngameName" : "OBJECT:MIG", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AirGuard", "HotkeyString" : "CONTROLBAR:GuardFlyingUnitsOnly"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "PRCHelix", + "IngameName" : "OBJECT:Helix", + "KeyboardLayouts" : + [ + [ + {"IconName" : "PRCNapalmBomb", "HotkeyString" : "CONTROLBAR:UpgradeHelixNapalmBomb"}, + {"IconName" : "PRCDropNapalmBomb", "HotkeyString" : "CONTROLBAR:DropNapalmBomb"}, + {"IconName" : "PRCHelixBattleBunker", "HotkeyString" : "CONTROLBAR:UpgradeChinaHelixBattleBunker"}, + {"IconName" : "PRCHelixSpeakerTower", "HotkeyString" : "CONTROLBAR:UpgradeChinaHelixPropagandaTower"}, + {"IconName" : "PRCHelixGattlingCannon", "HotkeyString" : "CONTROLBAR:UpgradeChinaHelixGattlingCannon"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ] + }, + + { + "ShortName" : "GLA", + "DisplayName" : "GLA", + "DisplayNameDescription" : "Global Liberation Army", + + "Buildings" : + [ + { + "Name" : "GLASupplyStash", + "IngameName" : "OBJECT:SupplyStash", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAWorker", "HotkeyString" : "CONTROLBAR:ConstructGLAWorker"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLABarracks", + "IngameName" : "OBJECT:Barracks", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLARebel", "HotkeyString" : "CONTROLBAR:ConstructGLAInfantryRebel"}, + {"IconName" : "GLATerrorist", "HotkeyString" : "CONTROLBAR:ConstructGLAInfantryTerrorist"}, + {"IconName" : "GLAHijacker", "HotkeyString" : "CONTROLBAR:ConstructGLAInfantryHijacker"}, + {"IconName" : "GLASaboteur", "HotkeyString" : "CONTROLBAR:ConstructGLAInfantrySaboteur"}, + {"IconName" : "GLARPGTrooper", "HotkeyString" : "CONTROLBAR:ConstructGLAInfantryRPGTrooper"}, + {"IconName" : "GLAAngryMob", "HotkeyString" : "CONTROLBAR:ConstructGLAInfantryAngryMob"}, + {"IconName" : "GLAJarmenKell", "HotkeyString" : "CONTROLBAR:ConstructGLAInfantryJarmenKell"}, + {"IconName" : "GLABoobyTraps", "HotkeyString" : "CONTROLBAR:UpgradeGLABoobyTrap"}, + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:UpgradeGLARebelCaptureBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAStingerSite", + "IngameName" : "OBJECT:StingerSite", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLACamoNetting", "HotkeyString" : "CONTROLBAR:UpgradeGLACamoNetting"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLATunnelNetwork", + "IngameName" : "OBJECT:TunnelNetwork", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLACamoNetting", "HotkeyString" : "CONTROLBAR:UpgradeGLACamoNetting"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAArmsDealer", + "IngameName" : "OBJECT:ArmsDealer", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAScorpionTank", "HotkeyString" : "CONTROLBAR:ConstructGLATankScorpion"}, + {"IconName" : "GLARadarVan", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleRadarVan"}, + {"IconName" : "GLAToxinTractor", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleToxinTruck"}, + {"IconName" : "GLAMarauderTank", "HotkeyString" : "CONTROLBAR:ConstructGLATankMarauder"}, + {"IconName" : "GLAScudLauncher", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleScudLauncher"}, + {"IconName" : "GLACombatBike", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleCombatBike"}, + {"IconName" : "GLATechnical", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleTechnical"}, + {"IconName" : "GLAQuadCannon", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleQuadCannon"}, + {"IconName" : "GLARocketBuggy", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleRocketBuggy"}, + {"IconName" : "GLABombTruck", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleBombTruck"}, + {"IconName" : "GLABattleBus", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleBattleBus"}, + {"IconName" : "GLAScorpionRocket", "HotkeyString" : "CONTROLBAR:UpgradeGLAScorpionRocket"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLADemoTrap", + "IngameName" : "OBJECT:DemoTrap", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAProximityFuse", "HotkeyString" : "CONTROLBAR:ProximityFuse"}, + {"IconName" : "GLAManualControl", "HotkeyString" : "CONTROLBAR:ManualControl"}, + {"IconName" : "GLADetonate", "HotkeyString" : "CONTROLBAR:Detonate"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAPalace", + "IngameName" : "OBJECT:Palace", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAFortifiedStructure", "HotkeyString" : "CONTROLBAR:UpgradeGLAFortifiedStructure"}, + {"IconName" : "GLACamouflage", "HotkeyString" : "CONTROLBAR:UpgradeGLACamouflage"}, + {"IconName" : "GLAAnthraxBeta", "HotkeyString" : "CONTROLBAR:UpgradeGLAAnthraxBeta"}, + {"IconName" : "GLAAnthraxShells", "HotkeyString" : "CONTROLBAR:UpgradeGLAToxinShells"}, + {"IconName" : "GLAArmTheMob", "HotkeyString" : "CONTROLBAR:UpgradeGLAArmTheMob"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLABlackMarket", + "IngameName" : "OBJECT:BlackMarket", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAAPBullets", "HotkeyString" : "CONTROLBAR:UpgradeGLAAPBullets"}, + {"IconName" : "GLAJunkRepair", "HotkeyString" : "CONTROLBAR:UpgradeGLAJunkRepair"}, + {"IconName" : "GLARadarVanScan", "HotkeyString" : "CONTROLBAR:UpgradeGLARadarVanScan"}, + {"IconName" : "GLAAPRockets", "HotkeyString" : "CONTROLBAR:UpgradeGLAAPRockets"}, + {"IconName" : "GLARocketBuggyAmmo", "HotkeyString" : "CONTROLBAR:UpgradeGLABuggyAmmo"}, + {"IconName" : "GLAWorkerShoes", "HotkeyString" : "CONTROLBAR:UpgradeGLAWorkerShoes"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAScudStorm", + "IngameName" : "OBJECT:ScudStorm", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAScudStormLaunch", "HotkeyString" : "CONTROLBAR:ScudStorm"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAFakeCommandCenter", + "IngameName" : "OBJECT:CommandCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLABecomeReal", "HotkeyString" : "CONTROLBAR:BecomeRealGLACommandCenter"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateFakeBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAFakeBarracks", + "IngameName" : "OBJECT:Barracks", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLABecomeReal", "HotkeyString" : "CONTROLBAR:BecomeRealGLABarracks"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateFakeBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAFakeSupplyStash", + "IngameName" : "OBJECT:SupplyStash", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLABecomeReal", "HotkeyString" : "CONTROLBAR:BecomeRealGLASupplyStash"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateFakeBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAFakeArmsDealer", + "IngameName" : "OBJECT:ArmsDealer", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLABecomeReal", "HotkeyString" : "CONTROLBAR:BecomeRealGLAArmsDealer"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateFakeBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAFakeBlackMarket", + "IngameName" : "OBJECT:BlackMarket", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLABecomeReal", "HotkeyString" : "CONTROLBAR:BecomeRealGLABlackMarket"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateFakeBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLACommandCenter", + "IngameName" : "OBJECT:CommandCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAWorker", "HotkeyString" : "CONTROLBAR:ConstructGLAWorker"}, + {"IconName" : "GLAGPSScrambler", "HotkeyString" : "CONTROLBAR:GPSScrambler"}, + {"IconName" : "GLARebelAmbush", "HotkeyString" : "CONTROLBAR:Ambush"}, + {"IconName" : "GLAAnthraxBomb", "HotkeyString" : "CONTROLBAR:AnthraxBomb"}, + {"IconName" : "GLASneakAttack", "HotkeyString" : "CONTROLBAR:SneakAttack"}, + {"IconName" : "EmergencyRepair", "HotkeyString" : "CONTROLBAR:EmergencyRepair"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + } + ], + "Infantry" : + [ + { + "Name" : "GLARebel", + "IngameName" : "OBJECT:Rebel", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLABoobyTraps", "HotkeyString" : "CONTROLBAR:BoobyTrapAttack"}, + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:CaptureBuilding"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLARPGTrooper", + "IngameName" : "OBJECT:TunnelDefender", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLATerrorist", + "IngameName" : "OBJECT:Terrorist", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:CarBomb"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAJarmenKell", + "IngameName" : "OBJECT:JarmenKell", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAPilotKill", "HotkeyString" : "CONTROLBAR:SniperAttack"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLASaboteur", + "IngameName" : "OBJECT:Saboteur", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLASaboteur", "HotkeyString" : "CONTROLBAR:SabotageBuilding"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAAngryMob", + "IngameName" : "OBJECT:AngryMob", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAHijacker", + "IngameName" : "OBJECT:Hijacker", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAHijack", "HotkeyString" : "CONTROLBAR:Hijack"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAWorker", + "IngameName" : "OBJECT:Worker", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLASupplyStash", "HotkeyString" : "CONTROLBAR:ConstructGLASupplyStash"}, + {"IconName" : "GLABarracks", "HotkeyString" : "CONTROLBAR:ConstructGLABarracks"}, + {"IconName" : "GLAStingerSite", "HotkeyString" : "CONTROLBAR:ConstructGLAStingerSite"}, + {"IconName" : "GLATunnelNetwork", "HotkeyString" : "CONTROLBAR:ConstructGLATunnelNetwork"}, + {"IconName" : "GLAArmsDealer", "HotkeyString" : "CONTROLBAR:ConstructGLAArmsDealer"}, + {"IconName" : "GLADemoTrap", "HotkeyString" : "CONTROLBAR:ConstructGLADemoTrap"}, + {"IconName" : "GLAPalace", "HotkeyString" : "CONTROLBAR:ConstructGLAPalace"}, + {"IconName" : "GLABlackMarket", "HotkeyString" : "CONTROLBAR:ConstructGLABlackMarket"}, + {"IconName" : "GLAScudStorm", "HotkeyString" : "CONTROLBAR:ConstructGLAScudStorm"}, + {"IconName" : "GLACommandCenter", "HotkeyString" : "CONTROLBAR:ConstructGLACommandCenter"}, + {"IconName" : "GLAFakeCommandSet", "HotkeyString" : "CONTROLBAR:UpgradeGLAWorkerFakeCommandSet"}, + {"IconName" : "DisarmMinesAtPosition", "HotkeyString" : "CONTROLBAR:DisarmMinesAtPosition"} + ], + [ + {"IconName" : "GLAFakeCommandCenter", "HotkeyString" : "CONTROLBAR:ConstructFakeGLACommandCenter"}, + {"IconName" : "GLAFakeSupplyStash", "HotkeyString" : "CONTROLBAR:ConstructFakeGLASupplyStash"}, + {"IconName" : "GLAFakeBlackMarket", "HotkeyString" : "CONTROLBAR:ConstructFakeGLABlackMarket"}, + {"IconName" : "GLAFakeBarracks", "HotkeyString" : "CONTROLBAR:ConstructFakeGLABarracks"}, + {"IconName" : "GLAFakeArmsDealer", "HotkeyString" : "CONTROLBAR:ConstructFakeGLAArmsDealer"}, + {"IconName" : "GLAFakeCommandSet", "HotkeyString" : "CONTROLBAR:UpgradeGLAWorkerRealCommandSet"} + ] + ] + } + ], + "Vehicles" : + [ + { + "Name" : "GLAScorpionTank", + "IngameName" : "OBJECT:Scorpion", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLATechnical", + "IngameName" : "OBJECT:Technical", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAQuadCannon", + "IngameName" : "OBJECT:QuadCannon", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLARocketBuggy", + "IngameName" : "OBJECT:RocketBuggy", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAMarauderTank", + "IngameName" : "OBJECT:Marauder", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLACombatBike", + "IngameName" : "OBJECT:CombatBike", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLABattleBus", + "IngameName" : "OBJECT:BattleBus", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAToxinTractor", + "IngameName" : "OBJECT:ToxinTruck", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAContaminate", "HotkeyString" : "CONTROLBAR:Contaminate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAScudLauncher", + "IngameName" : "OBJECT:ScudLauncher", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAExplosiveWarhead", "HotkeyString" : "CONTROLBAR:ExplosiveWarhead"}, + {"IconName" : "GLAAnthraxWarhead", "HotkeyString" : "CONTROLBAR:AnthraxWarhead"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLABombTruck", + "IngameName" : "OBJECT:BombTruck", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLADisguise", "HotkeyString" : "CONTROLBAR:DisguiseAsVehicle"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateBombTruck"}, + {"IconName" : "GLABioBomb", "HotkeyString" : "CONTROLBAR:UpgradeGLABombTruckBioBomb"}, + {"IconName" : "GLAHighExplosiveBomb", "HotkeyString" : "CONTROLBAR:UpgradeGLABombTruckHighExplosiveBomb"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLARadarVan", + "IngameName" : "OBJECT:RadarVan", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLARadarVanScan", "HotkeyString" : "CONTROLBAR:RadarVanScan"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ], + "Aircrafts" : [] + }, + + { + "ShortName" : "TOX", + "DisplayName" : "TOXIC", + "DisplayNameDescription" : "Toxic Weapons General", + + "Buildings" : + [ + { + "Name" : "GLASupplyStash", + "IngameName" : "OBJECT:SupplyStash", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAWorker", "HotkeyString" : "CONTROLBAR:ConstructGLAWorker"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLABarracks", + "IngameName" : "OBJECT:Barracks", + "KeyboardLayouts" : + [ + [ + {"IconName" : "TOXRebel", "HotkeyString" : "CONTROLBAR:Chem_ConstructGLAInfantryRebel"}, + {"IconName" : "GLATerrorist", "HotkeyString" : "CONTROLBAR:Chem_ConstructGLAInfantryTerrorist"}, + {"IconName" : "GLARPGTrooper", "HotkeyString" : "CONTROLBAR:ConstructGLAInfantryRPGTrooper"}, + {"IconName" : "GLAAngryMob", "HotkeyString" : "CONTROLBAR:ConstructGLAInfantryAngryMob"}, + {"IconName" : "GLAJarmenKell", "HotkeyString" : "CONTROLBAR:ConstructGLAInfantryJarmenKell"}, + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:UpgradeGLARebelCaptureBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAStingerSite", + "IngameName" : "OBJECT:StingerSite", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLATunnelNetwork", + "IngameName" : "OBJECT:TunnelNetwork", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAArmsDealer", + "IngameName" : "OBJECT:ArmsDealer", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAScorpionTank", "HotkeyString" : "CONTROLBAR:ConstructGLATankScorpion"}, + {"IconName" : "GLARadarVan", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleRadarVan"}, + {"IconName" : "GLAToxinTractor", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleToxinTruck"}, + {"IconName" : "GLAMarauderTank", "HotkeyString" : "CONTROLBAR:ConstructGLATankMarauder"}, + {"IconName" : "GLAScudLauncher", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleScudLauncher"}, + {"IconName" : "GLACombatBike", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleCombatBike"}, + {"IconName" : "GLATechnical", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleTechnical"}, + {"IconName" : "GLAQuadCannon", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleQuadCannon"}, + {"IconName" : "GLARocketBuggy", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleRocketBuggy"}, + {"IconName" : "GLABombTruck", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleBombTruck"}, + {"IconName" : "GLABattleBus", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleBattleBus"}, + {"IconName" : "GLAScorpionRocket", "HotkeyString" : "CONTROLBAR:UpgradeGLAScorpionRocket"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLADemoTrap", + "IngameName" : "OBJECT:DemoTrap", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAProximityFuse", "HotkeyString" : "CONTROLBAR:ProximityFuse"}, + {"IconName" : "GLAManualControl", "HotkeyString" : "CONTROLBAR:ManualControl"}, + {"IconName" : "GLADetonate", "HotkeyString" : "CONTROLBAR:Detonate"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAPalace", + "IngameName" : "OBJECT:Palace", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAFortifiedStructure", "HotkeyString" : "CONTROLBAR:UpgradeGLAFortifiedStructure"}, + {"IconName" : "TOXAnthraxGamma", "HotkeyString" : "CONTROLBAR:UpgradeGLAAnthraxGamma"}, + {"IconName" : "GLAArmTheMob", "HotkeyString" : "CONTROLBAR:UpgradeGLAArmTheMob"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLABlackMarket", + "IngameName" : "OBJECT:BlackMarket", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAAPBullets", "HotkeyString" : "CONTROLBAR:UpgradeGLAAPBullets"}, + {"IconName" : "GLAJunkRepair", "HotkeyString" : "CONTROLBAR:UpgradeGLAJunkRepair"}, + {"IconName" : "GLARadarVanScan", "HotkeyString" : "CONTROLBAR:UpgradeGLARadarVanScan"}, + {"IconName" : "GLAAPRockets", "HotkeyString" : "CONTROLBAR:UpgradeGLAAPRockets"}, + {"IconName" : "GLARocketBuggyAmmo", "HotkeyString" : "CONTROLBAR:UpgradeGLABuggyAmmo"}, + {"IconName" : "GLAWorkerShoes", "HotkeyString" : "CONTROLBAR:UpgradeGLAWorkerShoes"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAScudStorm", + "IngameName" : "OBJECT:ScudStorm", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAScudStormLaunch", "HotkeyString" : "CONTROLBAR:ScudStorm"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAFakeCommandCenter", + "IngameName" : "OBJECT:CommandCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLABecomeReal", "HotkeyString" : "CONTROLBAR:BecomeRealGLACommandCenter"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateFakeBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAFakeBarracks", + "IngameName" : "OBJECT:Barracks", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLABecomeReal", "HotkeyString" : "CONTROLBAR:BecomeRealGLABarracks"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateFakeBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAFakeSupplyStash", + "IngameName" : "OBJECT:SupplyStash", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLABecomeReal", "HotkeyString" : "CONTROLBAR:BecomeRealGLASupplyStash"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateFakeBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAFakeArmsDealer", + "IngameName" : "OBJECT:ArmsDealer", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLABecomeReal", "HotkeyString" : "CONTROLBAR:BecomeRealGLAArmsDealer"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateFakeBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAFakeBlackMarket", + "IngameName" : "OBJECT:BlackMarket", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLABecomeReal", "HotkeyString" : "CONTROLBAR:BecomeRealGLABlackMarket"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateFakeBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLACommandCenter", + "IngameName" : "OBJECT:CommandCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAWorker", "HotkeyString" : "CONTROLBAR:ConstructGLAWorker"}, + {"IconName" : "GLARebelAmbush", "HotkeyString" : "CONTROLBAR:Ambush"}, + {"IconName" : "GLAAnthraxBomb", "HotkeyString" : "CONTROLBAR:AnthraxBomb"}, + {"IconName" : "GLASneakAttack", "HotkeyString" : "CONTROLBAR:SneakAttack"}, + {"IconName" : "EmergencyRepair", "HotkeyString" : "CONTROLBAR:EmergencyRepair"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + } + ], + "Infantry" : + [ + { + "Name" : "TOXRebel", + "IngameName" : "OBJECT:Chem_Rebel", + "KeyboardLayouts" : + [ + [ + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:CaptureBuilding"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLARPGTrooper", + "IngameName" : "OBJECT:TunnelDefender", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLATerrorist", + "IngameName" : "OBJECT:Chem_Terrorist", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:CarBomb"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAJarmenKell", + "IngameName" : "OBJECT:JarmenKell", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAPilotKill", "HotkeyString" : "CONTROLBAR:SniperAttack"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAAngryMob", + "IngameName" : "OBJECT:AngryMob", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAWorker", + "IngameName" : "OBJECT:Worker", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLASupplyStash", "HotkeyString" : "CONTROLBAR:ConstructGLASupplyStash"}, + {"IconName" : "GLABarracks", "HotkeyString" : "CONTROLBAR:ConstructGLABarracks"}, + {"IconName" : "GLAStingerSite", "HotkeyString" : "CONTROLBAR:ConstructGLAStingerSite"}, + {"IconName" : "TOXTunnelNetwork", "HotkeyString" : "CONTROLBAR:Chem_ConstructGLATunnelNetwork"}, + {"IconName" : "GLAArmsDealer", "HotkeyString" : "CONTROLBAR:ConstructGLAArmsDealer"}, + {"IconName" : "GLADemoTrap", "HotkeyString" : "CONTROLBAR:ConstructGLADemoTrap"}, + {"IconName" : "GLAPalace", "HotkeyString" : "CONTROLBAR:ConstructGLAPalace"}, + {"IconName" : "GLABlackMarket", "HotkeyString" : "CONTROLBAR:ConstructGLABlackMarket"}, + {"IconName" : "GLAScudStorm", "HotkeyString" : "CONTROLBAR:ConstructGLAScudStorm"}, + {"IconName" : "GLACommandCenter", "HotkeyString" : "CONTROLBAR:ConstructGLACommandCenter"}, + {"IconName" : "GLAFakeCommandSet", "HotkeyString" : "CONTROLBAR:UpgradeGLAWorkerFakeCommandSet"}, + {"IconName" : "DisarmMinesAtPosition", "HotkeyString" : "CONTROLBAR:DisarmMinesAtPosition"} + ], + [ + {"IconName" : "GLAFakeCommandCenter", "HotkeyString" : "CONTROLBAR:ConstructFakeGLACommandCenter"}, + {"IconName" : "GLAFakeSupplyStash", "HotkeyString" : "CONTROLBAR:ConstructFakeGLASupplyStash"}, + {"IconName" : "GLAFakeBlackMarket", "HotkeyString" : "CONTROLBAR:ConstructFakeGLABlackMarket"}, + {"IconName" : "GLAFakeBarracks", "HotkeyString" : "CONTROLBAR:ConstructFakeGLABarracks"}, + {"IconName" : "GLAFakeArmsDealer", "HotkeyString" : "CONTROLBAR:ConstructFakeGLAArmsDealer"}, + {"IconName" : "GLAFakeCommandSet", "HotkeyString" : "CONTROLBAR:UpgradeGLAWorkerRealCommandSet"} + ] + ] + } + ], + "Vehicles" : + [ + { + "Name" : "GLAScorpionTank", + "IngameName" : "OBJECT:Scorpion", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLATechnical", + "IngameName" : "OBJECT:Technical", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAQuadCannon", + "IngameName" : "OBJECT:QuadCannon", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLARocketBuggy", + "IngameName" : "OBJECT:RocketBuggy", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAMarauderTank", + "IngameName" : "OBJECT:Marauder", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLACombatBike", + "IngameName" : "OBJECT:CombatBike", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLABattleBus", + "IngameName" : "OBJECT:BattleBus", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAToxinTractor", + "IngameName" : "OBJECT:ToxinTruck", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAContaminate", "HotkeyString" : "CONTROLBAR:Contaminate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAScudLauncher", + "IngameName" : "OBJECT:ScudLauncher", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLABombTruck", + "IngameName" : "OBJECT:BombTruck", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLADisguise", "HotkeyString" : "CONTROLBAR:DisguiseAsVehicle"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateBombTruck"}, + {"IconName" : "GLABioBomb", "HotkeyString" : "CONTROLBAR:UpgradeGLABombTruckBioBomb"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLARadarVan", + "IngameName" : "OBJECT:RadarVan", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLARadarVanScan", "HotkeyString" : "CONTROLBAR:RadarVanScan"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ], + "Aircrafts" : [] + }, + + { + "ShortName" : "STL", + "DisplayName" : "STEALTH", + "DisplayNameDescription" : "Stealth General", + + "Buildings" : + [ + { + "Name" : "GLASupplyStash", + "IngameName" : "OBJECT:SupplyStash", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAWorker", "HotkeyString" : "CONTROLBAR:ConstructGLAWorker"}, + {"IconName" : "GLACamoNetting", "HotkeyString" : "CONTROLBAR:UpgradeGLACamoNetting"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLABarracks", + "IngameName" : "OBJECT:Barracks", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLARebel", "HotkeyString" : "CONTROLBAR:ConstructGLAInfantryRebel"}, + {"IconName" : "GLATerrorist", "HotkeyString" : "CONTROLBAR:ConstructGLAInfantryTerrorist"}, + {"IconName" : "GLAHijacker", "HotkeyString" : "CONTROLBAR:ConstructGLAInfantryHijacker"}, + {"IconName" : "GLASaboteur", "HotkeyString" : "CONTROLBAR:ConstructGLAInfantrySaboteur"}, + {"IconName" : "GLARPGTrooper", "HotkeyString" : "CONTROLBAR:ConstructGLAInfantryRPGTrooper"}, + {"IconName" : "GLAAngryMob", "HotkeyString" : "CONTROLBAR:ConstructGLAInfantryAngryMob"}, + {"IconName" : "GLAJarmenKell", "HotkeyString" : "CONTROLBAR:ConstructGLAInfantryJarmenKell"}, + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:UpgradeGLARebelCaptureBuilding"}, + {"IconName" : "GLACamoNetting", "HotkeyString" : "CONTROLBAR:UpgradeGLACamoNetting"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAStingerSite", + "IngameName" : "OBJECT:StingerSite", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLATunnelNetwork", + "IngameName" : "OBJECT:TunnelNetwork", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAArmsDealer", + "IngameName" : "OBJECT:ArmsDealer", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLARadarVan", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleRadarVan"}, + {"IconName" : "GLAToxinTractor", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleToxinTruck"}, + {"IconName" : "GLACombatBike", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleCombatBike"}, + {"IconName" : "GLATechnical", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleTechnical"}, + {"IconName" : "GLAQuadCannon", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleQuadCannon"}, + {"IconName" : "GLARocketBuggy", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleRocketBuggy"}, + {"IconName" : "GLABombTruck", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleBombTruck"}, + {"IconName" : "GLABattleBus", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleBattleBus"}, + {"IconName" : "GLACamoNetting", "HotkeyString" : "CONTROLBAR:UpgradeGLACamoNetting"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLADemoTrap", + "IngameName" : "OBJECT:DemoTrap", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAProximityFuse", "HotkeyString" : "CONTROLBAR:ProximityFuse"}, + {"IconName" : "GLAManualControl", "HotkeyString" : "CONTROLBAR:ManualControl"}, + {"IconName" : "GLADetonate", "HotkeyString" : "CONTROLBAR:Detonate"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAPalace", + "IngameName" : "OBJECT:Palace", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAFortifiedStructure", "HotkeyString" : "CONTROLBAR:UpgradeGLAFortifiedStructure"}, + {"IconName" : "GLAAnthraxBeta", "HotkeyString" : "CONTROLBAR:UpgradeGLAAnthraxBeta"}, + {"IconName" : "GLAArmTheMob", "HotkeyString" : "CONTROLBAR:UpgradeGLAArmTheMob"}, + {"IconName" : "GLACamoNetting", "HotkeyString" : "CONTROLBAR:UpgradeGLACamoNetting"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLABlackMarket", + "IngameName" : "OBJECT:BlackMarket", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAAPBullets", "HotkeyString" : "CONTROLBAR:UpgradeGLAAPBullets"}, + {"IconName" : "GLAJunkRepair", "HotkeyString" : "CONTROLBAR:UpgradeGLAJunkRepair"}, + {"IconName" : "GLARadarVanScan", "HotkeyString" : "CONTROLBAR:UpgradeGLARadarVanScan"}, + {"IconName" : "GLAAPRockets", "HotkeyString" : "CONTROLBAR:UpgradeGLAAPRockets"}, + {"IconName" : "GLARocketBuggyAmmo", "HotkeyString" : "CONTROLBAR:UpgradeGLABuggyAmmo"}, + {"IconName" : "GLAWorkerShoes", "HotkeyString" : "CONTROLBAR:UpgradeGLAWorkerShoes"}, + {"IconName" : "GLACamoNetting", "HotkeyString" : "CONTROLBAR:UpgradeGLACamoNetting"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAScudStorm", + "IngameName" : "OBJECT:ScudStorm", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAScudStormLaunch", "HotkeyString" : "CONTROLBAR:ScudStorm"}, + {"IconName" : "GLACamoNetting", "HotkeyString" : "CONTROLBAR:UpgradeGLACamoNetting"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAFakeCommandCenter", + "IngameName" : "OBJECT:CommandCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLABecomeReal", "HotkeyString" : "CONTROLBAR:BecomeRealGLACommandCenter"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateFakeBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAFakeBarracks", + "IngameName" : "OBJECT:Barracks", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLABecomeReal", "HotkeyString" : "CONTROLBAR:BecomeRealGLABarracks"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateFakeBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAFakeSupplyStash", + "IngameName" : "OBJECT:SupplyStash", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLABecomeReal", "HotkeyString" : "CONTROLBAR:BecomeRealGLASupplyStash"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateFakeBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAFakeArmsDealer", + "IngameName" : "OBJECT:ArmsDealer", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLABecomeReal", "HotkeyString" : "CONTROLBAR:BecomeRealGLAArmsDealer"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateFakeBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAFakeBlackMarket", + "IngameName" : "OBJECT:BlackMarket", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLABecomeReal", "HotkeyString" : "CONTROLBAR:BecomeRealGLABlackMarket"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateFakeBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLACommandCenter", + "IngameName" : "OBJECT:CommandCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAWorker", "HotkeyString" : "CONTROLBAR:ConstructGLAWorker"}, + {"IconName" : "GLAGPSScrambler", "HotkeyString" : "CONTROLBAR:GPSScrambler"}, + {"IconName" : "GLARebelAmbush", "HotkeyString" : "CONTROLBAR:Ambush"}, + {"IconName" : "GLAAnthraxBomb", "HotkeyString" : "CONTROLBAR:AnthraxBomb"}, + {"IconName" : "GLASneakAttack", "HotkeyString" : "CONTROLBAR:SneakAttack"}, + {"IconName" : "EmergencyRepair", "HotkeyString" : "CONTROLBAR:EmergencyRepair"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + } + ], + "Infantry" : + [ + { + "Name" : "GLARebel", + "IngameName" : "OBJECT:Rebel", + "KeyboardLayouts" : + [ + [ + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:CaptureBuilding"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLARPGTrooper", + "IngameName" : "OBJECT:TunnelDefender", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLATerrorist", + "IngameName" : "OBJECT:Terrorist", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:CarBomb"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAJarmenKell", + "IngameName" : "OBJECT:JarmenKell", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAPilotKill", "HotkeyString" : "CONTROLBAR:SniperAttack"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLASaboteur", + "IngameName" : "OBJECT:Saboteur", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLASaboteur", "HotkeyString" : "CONTROLBAR:SabotageBuilding"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAAngryMob", + "IngameName" : "OBJECT:AngryMob", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAHijacker", + "IngameName" : "OBJECT:Hijacker", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAHijack", "HotkeyString" : "CONTROLBAR:Hijack"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAWorker", + "IngameName" : "OBJECT:Worker", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLASupplyStash", "HotkeyString" : "CONTROLBAR:ConstructGLASupplyStash"}, + {"IconName" : "GLABarracks", "HotkeyString" : "CONTROLBAR:ConstructGLABarracks"}, + {"IconName" : "GLAStingerSite", "HotkeyString" : "CONTROLBAR:ConstructGLAStingerSite"}, + {"IconName" : "GLATunnelNetwork", "HotkeyString" : "CONTROLBAR:ConstructGLATunnelNetwork"}, + {"IconName" : "GLAArmsDealer", "HotkeyString" : "CONTROLBAR:ConstructGLAArmsDealer"}, + {"IconName" : "GLADemoTrap", "HotkeyString" : "CONTROLBAR:ConstructGLADemoTrap"}, + {"IconName" : "GLAPalace", "HotkeyString" : "CONTROLBAR:ConstructGLAPalace"}, + {"IconName" : "GLABlackMarket", "HotkeyString" : "CONTROLBAR:ConstructGLABlackMarket"}, + {"IconName" : "GLAScudStorm", "HotkeyString" : "CONTROLBAR:ConstructGLAScudStorm"}, + {"IconName" : "GLACommandCenter", "HotkeyString" : "CONTROLBAR:ConstructGLACommandCenter"}, + {"IconName" : "GLAFakeCommandSet", "HotkeyString" : "CONTROLBAR:UpgradeGLAWorkerFakeCommandSet"}, + {"IconName" : "DisarmMinesAtPosition", "HotkeyString" : "CONTROLBAR:DisarmMinesAtPosition"} + ], + [ + {"IconName" : "GLAFakeCommandCenter", "HotkeyString" : "CONTROLBAR:ConstructFakeGLACommandCenter"}, + {"IconName" : "GLAFakeSupplyStash", "HotkeyString" : "CONTROLBAR:ConstructFakeGLASupplyStash"}, + {"IconName" : "GLAFakeBlackMarket", "HotkeyString" : "CONTROLBAR:ConstructFakeGLABlackMarket"}, + {"IconName" : "GLAFakeBarracks", "HotkeyString" : "CONTROLBAR:ConstructFakeGLABarracks"}, + {"IconName" : "GLAFakeArmsDealer", "HotkeyString" : "CONTROLBAR:ConstructFakeGLAArmsDealer"}, + {"IconName" : "GLAFakeCommandSet", "HotkeyString" : "CONTROLBAR:UpgradeGLAWorkerRealCommandSet"} + ] + ] + } + ], + "Vehicles" : + [ + { + "Name" : "GLATechnical", + "IngameName" : "OBJECT:Technical", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAQuadCannon", + "IngameName" : "OBJECT:QuadCannon", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLARocketBuggy", + "IngameName" : "OBJECT:RocketBuggy", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLACombatBike", + "IngameName" : "OBJECT:CombatBike", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLABattleBus", + "IngameName" : "OBJECT:BattleBus", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAToxinTractor", + "IngameName" : "OBJECT:ToxinTruck", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAContaminate", "HotkeyString" : "CONTROLBAR:Contaminate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLABombTruck", + "IngameName" : "OBJECT:BombTruck", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLADisguise", "HotkeyString" : "CONTROLBAR:DisguiseAsVehicle"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateBombTruck"}, + {"IconName" : "GLABioBomb", "HotkeyString" : "CONTROLBAR:UpgradeGLABombTruckBioBomb"}, + {"IconName" : "GLAHighExplosiveBomb", "HotkeyString" : "CONTROLBAR:UpgradeGLABombTruckHighExplosiveBomb"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLARadarVan", + "IngameName" : "OBJECT:RadarVan", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLARadarVanScan", "HotkeyString" : "CONTROLBAR:RadarVanScan"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ], + "Aircrafts" : [] + }, + + { + "ShortName" : "DML", + "DisplayName" : "DEMO", + "DisplayNameDescription" : "Demolition General", + + "Buildings" : + [ + { + "Name" : "GLASupplyStash", + "IngameName" : "OBJECT:SupplyStash", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAWorker", "HotkeyString" : "CONTROLBAR:ConstructGLAWorker"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLABarracks", + "IngameName" : "OBJECT:Barracks", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLARebel", "HotkeyString" : "CONTROLBAR:ConstructGLAInfantryRebel"}, + {"IconName" : "GLATerrorist", "HotkeyString" : "CONTROLBAR:ConstructGLAInfantryTerrorist"}, + {"IconName" : "GLARPGTrooper", "HotkeyString" : "CONTROLBAR:ConstructGLAInfantryRPGTrooper"}, + {"IconName" : "GLAAngryMob", "HotkeyString" : "CONTROLBAR:ConstructGLAInfantryAngryMob"}, + {"IconName" : "GLAJarmenKell", "HotkeyString" : "CONTROLBAR:ConstructGLAInfantryJarmenKell"}, + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:UpgradeGLARebelCaptureBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAStingerSite", + "IngameName" : "OBJECT:StingerSite", + "KeyboardLayouts" : + [ + [ + {"IconName" : "DMLSuicide", "HotkeyString" : "CONTROLBAR:SuicideAttack"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLATunnelNetwork", + "IngameName" : "OBJECT:TunnelNetwork", + "KeyboardLayouts" : + [ + [ + {"IconName" : "DMLSuicide", "HotkeyString" : "CONTROLBAR:SuicideAttack"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAArmsDealer", + "IngameName" : "OBJECT:ArmsDealer", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAScorpionTank", "HotkeyString" : "CONTROLBAR:ConstructGLATankScorpion"}, + {"IconName" : "GLARadarVan", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleRadarVan"}, + {"IconName" : "GLAToxinTractor", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleToxinTruck"}, + {"IconName" : "GLAMarauderTank", "HotkeyString" : "CONTROLBAR:ConstructGLATankMarauder"}, + {"IconName" : "GLAScudLauncher", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleScudLauncher"}, + {"IconName" : "GLACombatBike", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleCombatBike"}, + {"IconName" : "GLATechnical", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleTechnical"}, + {"IconName" : "GLAQuadCannon", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleQuadCannon"}, + {"IconName" : "GLARocketBuggy", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleRocketBuggy"}, + {"IconName" : "GLABombTruck", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleBombTruck"}, + {"IconName" : "GLABattleBus", "HotkeyString" : "CONTROLBAR:ConstructGLAVehicleBattleBus"}, + {"IconName" : "GLAScorpionRocket", "HotkeyString" : "CONTROLBAR:UpgradeGLAScorpionRocket"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "DMLAdvancedDemoTrap", + "IngameName" : "OBJECT:Demo_DemoTrap", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAProximityFuse", "HotkeyString" : "CONTROLBAR:ProximityFuse"}, + {"IconName" : "GLAManualControl", "HotkeyString" : "CONTROLBAR:ManualControl"}, + {"IconName" : "GLADetonate", "HotkeyString" : "CONTROLBAR:Detonate"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAPalace", + "IngameName" : "OBJECT:Palace", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAFortifiedStructure", "HotkeyString" : "CONTROLBAR:UpgradeGLAFortifiedStructure"}, + {"IconName" : "DMLSuicide", "HotkeyString" : "CONTROLBAR:UpgradeSuicideBomb"}, + {"IconName" : "GLAArmTheMob", "HotkeyString" : "CONTROLBAR:UpgradeGLAArmTheMob"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLABlackMarket", + "IngameName" : "OBJECT:BlackMarket", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAAPBullets", "HotkeyString" : "CONTROLBAR:UpgradeGLAAPBullets"}, + {"IconName" : "GLAJunkRepair", "HotkeyString" : "CONTROLBAR:UpgradeGLAJunkRepair"}, + {"IconName" : "GLARadarVanScan", "HotkeyString" : "CONTROLBAR:UpgradeGLARadarVanScan"}, + {"IconName" : "GLAAPRockets", "HotkeyString" : "CONTROLBAR:UpgradeGLAAPRockets"}, + {"IconName" : "GLARocketBuggyAmmo", "HotkeyString" : "CONTROLBAR:UpgradeGLABuggyAmmo"}, + {"IconName" : "GLAWorkerShoes", "HotkeyString" : "CONTROLBAR:UpgradeGLAWorkerShoes"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAScudStorm", + "IngameName" : "OBJECT:ScudStorm", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAScudStormLaunch", "HotkeyString" : "CONTROLBAR:ScudStorm"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAFakeCommandCenter", + "IngameName" : "OBJECT:CommandCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLABecomeReal", "HotkeyString" : "CONTROLBAR:BecomeRealGLACommandCenter"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateFakeBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAFakeBarracks", + "IngameName" : "OBJECT:Barracks", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLABecomeReal", "HotkeyString" : "CONTROLBAR:BecomeRealGLABarracks"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateFakeBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAFakeSupplyStash", + "IngameName" : "OBJECT:SupplyStash", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLABecomeReal", "HotkeyString" : "CONTROLBAR:BecomeRealGLASupplyStash"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateFakeBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAFakeArmsDealer", + "IngameName" : "OBJECT:ArmsDealer", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLABecomeReal", "HotkeyString" : "CONTROLBAR:BecomeRealGLAArmsDealer"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateFakeBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLAFakeBlackMarket", + "IngameName" : "OBJECT:BlackMarket", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLABecomeReal", "HotkeyString" : "CONTROLBAR:BecomeRealGLABlackMarket"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateFakeBuilding"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + }, + + { + "Name" : "GLACommandCenter", + "IngameName" : "OBJECT:CommandCenter", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAWorker", "HotkeyString" : "CONTROLBAR:ConstructGLAWorker"}, + {"IconName" : "GLARebelAmbush", "HotkeyString" : "CONTROLBAR:Ambush"}, + {"IconName" : "GLAAnthraxBomb", "HotkeyString" : "CONTROLBAR:AnthraxBomb"}, + {"IconName" : "GLASneakAttack", "HotkeyString" : "CONTROLBAR:SneakAttack"}, + {"IconName" : "EmergencyRepair", "HotkeyString" : "CONTROLBAR:EmergencyRepair"}, + {"IconName" : "Sell", "HotkeyString" : "CONTROLBAR:Sell"} + ] + ] + } + ], + "Infantry" : + [ + { + "Name" : "GLARebel", + "IngameName" : "OBJECT:Rebel", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLABoobyTraps", "HotkeyString" : "CONTROLBAR:BoobyTrapAttack"}, + {"IconName" : "DMLSuicide", "HotkeyString" : "CONTROLBAR:SuicideAttack"}, + {"IconName" : "CaptureBuilding", "HotkeyString" : "CONTROLBAR:CaptureBuilding"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLARPGTrooper", + "IngameName" : "OBJECT:TunnelDefender", + "KeyboardLayouts" : + [ + [ + {"IconName" : "DMLSuicide", "HotkeyString" : "CONTROLBAR:SuicideAttack"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLATerrorist", + "IngameName" : "OBJECT:Terrorist", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:CarBomb"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAJarmenKell", + "IngameName" : "OBJECT:JarmenKell", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLAPilotKill", "HotkeyString" : "CONTROLBAR:SniperAttack"}, + {"IconName" : "DMLRemoteDemoCharge", "HotkeyString" : "CONTROLBAR:RemoteDemoCharge"}, + {"IconName" : "DMLTimedDemoCharge", "HotkeyString" : "CONTROLBAR:TimedDemoCharge"}, + {"IconName" : "DMLDetonateCharges", "HotkeyString" : "CONTROLBAR:DetonateCharges"}, + {"IconName" : "DMLSuicide", "HotkeyString" : "CONTROLBAR:SuicideAttack"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAAngryMob", + "IngameName" : "OBJECT:AngryMob", + "KeyboardLayouts" : + [ + [ + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAWorker", + "IngameName" : "OBJECT:Worker", + "KeyboardLayouts" : + [ + [ + {"IconName" : "DMLSuicide", "HotkeyString" : "CONTROLBAR:SuicideAttack"}, + {"IconName" : "GLASupplyStash", "HotkeyString" : "CONTROLBAR:ConstructGLASupplyStash"}, + {"IconName" : "GLABarracks", "HotkeyString" : "CONTROLBAR:ConstructGLABarracks"}, + {"IconName" : "GLAStingerSite", "HotkeyString" : "CONTROLBAR:ConstructGLAStingerSite"}, + {"IconName" : "GLATunnelNetwork", "HotkeyString" : "CONTROLBAR:ConstructGLATunnelNetwork"}, + {"IconName" : "GLAArmsDealer", "HotkeyString" : "CONTROLBAR:ConstructGLAArmsDealer"}, + {"IconName" : "DMLAdvancedDemoTrap", "HotkeyString" : "CONTROLBAR:Demo_ConstructGLADemoTrap"}, + {"IconName" : "GLAPalace", "HotkeyString" : "CONTROLBAR:ConstructGLAPalace"}, + {"IconName" : "GLABlackMarket", "HotkeyString" : "CONTROLBAR:ConstructGLABlackMarket"}, + {"IconName" : "GLAScudStorm", "HotkeyString" : "CONTROLBAR:ConstructGLAScudStorm"}, + {"IconName" : "GLACommandCenter", "HotkeyString" : "CONTROLBAR:ConstructGLACommandCenter"}, + {"IconName" : "GLAFakeCommandSet", "HotkeyString" : "CONTROLBAR:UpgradeGLAWorkerFakeCommandSet"}, + {"IconName" : "DisarmMinesAtPosition", "HotkeyString" : "CONTROLBAR:DisarmMinesAtPosition"} + ], + [ + {"IconName" : "DMLSuicide", "HotkeyString" : "CONTROLBAR:SuicideAttack"}, + {"IconName" : "GLAFakeCommandCenter", "HotkeyString" : "CONTROLBAR:ConstructFakeGLACommandCenter"}, + {"IconName" : "GLAFakeSupplyStash", "HotkeyString" : "CONTROLBAR:ConstructFakeGLASupplyStash"}, + {"IconName" : "GLAFakeBlackMarket", "HotkeyString" : "CONTROLBAR:ConstructFakeGLABlackMarket"}, + {"IconName" : "GLAFakeBarracks", "HotkeyString" : "CONTROLBAR:ConstructFakeGLABarracks"}, + {"IconName" : "GLAFakeArmsDealer", "HotkeyString" : "CONTROLBAR:ConstructFakeGLAArmsDealer"}, + {"IconName" : "GLAFakeCommandSet", "HotkeyString" : "CONTROLBAR:UpgradeGLAWorkerRealCommandSet"} + ] + ] + } + ], + "Vehicles" : + [ + { + "Name" : "GLAScorpionTank", + "IngameName" : "OBJECT:Scorpion", + "KeyboardLayouts" : + [ + [ + {"IconName" : "DMLSuicide", "HotkeyString" : "CONTROLBAR:SuicideAttack"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLATechnical", + "IngameName" : "OBJECT:Technical", + "KeyboardLayouts" : + [ + [ + {"IconName" : "DMLSuicide", "HotkeyString" : "CONTROLBAR:SuicideAttack"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAQuadCannon", + "IngameName" : "OBJECT:QuadCannon", + "KeyboardLayouts" : + [ + [ + {"IconName" : "DMLSuicide", "HotkeyString" : "CONTROLBAR:SuicideAttack"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLARocketBuggy", + "IngameName" : "OBJECT:RocketBuggy", + "KeyboardLayouts" : + [ + [ + {"IconName" : "DMLSuicide", "HotkeyString" : "CONTROLBAR:SuicideAttack"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAMarauderTank", + "IngameName" : "OBJECT:Marauder", + "KeyboardLayouts" : + [ + [ + {"IconName" : "DMLSuicide", "HotkeyString" : "CONTROLBAR:SuicideAttack"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLACombatBike", + "IngameName" : "OBJECT:CombatBike", + "KeyboardLayouts" : + [ + [ + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLABattleBus", + "IngameName" : "OBJECT:BattleBus", + "KeyboardLayouts" : + [ + [ + {"IconName" : "DMLSuicide", "HotkeyString" : "CONTROLBAR:SuicideAttack"}, + {"IconName" : "Evacuate", "HotkeyString" : "CONTROLBAR:Evacuate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAToxinTractor", + "IngameName" : "OBJECT:ToxinTruck", + "KeyboardLayouts" : + [ + [ + {"IconName" : "DMLSuicide", "HotkeyString" : "CONTROLBAR:SuicideAttack"}, + {"IconName" : "GLAContaminate", "HotkeyString" : "CONTROLBAR:Contaminate"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLAScudLauncher", + "IngameName" : "OBJECT:ScudLauncher", + "KeyboardLayouts" : + [ + [ + {"IconName" : "DMLSuicide", "HotkeyString" : "CONTROLBAR:SuicideAttack"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLABombTruck", + "IngameName" : "OBJECT:BombTruck", + "KeyboardLayouts" : + [ + [ + {"IconName" : "GLADisguise", "HotkeyString" : "CONTROLBAR:DisguiseAsVehicle"}, + {"IconName" : "GLACarBomb", "HotkeyString" : "CONTROLBAR:DetonateBombTruck"}, + {"IconName" : "GLAHighExplosiveBomb", "HotkeyString" : "CONTROLBAR:UpgradeGLABombTruckHighExplosiveBomb"}, + {"IconName" : "AttackMove", "HotkeyString" : "CONTROLBAR:AttackMove"}, + {"IconName" : "Guard", "HotkeyString" : "CONTROLBAR:Guard"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + }, + + { + "Name" : "GLARadarVan", + "IngameName" : "OBJECT:RadarVan", + "KeyboardLayouts" : + [ + [ + {"IconName" : "DMLSuicide", "HotkeyString" : "CONTROLBAR:SuicideAttack"}, + {"IconName" : "GLARadarVanScan", "HotkeyString" : "CONTROLBAR:RadarVanScan"}, + {"IconName" : "Stop", "HotkeyString" : "CONTROLBAR:Stop"} + ] + ] + } + ], + "Aircrafts" : [] + } + ] +} diff --git a/src/Resources/Profiles/GeneralsZH/Theme/EditorBackground.webp b/src/Resources/Profiles/GeneralsZH/Theme/EditorBackground.webp new file mode 100644 index 0000000..026405b Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Theme/EditorBackground.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Theme/EditorBackgroundWithPicture.webp b/src/Resources/Profiles/GeneralsZH/Theme/EditorBackgroundWithPicture.webp new file mode 100644 index 0000000..adef8a7 Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Theme/EditorBackgroundWithPicture.webp differ diff --git a/src/Resources/Profiles/GeneralsZH/Theme/StartMenuBackground.webp b/src/Resources/Profiles/GeneralsZH/Theme/StartMenuBackground.webp new file mode 100644 index 0000000..92ec16a Binary files /dev/null and b/src/Resources/Profiles/GeneralsZH/Theme/StartMenuBackground.webp differ diff --git a/src/Resources/Theme/Styles.css b/src/Resources/Profiles/GeneralsZH/Theme/Styles.css similarity index 86% rename from src/Resources/Theme/Styles.css rename to src/Resources/Profiles/GeneralsZH/Theme/Styles.css index 5b9ff1e..b94f86b 100644 --- a/src/Resources/Theme/Styles.css +++ b/src/Resources/Profiles/GeneralsZH/Theme/Styles.css @@ -7,13 +7,6 @@ /* 6. https://stackoverflow.com/questions/9536725/css-multiple-attribute-selectors/9536746#9536746 */ /* Global style setting */ -* -{ - font-family: Calibri; - font-size: 10pt; - color: black; -} - QComboBox { width: 70px; @@ -52,8 +45,8 @@ QComboBox::drop-down padding-left: 10px; } -QComboBox::down-arrow { image: url(Resources/Theme/ScrollArrowDown.webp); } -QComboBox::up-arrow { image: url(Resources/Theme/ScrollArrowUp.webp); } +QComboBox::down-arrow { image: url(Resources/QtSources/ScrollArrowDown.webp); } +QComboBox::up-arrow { image: url(Resources/QtSources/ScrollArrowUp.webp); } /* ↓ Doesn't work */ QComboBox#cmbLanguage { height: 25px; } @@ -111,6 +104,31 @@ QLabel, QRadioButton, QCheckBox { color: white; } QLineEdit#txtActionName { font-style: italic; } +SelectProfileWindow QPushButton#btnGenerals, +SelectProfileWindow QPushButton#btnGeneralsZH +{ + font-size: 18pt; + min-width: 230px; + max-width: 230px; + min-height: 110px; + max-height: 110px; + margin-top: 2px; + margin-right: 40px; + margin-bottom: 2px; + margin-left: 40px; +} + +SelectProfileWindow QPushButton#btnCustomProfile +{ + font-size: 16pt; + min-height: 64px; + max-height: 64px; + margin-top: 2px; + margin-right: 40px; + margin-bottom: 2px; + margin-left: 40px; +} + QPushButton#btnReview { padding-top: 2px; @@ -130,16 +148,16 @@ QPushButton#btnOk } /* Start widgets and SettingsWindow style settings */ -LoadFromTheFileWindow, SetUpWindowsWrapper, LoadFromTheGameWindow, SettingsWindow, QWidget#pSettingsWindow +LoadFromTheFileWindow, SetUpWindowsWrapper, LoadFromTheGameWindow, SettingsWindow, SelectProfileWindow, QWidget#pSettingsWindow { - border-image: url(Resources/Theme/StartMenuBackground.webp) 0 0 0 0 stretch stretch; + border-image: url(Resources/Profiles/GeneralsZH/Theme/StartMenuBackground.webp) 0 0 0 0 stretch stretch; background-color: black; } /* Editor window style settings */ EditorWindow { - border-image: url(Resources/Theme/EditorBackground.webp) 0 0 0 0 stretch stretch; + border-image: url(Resources/Profiles/GeneralsZH/Theme/EditorBackground.webp) 0 0 0 0 stretch stretch; background-color: black; } @@ -195,8 +213,8 @@ QTreeWidget::item QTreeWidget::item:selected, QTreeWidget::item:selected:!active { background-color: #3543e7; color: white; } -QTreeWidget::branch:open:has-children { background-image: url(Resources/Theme/DropArrowDown.webp); } -QTreeWidget::branch:closed:has-children { background-image: url(Resources/Theme/DropArrowRight.webp); } +QTreeWidget::branch:open:has-children { background-image: url(Resources/QtSources/DropArrowDown.webp); } +QTreeWidget::branch:closed:has-children { background-image: url(Resources/QtSources/DropArrowRight.webp); } QTabWidget QWidget { @@ -273,7 +291,7 @@ QScrollBar::add-page, QScrollBar::sub-page QDialog { - border-image: url(Resources/Theme/StartMenuBackground.webp) 0 0 0 0 stretch stretch; + border-image: url(Resources/Profiles/GeneralsZH/Theme/StartMenuBackground.webp) 0 0 0 0 stretch stretch; background-color: black; } diff --git a/src/Resources/Profiles/ROTR/TechTree.json b/src/Resources/Profiles/ROTR/TechTree.json new file mode 100644 index 0000000..4f12efe --- /dev/null +++ b/src/Resources/Profiles/ROTR/TechTree.json @@ -0,0 +1,208 @@ +{ + "TechTree": [ + { + "ShortName": "RTA", + "DisplayName": "US EXPEDITION", + "DisplayNameDescription": "ROTR-style expeditionary test side", + "Buildings": [ + {"Name": "USACommandCenter", "IngameName": "OBJECT:CommandCenter", "KeyboardLayouts": [[{"IconName": "USADozer", "HotkeyString": "CONTROLBAR:ConstructAmericaDozer"}, {"IconName": "USASpySattelite", "HotkeyString": "CONTROLBAR:SpySatellite"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "USARanger", "IngameName": "OBJECT:Ranger", "KeyboardLayouts": [[{"IconName": "CaptureBuilding", "HotkeyString": "CONTROLBAR:CaptureBuilding"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "USAHumvee", "IngameName": "OBJECT:Humvee", "KeyboardLayouts": [[{"IconName": "USABattleDrone", "HotkeyString": "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "USARaptor", "IngameName": "OBJECT:Raptor", "KeyboardLayouts": [[{"IconName": "AirGuard", "HotkeyString": "CONTROLBAR:GuardFlyingUnitsOnly"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "RTB", + "DisplayName": "US ARMOR", + "DisplayNameDescription": "ROTR-style armored test side", + "Buildings": [ + {"Name": "USAWarFactory", "IngameName": "OBJECT:WarFactory", "KeyboardLayouts": [[{"IconName": "USACrusaderTank", "HotkeyString": "CONTROLBAR:ConstructAmericaTankCrusader"}, {"IconName": "USAPaladinTank", "HotkeyString": "CONTROLBAR:ConstructAmericaTankPaladin"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "USAMissileDefender", "IngameName": "OBJECT:MissileTeam", "KeyboardLayouts": [[{"IconName": "USALaserLock", "HotkeyString": "CONTROLBAR:LaserMissileAttack"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "USACrusaderTank", "IngameName": "OBJECT:Crusader", "KeyboardLayouts": [[{"IconName": "USABattleDrone", "HotkeyString": "CONTROLBAR:ConstructAmericaVehicleBattleDrone"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "USAComanche", "IngameName": "OBJECT:Comanche", "KeyboardLayouts": [[{"IconName": "USAFireRocketPods", "HotkeyString": "CONTROLBAR:FireRocketPods"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "RTC", + "DisplayName": "EUROPEAN COMMAND", + "DisplayNameDescription": "ROTR-style coalition test side", + "Buildings": [ + {"Name": "USAStrategyCenter", "IngameName": "OBJECT:StrategyCenter", "KeyboardLayouts": [[{"IconName": "USAHoldTheLine", "HotkeyString": "CONTROLBAR:InitiateBattlePlanHoldTheLine"}, {"IconName": "USASearchAndDestroy", "HotkeyString": "CONTROLBAR:InitiateBattlePlanSearchAndDestroy"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "USAPathfinder", "IngameName": "OBJECT:Pathfinder", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "USAAvenger", "IngameName": "OBJECT:Avenger", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "USAStealthFighter", "IngameName": "OBJECT:StealthFighter", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "RTD", + "DisplayName": "EUROPEAN AIR", + "DisplayNameDescription": "ROTR-style air defense test side", + "Buildings": [ + {"Name": "USAAirfield", "IngameName": "OBJECT:Airfield", "KeyboardLayouts": [[{"IconName": "USARaptor", "HotkeyString": "CONTROLBAR:ConstructAmericaJetRaptor"}, {"IconName": "USAStealthFighter", "HotkeyString": "CONTROLBAR:ConstructAmericaJetStealthFighter"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "USARanger", "IngameName": "OBJECT:Ranger", "KeyboardLayouts": [[{"IconName": "USAFlashbangs", "HotkeyString": "CONTROLBAR:FlashBangGrenadeMode"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "USATomahawkLauncher", "IngameName": "OBJECT:Tomahawk", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "USAAurora", "IngameName": "OBJECT:Aurora", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "RTE", + "DisplayName": "RUSSIAN GUARD", + "DisplayNameDescription": "ROTR-style heavy guard test side", + "Buildings": [ + {"Name": "PRCCommandCenter", "IngameName": "OBJECT:CommandCenter", "KeyboardLayouts": [[{"IconName": "PRCDozer", "HotkeyString": "CONTROLBAR:ConstructChinaDozer"}, {"IconName": "PRCArtilleryBarrage", "HotkeyString": "CONTROLBAR:ArtilleryBarrage"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "PRCRedGuard", "IngameName": "OBJECT:Redguard", "KeyboardLayouts": [[{"IconName": "CaptureBuilding", "HotkeyString": "CONTROLBAR:CaptureBuilding"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "PRCOverlordTank", "IngameName": "OBJECT:Overlord", "KeyboardLayouts": [[{"IconName": "PRCOverlordBattleBunker", "HotkeyString": "CONTROLBAR:UpgradeChinaOverlordBattleBunker"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "PRCMIG", "IngameName": "OBJECT:MIG", "KeyboardLayouts": [[{"IconName": "AirGuard", "HotkeyString": "CONTROLBAR:GuardFlyingUnitsOnly"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "RTF", + "DisplayName": "RUSSIAN ARTILLERY", + "DisplayNameDescription": "ROTR-style siege test side", + "Buildings": [ + {"Name": "PRCWarFactory", "IngameName": "OBJECT:WarFactory", "KeyboardLayouts": [[{"IconName": "PRCInfernoCannon", "HotkeyString": "CONTROLBAR:ConstructChinaVehicleInfernoCannon"}, {"IconName": "PRCNukeCannon", "HotkeyString": "CONTROLBAR:ConstructChinaVehicleNukeLauncher"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "PRCTankHunter", "IngameName": "OBJECT:TANKHUNTER", "KeyboardLayouts": [[{"IconName": "PRCTNTAttack", "HotkeyString": "CONTROLBAR:TNTAttack"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "PRCInfernoCannon", "IngameName": "OBJECT:InfernoCannon", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "PRCHelix", "IngameName": "OBJECT:Helix", "KeyboardLayouts": [[{"IconName": "PRCHelixGattlingCannon", "HotkeyString": "CONTROLBAR:UpgradeChinaHelixGattlingCannon"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "RTG", + "DisplayName": "CHINA RED BANNER", + "DisplayNameDescription": "ROTR-style command test side", + "Buildings": [ + {"Name": "PRCPropagandaCenter", "IngameName": "OBJECT:PropagandaCenter", "KeyboardLayouts": [[{"IconName": "PRCFrenzy", "HotkeyString": "CONTROLBAR:Frenzy"}, {"IconName": "PRCSubliminalMessaging", "HotkeyString": "CONTROLBAR:UpgradeChinaSubliminalMessaging"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "INFMiniGunner", "IngameName": "OBJECT:Redguard", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "PRCGattlingTank", "IngameName": "OBJECT:GattlingTank", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "PRCHelix", "IngameName": "OBJECT:Helix", "KeyboardLayouts": [[{"IconName": "Evacuate", "HotkeyString": "CONTROLBAR:Evacuate"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "RTH", + "DisplayName": "CHINA NUCLEAR", + "DisplayNameDescription": "ROTR-style reactor test side", + "Buildings": [ + {"Name": "PRCNuclearMissileSilo", "IngameName": "OBJECT:NeutronMissile", "KeyboardLayouts": [[{"IconName": "PRCNuclearMissile", "HotkeyString": "CONTROLBAR:NeutronMissile"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "PRCHacker", "IngameName": "OBJECT:Hacker", "KeyboardLayouts": [[{"IconName": "PRCHackInternet", "HotkeyString": "CONTROLBAR:InternetHack"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "PRCNukeCannon", "IngameName": "OBJECT:NukeLauncher", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "PRCMIG", "IngameName": "OBJECT:MIG", "KeyboardLayouts": [[{"IconName": "NUKTacticalNukeMig", "HotkeyString": "CONTROLBAR:UpgradeChinaTacticalNukeMig"}, {"IconName": "AirGuard", "HotkeyString": "CONTROLBAR:GuardFlyingUnitsOnly"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "RTI", + "DisplayName": "GLA NETWORK", + "DisplayNameDescription": "ROTR-style insurgent network test side", + "Buildings": [ + {"Name": "GLACommandCenter", "IngameName": "OBJECT:CommandCenter", "KeyboardLayouts": [[{"IconName": "GLAWorker", "HotkeyString": "CONTROLBAR:ConstructGLAWorker"}, {"IconName": "GLARebelAmbush", "HotkeyString": "CONTROLBAR:Ambush"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "GLARebel", "IngameName": "OBJECT:Rebel", "KeyboardLayouts": [[{"IconName": "CaptureBuilding", "HotkeyString": "CONTROLBAR:CaptureBuilding"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "GLATechnical", "IngameName": "OBJECT:Technical", "KeyboardLayouts": [[{"IconName": "Evacuate", "HotkeyString": "CONTROLBAR:Evacuate"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "USAComanche", "IngameName": "OBJECT:Comanche", "KeyboardLayouts": [[{"IconName": "AirGuard", "HotkeyString": "CONTROLBAR:GuardFlyingUnitsOnly"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "RTJ", + "DisplayName": "GLA TACTICAL", + "DisplayNameDescription": "ROTR-style mobile tactics test side", + "Buildings": [ + {"Name": "GLATunnelNetwork", "IngameName": "OBJECT:TunnelNetwork", "KeyboardLayouts": [[{"IconName": "Evacuate", "HotkeyString": "CONTROLBAR:Evacuate"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "GLARPGTrooper", "IngameName": "OBJECT:TunnelDefender", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "GLACombatBike", "IngameName": "OBJECT:CombatBike", "KeyboardLayouts": [[{"IconName": "Evacuate", "HotkeyString": "CONTROLBAR:Evacuate"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "PRCHelix", "IngameName": "OBJECT:Helix", "KeyboardLayouts": [[{"IconName": "Evacuate", "HotkeyString": "CONTROLBAR:Evacuate"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "RTK", + "DisplayName": "GLA SALVAGE", + "DisplayNameDescription": "ROTR-style salvage test side", + "Buildings": [ + {"Name": "GLABlackMarket", "IngameName": "OBJECT:BlackMarket", "KeyboardLayouts": [[{"IconName": "GLAJunkRepair", "HotkeyString": "CONTROLBAR:UpgradeGLAJunkRepair"}, {"IconName": "GLAWorkerShoes", "HotkeyString": "CONTROLBAR:UpgradeGLAWorkerShoes"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "GLAWorker", "IngameName": "OBJECT:Worker", "KeyboardLayouts": [[{"IconName": "GLASupplyStash", "HotkeyString": "CONTROLBAR:ConstructGLASupplyStash"}, {"IconName": "GLAArmsDealer", "HotkeyString": "CONTROLBAR:ConstructGLAArmsDealer"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "GLAMarauderTank", "IngameName": "OBJECT:Marauder", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "USAComanche", "IngameName": "OBJECT:Comanche", "KeyboardLayouts": [[{"IconName": "AirGuard", "HotkeyString": "CONTROLBAR:GuardFlyingUnitsOnly"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + }, + { + "ShortName": "RTL", + "DisplayName": "GLA TOXIN", + "DisplayNameDescription": "ROTR-style contamination test side", + "Buildings": [ + {"Name": "GLAScudStorm", "IngameName": "OBJECT:SCUDStorm", "KeyboardLayouts": [[{"IconName": "GLAScudStormLaunch", "HotkeyString": "CONTROLBAR:ScudStorm"}, {"IconName": "Sell", "HotkeyString": "CONTROLBAR:Sell"}]]} + ], + "Infantry": [ + {"Name": "TOXRebel", "IngameName": "OBJECT:Rebel", "KeyboardLayouts": [[{"IconName": "CaptureBuilding", "HotkeyString": "CONTROLBAR:CaptureBuilding"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Vehicles": [ + {"Name": "GLAToxinTractor", "IngameName": "OBJECT:ToxinTruck", "KeyboardLayouts": [[{"IconName": "GLAContaminate", "HotkeyString": "CONTROLBAR:Contaminate"}, {"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ], + "Aircrafts": [ + {"Name": "USAStealthFighter", "IngameName": "OBJECT:StealthFighter", "KeyboardLayouts": [[{"IconName": "AttackMove", "HotkeyString": "CONTROLBAR:AttackMove"}, {"IconName": "Guard", "HotkeyString": "CONTROLBAR:Guard"}, {"IconName": "Stop", "HotkeyString": "CONTROLBAR:Stop"}]]} + ] + } + ] +} diff --git a/src/Resources/Profiles/ROTR/Theme/Styles.css b/src/Resources/Profiles/ROTR/Theme/Styles.css new file mode 100644 index 0000000..8fca893 --- /dev/null +++ b/src/Resources/Profiles/ROTR/Theme/Styles.css @@ -0,0 +1,55 @@ +/* Lightweight non-ZH theme. */ +* +{ + font-family: Calibri; + font-size: 10pt; + color: white; +} + +LoadFromTheFileWindow, SetUpWindowsWrapper, LoadFromTheGameWindow, SettingsWindow, SelectProfileWindow, QWidget#pSettingsWindow, QDialog +{ + background-color: #121712; +} + +EditorWindow +{ + background-color: #121712; +} + +QPushButton, QComboBox +{ + font-weight: bold; + color: white; + background-color: #24503b; + border: 2px outset #b9d474; + border-radius: 3px; + padding: 8px; +} + +QPushButton:hover, QComboBox:hover +{ + background-color: #386f4d; + color: #f4e66d; +} + +QTreeWidget, QTabWidget, QScrollArea, QStatusBar +{ + background: rgba(0, 0, 0, 0.72); + border: 1px outset #d8e8a3; + border-radius: 3px; + color: white; +} + +QTreeWidget::item +{ + min-height: 40px; +} + +QTreeWidget::item:selected, QTreeWidget::item:selected:!active +{ + background-color: #386f4d; + color: white; +} + +QScrollArea#Keyboard QPushButton[status="good"] { background-color: #128d2d; } +QScrollArea#Keyboard QPushButton[status="bad"] { background-color: #cb0d27; } diff --git a/src/Resources/Profiles/Styles.css b/src/Resources/Profiles/Styles.css new file mode 100644 index 0000000..2f500c8 --- /dev/null +++ b/src/Resources/Profiles/Styles.css @@ -0,0 +1,15 @@ +/* See more about Qt .css support in documentation and questions: */ +/* 1. https://doc.qt.io/qt-5/stylesheet-syntax.html */ +/* 2. https://doc.qt.io/qt-5/stylesheet-reference.html */ +/* 3. https://doc.qt.io/qt-5/stylesheet-examples.html */ +/* 4. https://forum.qt.io/topic/40151/solved-scaled-background-image-using-stylesheet/3 */ +/* 5. https://www.qtcentre.org/threads/55152-Is-it-possible-to-logically-combine-dynamic-properties-in-a-Qt-Stylesheet */ +/* 6. https://stackoverflow.com/questions/9536725/css-multiple-attribute-selectors/9536746#9536746 */ + +/* Global style setting */ +* +{ + font-family: Calibri; + font-size: 10pt; + color: black; +} diff --git a/src/Resources/Theme/DropArrowDown.webp b/src/Resources/QtSources/DropArrowDown.webp similarity index 100% rename from src/Resources/Theme/DropArrowDown.webp rename to src/Resources/QtSources/DropArrowDown.webp diff --git a/src/Resources/Theme/DropArrowRight.webp b/src/Resources/QtSources/DropArrowRight.webp similarity index 100% rename from src/Resources/Theme/DropArrowRight.webp rename to src/Resources/QtSources/DropArrowRight.webp diff --git a/src/Resources/Theme/ScrollArrowDown.webp b/src/Resources/QtSources/ScrollArrowDown.webp similarity index 100% rename from src/Resources/Theme/ScrollArrowDown.webp rename to src/Resources/QtSources/ScrollArrowDown.webp diff --git a/src/Resources/Theme/ScrollArrowUp.webp b/src/Resources/QtSources/ScrollArrowUp.webp similarity index 100% rename from src/Resources/Theme/ScrollArrowUp.webp rename to src/Resources/QtSources/ScrollArrowUp.webp diff --git a/src/Resources/Settings.json b/src/Resources/Settings.json index f4c088a..2b47905 100644 --- a/src/Resources/Settings.json +++ b/src/Resources/Settings.json @@ -1,5 +1,4 @@ { - "Theme" : "Default", "DebugConsole" : false, "StatusBar" : true, "DiscordRPC" : true, diff --git a/src/Resources/Translations/ru.ts b/src/Resources/Translations/ru.ts index a91d340..9513ba9 100644 --- a/src/Resources/Translations/ru.ts +++ b/src/Resources/Translations/ru.ts @@ -216,17 +216,17 @@ QObject - + Error with CSF file Ошибка с CSF файлом - + Cannot process the empty file. Невозможно обработать пустой файл. - + Unable to find selected CSF file. Невозможно найти указанный CSF файл. @@ -235,179 +235,179 @@ - + Choosen CSF file doesn't have CONTROLBAR category. Make sure that you are load correct file. У выбранного CSF файла отсутствует категория CONTROLBAR. Проверьте, что вы загружаете правильный файл. - + Choosen CSF file doesn't have OBJECT category. Make sure that you are load correct file. У выбранного CSF файла отсутствует категория OBJECT. Проверьте, что вы загружаете правильный файл. - + Unable to find "generals.csf" file in "%1" folder. Невозможно найти "generals.csf" в папке "%1". - + Unable to find CSF file inside BIG archive "%1" Невозможно найти CSF файл внутри BIG архива "%1" - + Erroneous assignment - + USA США - + United Stated Of America Соединённые штаты Америки - + SUPERWEAPON СВГ - + Superweapons General Генерал супероружейных войск - + AIR ВВС - + Airforce General Генерал ВВС - + LASER ЛАЗЕРНИК - + Laser Weapons Generals Генерал лазерного вооружения - + CHINA КИТАЙ - + China Китай - + INFANTRY ПЕХОТНИК - + Infantry General Генерал пехотных войск - + NUKE ЯДЕРЩИК - + Nuke General Генерал ядерных войск - + TANK ТАНКОВИК - + Tank General Генерал танковых войск - + GLA МАО - + Global Liberation Army Мировая армия освобождения - + TOXIC ТОКС - + Toxic Weapons General Генерал биохимического оружия - + STEALTH СТЕЛС - + Stealth General Генерал маскировочных войск - + DEMO ПОДРЫВНИК - + Demolition General Генерал подрывных войск - + Buildings Здания - + You have assign as hotkey a non-ASCII character "%1". Make sure that you are using ASCII only symbols. - + You have assign as hotkey a forbidden character "%1". Make sure that you are using only allowed symbols. - + Infantry Пехота - + Vehicles Техника - + Aircrafts Авиация