From 34ec8cfc4706b4e7fa2e26e9e894ad239021783b Mon Sep 17 00:00:00 2001 From: Junbo Liang <68558268+junbo75@users.noreply.github.com> Date: Tue, 19 Oct 2021 10:30:02 -0700 Subject: [PATCH] Add GameLift to the AWS menu (#4716) * Add GameLift to the AWS menu Signed-off-by: Junbo Liang --- .../Editor/Constants/AWSCoreEditorMenuLinks.h | 17 ++++++++++++++ .../Editor/Constants/AWSCoreEditorMenuNames.h | 10 +++++++++ .../Private/Editor/UI/AWSCoreEditorMenu.h | 1 + Gems/AWSCore/Code/Include/Public/AWSCoreBus.h | 1 + .../Source/Editor/UI/AWSCoreEditorMenu.cpp | 22 +++++++++++++++++++ .../Tests/Editor/UI/AWSCoreEditorMenuTest.cpp | 10 +++++++-- .../AWSGameLiftClientSystemComponent.cpp | 3 +++ 7 files changed, 62 insertions(+), 2 deletions(-) diff --git a/Gems/AWSCore/Code/Include/Private/Editor/Constants/AWSCoreEditorMenuLinks.h b/Gems/AWSCore/Code/Include/Private/Editor/Constants/AWSCoreEditorMenuLinks.h index c52377c50a..cd56978d16 100644 --- a/Gems/AWSCore/Code/Include/Private/Editor/Constants/AWSCoreEditorMenuLinks.h +++ b/Gems/AWSCore/Code/Include/Private/Editor/Constants/AWSCoreEditorMenuLinks.h @@ -51,4 +51,21 @@ namespace AWSCore "https://o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/advanced-topics/"; static constexpr const char AWSMetricsSettingsUrl[] = "https://o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/"; + + static constexpr const char AWSGameLiftGemOverviewUrl[] = + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-gamelift/"; + static constexpr const char AWSGameLiftGemSetupUrl[] = + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-gamelift/gem-setup/"; + static constexpr const char AWSGameLiftScriptingUrl[] = + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-gamelift/scripting/"; + static constexpr const char AWSGameLiftAPIReferenceUrl[] = + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-gamelift/cpp-api/"; + static constexpr const char AWSGameLiftAdvancedTopicsUrl[] = + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-gamelift/advanced-topics/"; + static constexpr const char AWSGameLiftLocalTestingUrl[] = + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-gamelift/local-testing/"; + static constexpr const char AWSGameLiftBuildPackagingUrl[] = + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-gamelift/build-packaging-for-windows/"; + static constexpr const char AWSGameLiftResourceManagementUrl[] = + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-gamelift/resource-management/"; } // namespace AWSCore diff --git a/Gems/AWSCore/Code/Include/Private/Editor/Constants/AWSCoreEditorMenuNames.h b/Gems/AWSCore/Code/Include/Private/Editor/Constants/AWSCoreEditorMenuNames.h index ce125ecbe6..10a61f91fd 100644 --- a/Gems/AWSCore/Code/Include/Private/Editor/Constants/AWSCoreEditorMenuNames.h +++ b/Gems/AWSCore/Code/Include/Private/Editor/Constants/AWSCoreEditorMenuNames.h @@ -38,4 +38,14 @@ namespace AWSCore static constexpr const char AWSMetricsAPIReferenceActionText[] = "API reference"; static constexpr const char AWSMetricsAdvancedTopicsActionText[] = "Advanced topics"; static constexpr const char AWSMetricsSettingsActionText[] = "Metrics settings"; + + static constexpr const char AWSGameLiftActionText[] = "GameLift Gem"; + static constexpr const char AWSGameLiftGemOverviewActionText[] = "Gem overview"; + static constexpr const char AWSGameLiftGemSetupActionText[] = "Setup"; + static constexpr const char AWSMGameLiftScriptingActionText[] = "Scripting reference"; + static constexpr const char AWSGameLiftAPIReferenceActionText[] = "API reference"; + static constexpr const char AWSGameLiftAdvancedTopicsActionText[] = "Advanced topics"; + static constexpr const char AWSGameLiftLocalTestingActionText[] = "Local testing"; + static constexpr const char AWSGameLiftBuildPackagingActionText[] = "Build packaging (Windows)"; + static constexpr const char AWSGameLiftResourceManagementActionText[] = "Resource Management"; } // namespace AWSCore diff --git a/Gems/AWSCore/Code/Include/Private/Editor/UI/AWSCoreEditorMenu.h b/Gems/AWSCore/Code/Include/Private/Editor/UI/AWSCoreEditorMenu.h index 62f91d36ef..33ec0c6d27 100644 --- a/Gems/AWSCore/Code/Include/Private/Editor/UI/AWSCoreEditorMenu.h +++ b/Gems/AWSCore/Code/Include/Private/Editor/UI/AWSCoreEditorMenu.h @@ -48,6 +48,7 @@ namespace AWSCore // AWSCoreEditorRequestBus interface implementation void SetAWSClientAuthEnabled() override; void SetAWSMetricsEnabled() override; + void SetAWSGameLiftEnabled() override; QMenu* SetAWSFeatureSubMenu(const AZStd::string& menuText); diff --git a/Gems/AWSCore/Code/Include/Public/AWSCoreBus.h b/Gems/AWSCore/Code/Include/Public/AWSCoreBus.h index 824aa2aebb..e46e90e0a6 100644 --- a/Gems/AWSCore/Code/Include/Public/AWSCoreBus.h +++ b/Gems/AWSCore/Code/Include/Public/AWSCoreBus.h @@ -53,6 +53,7 @@ namespace AWSCore public: virtual void SetAWSClientAuthEnabled() = 0; virtual void SetAWSMetricsEnabled() = 0; + virtual void SetAWSGameLiftEnabled() = 0; ////////////////////////////////////////////////////////////////////////// // EBusTraits overrides diff --git a/Gems/AWSCore/Code/Source/Editor/UI/AWSCoreEditorMenu.cpp b/Gems/AWSCore/Code/Source/Editor/UI/AWSCoreEditorMenu.cpp index 6391dd94ee..e397b8642c 100644 --- a/Gems/AWSCore/Code/Source/Editor/UI/AWSCoreEditorMenu.cpp +++ b/Gems/AWSCore/Code/Source/Editor/UI/AWSCoreEditorMenu.cpp @@ -156,6 +156,11 @@ namespace AWSCore metrics->setIcon(QIcon(QString(":/Notifications/download.svg"))); metrics->setDisabled(true); this->addAction(metrics); + + QAction* gamelift = new QAction(QObject::tr(AWSGameLiftActionText)); + gamelift->setIcon(QIcon(QString(":/Notifications/download.svg"))); + gamelift->setDisabled(true); + this->addAction(gamelift); } void AWSCoreEditorMenu::SetAWSClientAuthEnabled() @@ -181,6 +186,23 @@ namespace AWSCore AddSpaceForIcon(subMenu); } + void AWSCoreEditorMenu::SetAWSGameLiftEnabled() + { + // TODO: instead of creating submenu in core editor, aws feature gem should return submenu component directly + QMenu* subMenu = SetAWSFeatureSubMenu(AWSGameLiftActionText); + + subMenu->addAction(AddExternalLinkAction(AWSGameLiftGemOverviewActionText, AWSGameLiftGemOverviewUrl, ":/Notifications/link.svg")); + subMenu->addAction(AddExternalLinkAction(AWSGameLiftGemSetupActionText, AWSGameLiftGemSetupUrl, ":/Notifications/link.svg")); + subMenu->addAction(AddExternalLinkAction(AWSMGameLiftScriptingActionText, AWSGameLiftScriptingUrl, ":/Notifications/link.svg")); + subMenu->addAction(AddExternalLinkAction(AWSGameLiftAPIReferenceActionText, AWSGameLiftAPIReferenceUrl, ":/Notifications/link.svg")); + subMenu->addAction(AddExternalLinkAction(AWSGameLiftAdvancedTopicsActionText, AWSGameLiftAdvancedTopicsUrl, ":/Notifications/link.svg")); + subMenu->addAction(AddExternalLinkAction(AWSGameLiftLocalTestingActionText, AWSGameLiftLocalTestingUrl, ":/Notifications/link.svg")); + subMenu->addAction(AddExternalLinkAction(AWSGameLiftBuildPackagingActionText, AWSGameLiftBuildPackagingUrl, ":/Notifications/link.svg")); + subMenu->addAction(AddExternalLinkAction(AWSGameLiftResourceManagementActionText, AWSGameLiftResourceManagementUrl, ":/Notifications/link.svg")); + + AddSpaceForIcon(subMenu); + } + void AWSCoreEditorMenu::SetAWSMetricsEnabled() { // TODO: instead of creating submenu in core editor, aws feature gem should return submenu component directly diff --git a/Gems/AWSCore/Code/Tests/Editor/UI/AWSCoreEditorMenuTest.cpp b/Gems/AWSCore/Code/Tests/Editor/UI/AWSCoreEditorMenuTest.cpp index e9453a4a0a..0f643f3cc8 100644 --- a/Gems/AWSCore/Code/Tests/Editor/UI/AWSCoreEditorMenuTest.cpp +++ b/Gems/AWSCore/Code/Tests/Editor/UI/AWSCoreEditorMenuTest.cpp @@ -21,8 +21,8 @@ using namespace AWSCore; -static constexpr const int ExpectedActionNumOnWindowsPlatform = 8; -static constexpr const int ExpectedActionNumOnOtherPlatform = 6; +static constexpr const int ExpectedActionNumOnWindowsPlatform = 9; +static constexpr const int ExpectedActionNumOnOtherPlatform = 7; class AWSCoreEditorMenuTest : public AWSCoreFixture @@ -60,6 +60,7 @@ TEST_F(AWSCoreEditorMenuTest, AWSCoreEditorMenu_BroadcastFeatureGemsAreEnabled_C AWSCoreEditorRequestBus::Broadcast(&AWSCoreEditorRequests::SetAWSClientAuthEnabled); AWSCoreEditorRequestBus::Broadcast(&AWSCoreEditorRequests::SetAWSMetricsEnabled); + AWSCoreEditorRequestBus::Broadcast(&AWSCoreEditorRequests::SetAWSGameLiftEnabled); QList actualActions = testMenu.actions(); for (QList::iterator itr = actualActions.begin(); itr != actualActions.end(); itr++) @@ -73,5 +74,10 @@ TEST_F(AWSCoreEditorMenuTest, AWSCoreEditorMenu_BroadcastFeatureGemsAreEnabled_C { EXPECT_TRUE((*itr)->isEnabled()); } + + if (QString::compare((*itr)->text(), AWSGameLiftActionText) == 0) + { + EXPECT_TRUE((*itr)->isEnabled()); + } } } diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/AWSGameLiftClientSystemComponent.cpp b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/AWSGameLiftClientSystemComponent.cpp index 6ab998b696..981c1599c9 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/AWSGameLiftClientSystemComponent.cpp +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/Source/AWSGameLiftClientSystemComponent.cpp @@ -13,6 +13,7 @@ #include #include +#include #include #include #include @@ -105,6 +106,8 @@ namespace AWSGameLift m_gameliftClient.reset(); m_gameliftManager->ActivateManager(); m_gameliftTicketTracker->ActivateTracker(); + + AWSCore::AWSCoreEditorRequestBus::Broadcast(&AWSCore::AWSCoreEditorRequests::SetAWSGameLiftEnabled); } void AWSGameLiftClientSystemComponent::Deactivate()