|
@@ -43,6 +43,7 @@ StatusWidget::StatusWidget(QWidget *parent)
|
|
|
connect(&PatchInstaller::instance(), &PatchInstaller::videosDownloadProgressChanged, this, &StatusWidget::onPatchInstallerVideoProgressChanged);
|
|
|
|
|
|
connect(&PatchInstaller::instance(), &PatchInstaller::successfullyInitialized, this, &StatusWidget::showComponentsStatus);
|
|
|
+ connect(&PatchInstaller::instance(), &PatchInstaller::successfullyInitialized, this, [this](){updateButtonStatus();});
|
|
|
connect(&PatchInstaller::instance(), &PatchInstaller::deinitialized, this, &StatusWidget::hideComponentsStatus);
|
|
|
|
|
|
connect(&LegacyApplication::instance(), &LegacyApplication::ErrorStatusChanged, this, &StatusWidget::onErrorStatusChanged);
|
|
@@ -100,10 +101,10 @@ void StatusWidget::unsetToolTipMessage(StatusWidget::ToolTipState state)
|
|
|
|
|
|
ToolTipState showing_state = E_RANDOM;
|
|
|
|
|
|
- if (tooltip_state_ & E_INFO) {
|
|
|
- showing_state = E_INFO;
|
|
|
- } else if (tooltip_state_ & E_PROCESS) {
|
|
|
+ if (tooltip_state_ & E_PROCESS) {
|
|
|
showing_state = E_PROCESS;
|
|
|
+ } else if (tooltip_state_ & E_INFO) {
|
|
|
+ showing_state = E_INFO;
|
|
|
} else if (tooltip_state_ & E_HINT) {
|
|
|
showing_state = E_HINT;
|
|
|
}
|
|
@@ -129,8 +130,16 @@ void StatusWidget::onErrorStatusChanged(AppErrorStatus status)
|
|
|
ui->news_list->updateNewsWidget();
|
|
|
ui->server_status_widget->updateServerStatus();
|
|
|
ui->weekly_code_widget->updateWeeklyCodeWidget();
|
|
|
+ _need_to_repair_game_files = false;
|
|
|
+ updateButtonStatus();
|
|
|
return;
|
|
|
+ } else if (status == E_PATCHED_BY_OLD_LEGACY) {
|
|
|
+ _need_to_repair_game_files = true;
|
|
|
+ updateButtonStatus();
|
|
|
+ init_error_type_message = "Некоторые файлы игры несовместимы с этой версией Наследия.\nНажмите на кнопку \"Исправить\", чтобы запустить лаунчер игры, который автоматически скачает нужные файлы.";
|
|
|
} else if (status == E_WRONG_GAME_FOLDER) {
|
|
|
+ _need_to_repair_game_files = false;
|
|
|
+ updateButtonStatus();
|
|
|
const QString game_path = Settings::getValue("Lotro/game_path").toString();
|
|
|
if (game_path == "none") {
|
|
|
init_error_type_message = "Добро пожаловать в Наследие!\nПожалуйста, выберите папку с игрой.";
|
|
@@ -138,12 +147,20 @@ void StatusWidget::onErrorStatusChanged(AppErrorStatus status)
|
|
|
init_error_type_message = "Добро пожаловать в Наследие!\nНе найдены файлы игры, пожалуйста, выберите корректную папку с игрой!";
|
|
|
}
|
|
|
} else if (status == E_DAT_FILES_MISSING) {
|
|
|
+ _need_to_repair_game_files = true;
|
|
|
+ updateButtonStatus();
|
|
|
init_error_type_message = "Некоторые файлы данных игры не найдены.\nНажмите на кнопку \"Исправить\", чтобы запустить лаунчер игры, который автоматически перекачает нужные файлы.";
|
|
|
} else if (status == E_WRONG_FILE_PERMISSIONS) {
|
|
|
+ _need_to_repair_game_files = false;
|
|
|
+ updateButtonStatus();
|
|
|
init_error_type_message = "Недостаточно прав для изменения файлов игры.\nПопробуйте запустить Наследие от имени администратора.";
|
|
|
} else if (status == E_DAT_FILE_INCORRECT) {
|
|
|
+ _need_to_repair_game_files = true;
|
|
|
+ updateButtonStatus();
|
|
|
init_error_type_message = "Некоторые файлы игры несовместимы с этой версией Наследия.\nНажмите на кнопку \"Исправить\", чтобы запустить лаунчер игры, который автоматически скачает нужные файлы.";
|
|
|
} else if (status == E_NO_SERVER_CONNECTION) {
|
|
|
+ _need_to_repair_game_files = false;
|
|
|
+ updateButtonStatus();
|
|
|
init_error_type_message = "Нет связи с серверами Наследия.\nПожалуйста, проверьте соединение с Интернетом.";
|
|
|
}
|
|
|
setToolTipMessage(init_error_type_message, E_INFO);
|
|
@@ -264,6 +281,7 @@ void StatusWidget::onPatchInstallerFinished() {
|
|
|
all_patch_operations_finished_ = true;
|
|
|
ui->game_button->setEnabled(true);
|
|
|
unsetToolTipMessage(E_PROCESS);
|
|
|
+ updateButtonStatus();
|
|
|
}
|
|
|
|
|
|
void StatusWidget::onPatchInstallerProgressChanged(PatchInstaller::Status status) {
|
|
@@ -297,10 +315,11 @@ void StatusWidget::on_game_button_clicked()
|
|
|
{
|
|
|
if (_need_to_update || _need_to_install_patches) {
|
|
|
QMetaObject::invokeMethod(&PatchDownloader::instance(), &PatchDownloader::startPatchDownloaderChain, Qt::QueuedConnection);
|
|
|
- return;
|
|
|
+ } else {
|
|
|
+ QMetaObject::invokeMethod(&PatchInstaller::instance(), "startGame", Qt::QueuedConnection, Q_ARG(bool, _need_to_repair_game_files));
|
|
|
}
|
|
|
-
|
|
|
- QMetaObject::invokeMethod(&PatchInstaller::instance(), &PatchInstaller::startGame, Qt::QueuedConnection);
|
|
|
+ ui->game_button->setDisabled(true);
|
|
|
+ setToolTipMessage("Готовимся к запуску...", E_PROCESS);
|
|
|
}
|
|
|
|
|
|
void StatusWidget::createTooltipMessageWidget(QString tooltip_id)
|
|
@@ -373,16 +392,23 @@ void StatusWidget::onTranslationComponentsNoNeedToPatch() {
|
|
|
}
|
|
|
|
|
|
void StatusWidget::updateButtonStatus() {
|
|
|
- if (_need_to_update) {
|
|
|
- setToolTipMessage("Доступны обновления русификации.\nНажмите \"Обновить\", чтобы начать загрузку.", ToolTipState::E_INFO);
|
|
|
- ui->game_button->setText("ОБНОВИТЬ");
|
|
|
+ if (_need_to_repair_game_files) {
|
|
|
+ ui->game_button->setText("исправить");
|
|
|
ui->game_button->setStyleSheet("QPushButton#game_button { \n color: white;\n border-image: url(:/buttons/button_big_yellow.png);\n}\n\nQPushButton#game_button:hover {\n color: white;\n border-image: url(:/buttons/button_big_yellow_over.png);\n}\n\nQPushButton#game_button:pressed {\n color: white;\n border-image: url(:/buttons/button_big_yellow_pressed.png);\n}\n\nQPushButton#game_button:disabled {\n color: white;\n border-image: url(:/buttons/button_big_disabled.png);\n}\n");
|
|
|
} else if (_need_to_install_patches) {
|
|
|
setToolTipMessage("Выбранные компоненты требуют установки.\nНажмите \"Установить\", чтобы начать их установку.", ToolTipState::E_INFO);
|
|
|
ui->game_button->setText("установить");
|
|
|
ui->game_button->setStyleSheet("QPushButton#game_button { \n color: white;\n border-image: url(:/buttons/button_big_yellow.png);\n}\n\nQPushButton#game_button:hover {\n color: white;\n border-image: url(:/buttons/button_big_yellow_over.png);\n}\n\nQPushButton#game_button:pressed {\n color: white;\n border-image: url(:/buttons/button_big_yellow_pressed.png);\n}\n\nQPushButton#game_button:disabled {\n color: white;\n border-image: url(:/buttons/button_big_disabled.png);\n}\n");
|
|
|
+ } else if (_need_to_update) {
|
|
|
+ setToolTipMessage("Доступны обновления русификации.\nНажмите \"Обновить\", чтобы начать загрузку.", ToolTipState::E_INFO);
|
|
|
+ ui->game_button->setText("ОБНОВИТЬ");
|
|
|
+ ui->game_button->setStyleSheet("QPushButton#game_button { \n color: white;\n border-image: url(:/buttons/button_big_yellow.png);\n}\n\nQPushButton#game_button:hover {\n color: white;\n border-image: url(:/buttons/button_big_yellow_over.png);\n}\n\nQPushButton#game_button:pressed {\n color: white;\n border-image: url(:/buttons/button_big_yellow_pressed.png);\n}\n\nQPushButton#game_button:disabled {\n color: white;\n border-image: url(:/buttons/button_big_disabled.png);\n}\n");
|
|
|
} else {
|
|
|
- setToolTipMessage("Установлена последняя версия русификации.\nНажмите \"Играть\", чтобы запустить игру.", ToolTipState::E_INFO);
|
|
|
+ if (!PatchInstaller::instance().getPatchesInfo().has_no_patch_mark) {
|
|
|
+ setToolTipMessage("Установлена последняя версия русификации.\nНажмите \"Играть\", чтобы запустить игру.", ToolTipState::E_INFO);
|
|
|
+ } else {
|
|
|
+ setToolTipMessage("Добро пожаловать в Наследие!\nВыберите компоненты русификации для установки.", ToolTipState::E_INFO);
|
|
|
+ }
|
|
|
ui->game_button->setText("ИГРАТЬ");
|
|
|
ui->game_button->setStyleSheet("QPushButton#game_button { \n color: white;\n border-image: url(:/buttons/button_big_normal.png);\n}\n\nQPushButton#game_button:hover {\n color: white;\n border-image: url(:/buttons/button_big_over.png);\n}\n\nQPushButton#game_button:pressed {\n color: white;\n border-image: url(:/buttons/button_big_pressed.png);\n}\n\nQPushButton#game_button:disabled {\n color: white;\n border-image: url(:/buttons/button_big_disabled.png);\n}\n");
|
|
|
}
|