diff --git a/src/engine/client/library/clientUserInterface/src/shared/core/CuiMenuInfoTypes.cpp b/src/engine/client/library/clientUserInterface/src/shared/core/CuiMenuInfoTypes.cpp index d0158232c..a9c58b024 100644 --- a/src/engine/client/library/clientUserInterface/src/shared/core/CuiMenuInfoTypes.cpp +++ b/src/engine/client/library/clientUserInterface/src/shared/core/CuiMenuInfoTypes.cpp @@ -310,6 +310,7 @@ namespace Cui MAKE_ID(ITEM_EQUIP_APPEARANCE, none, item_equip_appearance, CursorPaths::equip); MAKE_ID(ITEM_UNEQUIP_APPEARANCE,none, item_unequip_appearance, CursorPaths::unequip); MAKE_ID(OPEN_STORYTELLER_RECIPE,none, open_storyteller_recipe, 0); + MAKE_ID(GOD_TELEPORT, none, god_teleport, 0); #undef MAKE_ID diff --git a/src/engine/client/library/clientUserInterface/src/shared/core/CuiMenuInfoTypes.h b/src/engine/client/library/clientUserInterface/src/shared/core/CuiMenuInfoTypes.h index 88e211920..e221a3411 100644 --- a/src/engine/client/library/clientUserInterface/src/shared/core/CuiMenuInfoTypes.h +++ b/src/engine/client/library/clientUserInterface/src/shared/core/CuiMenuInfoTypes.h @@ -168,6 +168,7 @@ namespace Cui ITEM_EQUIP_APPEARANCE, ITEM_UNEQUIP_APPEARANCE, OPEN_STORYTELLER_RECIPE, + GOD_TELEPORT, CLIENT_MENU_LAST, diff --git a/src/engine/client/library/clientUserInterface/src/shared/core/CuiRadialMenuManager.cpp b/src/engine/client/library/clientUserInterface/src/shared/core/CuiRadialMenuManager.cpp index f1f8610bb..7f3972769 100644 --- a/src/engine/client/library/clientUserInterface/src/shared/core/CuiRadialMenuManager.cpp +++ b/src/engine/client/library/clientUserInterface/src/shared/core/CuiRadialMenuManager.cpp @@ -1798,8 +1798,13 @@ bool CuiRadialMenuManager::populateMenu (CuiMenuInfoHelper & helper, const Objec helper.addRootMenu (ITEM_MAIL, got); } } - else + else { isUnownedWaypoint = true; + } + // allow players flagged as admin to radial and teleport directly to a waypoint + if (PlayerObject::isAdmin()) { + helper.addRootMenu(GOD_TELEPORT, got); + } } //allow bringing up ship page on ground only for players, in ground or space for gods @@ -1892,7 +1897,6 @@ void CuiRadialMenuManager::performDefaultAction (Object & object, bool allowOpen Cui::MenuInfoTypes::executeCommandForMenu(EXAMINE, object.getNetworkId(), 0); return; } - else if (omrd->isOutOfRange ()) { ClientObject const * const clientObject = object.asClientObject(); @@ -2407,6 +2411,11 @@ void CuiRadialMenuManager::performMenuAction (int sel, int index, bool serverNot } } } + else if (sel == GOD_TELEPORT) { + ClientWaypointObject const * const cwo = dynamic_cast(clientObject); + GenericValueTypeMessage > const msg("handleWaypointWarp", std::make_pair(cwo->getNetworkId(), "")); + GameNetwork::send(msg, true); + } else if (sel == SHIP_MANAGE_COMPONENTS) { if(clientObject)