add confirmation for clear license action

This commit is contained in:
Martin Michelsen
2024-03-08 00:02:50 -08:00
parent 8a7e19757a
commit 19e7f1c677
2 changed files with 31 additions and 3 deletions
+6
View File
@@ -14,6 +14,7 @@
namespace MenuID {
constexpr uint32_t MAIN = 0x11000011;
constexpr uint32_t CLEAR_LICENSE_CONFIRMATION = 0x11111111;
constexpr uint32_t INFORMATION = 0x22000022;
constexpr uint32_t LOBBY = 0x33000033;
constexpr uint32_t GAME = 0x44000044;
@@ -40,6 +41,11 @@ constexpr uint32_t DISCONNECT = 0x11888811;
constexpr uint32_t CLEAR_LICENSE = 0x11999911;
} // namespace MainMenuItemID
namespace ClearLicenseConfirmationMenuItemID {
constexpr uint32_t CANCEL = 0x01010101;
constexpr uint32_t CLEAR_LICENSE = 0x02020202;
} // namespace ClearLicenseConfirmationMenuItemID
namespace InformationMenuItemID {
constexpr uint32_t GO_BACK = 0x22FFFF22;
}
+25 -3
View File
@@ -2312,10 +2312,20 @@ static void on_10(shared_ptr<Client> c, uint16_t, uint32_t, string& data) {
c->should_disconnect = true;
break;
case MainMenuItemID::CLEAR_LICENSE:
send_command(c, 0x9A, 0x04);
c->should_disconnect = true;
case MainMenuItemID::CLEAR_LICENSE: {
auto s = c->require_server_state();
auto conf_menu = make_shared<Menu>(MenuID::CLEAR_LICENSE_CONFIRMATION, s->name);
conf_menu->items.emplace_back(ClearLicenseConfirmationMenuItemID::CANCEL, "Go back",
"Go back to the\nmain menu", 0);
conf_menu->items.emplace_back(ClearLicenseConfirmationMenuItemID::CLEAR_LICENSE, "Clear license",
"Disconnect with an\ninvalid license error\nso you can enter a\ndifferent serial\nnumber, access key,\nor password",
MenuItem::Flag::INVISIBLE_ON_DC_PROTOS | MenuItem::Flag::INVISIBLE_ON_PC_NTE | MenuItem::Flag::INVISIBLE_ON_XB | MenuItem::Flag::INVISIBLE_ON_BB);
send_menu(c, conf_menu);
send_ship_info(c, "Are you sure?");
break;
}
default:
send_message_box(c, "Incorrect menu item ID.");
@@ -2324,6 +2334,18 @@ static void on_10(shared_ptr<Client> c, uint16_t, uint32_t, string& data) {
break;
}
case MenuID::CLEAR_LICENSE_CONFIRMATION: {
switch (item_id) {
case ClearLicenseConfirmationMenuItemID::CANCEL:
send_main_menu(c);
break;
case ClearLicenseConfirmationMenuItemID::CLEAR_LICENSE:
send_command(c, 0x9A, 0x04);
c->should_disconnect = true;
}
break;
}
case MenuID::INFORMATION: {
if (item_id == InformationMenuItemID::GO_BACK) {
c->config.clear_flag(Client::Flag::IN_INFORMATION_MENU);