/* * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or * its licensors. * * For complete copyright and license terms please see the LICENSE at the root of this * distribution (the "License"). All use of this software is governed by the License, * or, if provided, by the license below or the license accompanying this file. Do not * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * */ ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // THIS CODE IS AUTOGENERATED, DO NOT MODIFY ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// #pragma once #include #include #include #include #include #include #include #include #include #include #include #if defined (PLATFORM_SUPPORTS_AWS_NATIVE_SDK) // The AWS Native SDK AWSAllocator triggers a warning due to accessing members of std::allocator directly. // AWSAllocator.h(70): warning C4996: 'std::allocator::pointer': warning STL4010: Various members of std::allocator are deprecated in C++17. // Use std::allocator_traits instead of accessing these members directly. // You can define _SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING or _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS to acknowledge that you have received this warning. AZ_PUSH_DISABLE_WARNING(4251 4996, "-Wunknown-warning-option") #include #include AZ_POP_DISABLE_WARNING #endif // (PLATFORM_SUPPORTS_AWS_NATIVE_SDK) #include #include "CloudGemLeaderboard_precompiled.h" namespace CloudGemLeaderboard { namespace ServiceAPI { extern const char* LmbrAWS_CodeGen_StatList_UUID; extern const char* LmbrAWS_CodeGen_StatDefinition_UUID; extern const char* LmbrAWS_CodeGen_BannedPlayerList_UUID; extern const char* LmbrAWS_CodeGen_Component_UUID; extern const char* LmbrAWS_CodeGen_ResponseHandler_UUID; extern const char* LmbrAWS_CodeGen_NotificationBus1_UUID; extern const char* LmbrAWS_CodeGen_RequestBus1_UUID; extern const char* LmbrAWS_CodeGen_BanOutcome_UUID; extern const char* LmbrAWS_CodeGen_SingleScore_UUID; extern const char* LmbrAWS_CodeGen_ServiceStatus_UUID; extern const char* LmbrAWS_CodeGen_ScoreData_UUID; extern const char* LmbrAWS_CodeGen_AdditionalLeaderboardRequestData_UUID; // redefs bool WriteJson(CloudGemFramework::JsonWriter& writer, const int& item); bool WriteJson(CloudGemFramework::JsonWriter& writer, const AZStd::string& item); bool WriteJson(CloudGemFramework::JsonWriter& writer, const double& item); using StringList = AZStd::vector; bool WriteJson(CloudGemFramework::JsonWriter& writer, const StringList& list); struct BannedPlayerList { AZ_TYPE_INFO(BannedPlayerList, LmbrAWS_CodeGen_BannedPlayerList_UUID) AZ_CLASS_ALLOCATOR(BannedPlayerList, AZ::SystemAllocator, 0) StringList players; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const BannedPlayerList& item); struct SingleScore { AZ_TYPE_INFO(SingleScore, LmbrAWS_CodeGen_SingleScore_UUID) AZ_CLASS_ALLOCATOR(SingleScore, AZ::SystemAllocator, 0) AZStd::string stat; AZStd::string user; double value{0.0}; int estimated_rank{0}; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const SingleScore& item); struct ServiceStatus { AZ_TYPE_INFO(ServiceStatus, LmbrAWS_CodeGen_ServiceStatus_UUID) AZ_CLASS_ALLOCATOR(ServiceStatus, AZ::SystemAllocator, 0) AZStd::string status; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const ServiceStatus& item); struct AdditionalLeaderboardRequestData { AZ_TYPE_INFO(AdditionalLeaderboardRequestData, LmbrAWS_CodeGen_AdditionalLeaderboardRequestData_UUID) AZ_CLASS_ALLOCATOR(AdditionalLeaderboardRequestData, AZ::SystemAllocator, 0) StringList users; int page_size{0}; int page{0}; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const AdditionalLeaderboardRequestData& item); using ScoreList = AZStd::vector; bool WriteJson(CloudGemFramework::JsonWriter& writer, const ScoreList& list); struct ScoreData { AZ_TYPE_INFO(ScoreData, LmbrAWS_CodeGen_ScoreData_UUID) AZ_CLASS_ALLOCATOR(ScoreData, AZ::SystemAllocator, 0) int current_page{0}; int total_pages{0}; ScoreList scores; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const ScoreData& item); struct StatDefinition { AZ_TYPE_INFO(StatDefinition, LmbrAWS_CodeGen_StatDefinition_UUID) AZ_CLASS_ALLOCATOR(StatDefinition, AZ::SystemAllocator, 0) double max{0.0}; double min{0.0}; AZStd::string name; double sample_size{0.0}; AZStd::string mode; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const StatDefinition& item); using StatDefList = AZStd::vector; bool WriteJson(CloudGemFramework::JsonWriter& writer, const StatDefList& list); struct StatList { AZ_TYPE_INFO(StatList, LmbrAWS_CodeGen_StatList_UUID) AZ_CLASS_ALLOCATOR(StatList, AZ::SystemAllocator, 0) StatDefList stats; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const StatList& item); struct BanOutcome { AZ_TYPE_INFO(BanOutcome, LmbrAWS_CodeGen_BanOutcome_UUID) AZ_CLASS_ALLOCATOR(BanOutcome, AZ::SystemAllocator, 0) AZStd::string status; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const BanOutcome& item); // Service RequestJobs CLOUD_GEM_SERVICE(CloudGemLeaderboard); class GetPlayerBan_listRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemLeaderboard, HttpMethod::HTTP_GET, "/player/ban_list"); struct Parameters { bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; BannedPlayerList result; Parameters parameters; }; using GetPlayerBan_listRequestJob = CloudGemFramework::ServiceRequestJob; class PostScoreDedicatedRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemLeaderboard, HttpMethod::HTTP_POST, "/score/dedicated"); struct Parameters { SingleScore score_entry; bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; SingleScore result; Parameters parameters; }; using PostScoreDedicatedRequestJob = CloudGemFramework::ServiceRequestJob; class get_service_statusRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemLeaderboard, HttpMethod::HTTP_GET, "/service/status"); struct Parameters { bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; ServiceStatus result; Parameters parameters; }; using get_service_statusRequestJob = CloudGemFramework::ServiceRequestJob; class PostLeaderboardRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemLeaderboard, HttpMethod::HTTP_POST, "/leaderboard/{stat}"); struct Parameters { AZStd::string stat; AdditionalLeaderboardRequestData additional_data; bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; ScoreData result; Parameters parameters; }; using PostLeaderboardRequestJob = CloudGemFramework::ServiceRequestJob; class GetScoresRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemLeaderboard, HttpMethod::HTTP_GET, "/scores/{user}"); struct Parameters { AZStd::string user; bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; ScoreData result; Parameters parameters; }; using GetScoresRequestJob = CloudGemFramework::ServiceRequestJob; class PostStatsRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemLeaderboard, HttpMethod::HTTP_POST, "/stats"); struct Parameters { StatDefinition stat_def; bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; StatList result; Parameters parameters; }; using PostStatsRequestJob = CloudGemFramework::ServiceRequestJob; class GetStatsRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemLeaderboard, HttpMethod::HTTP_GET, "/stats"); struct Parameters { bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; StatList result; Parameters parameters; }; using GetStatsRequestJob = CloudGemFramework::ServiceRequestJob; class PostPlayerBanRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemLeaderboard, HttpMethod::HTTP_POST, "/player/ban/{user}"); struct Parameters { AZStd::string user; bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; BanOutcome result; Parameters parameters; }; using PostPlayerBanRequestJob = CloudGemFramework::ServiceRequestJob; class DeletePlayerBanRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemLeaderboard, HttpMethod::HTTP_DELETE, "/player/ban/{user}"); struct Parameters { AZStd::string user; bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; BanOutcome result; Parameters parameters; }; using DeletePlayerBanRequestJob = CloudGemFramework::ServiceRequestJob; class process_recordsRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemLeaderboard, HttpMethod::HTTP_GET, "/process_records"); struct Parameters { bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; Parameters parameters; }; using process_recordsRequestJob = CloudGemFramework::ServiceRequestJob; class PostScoreRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemLeaderboard, HttpMethod::HTTP_POST, "/score"); struct Parameters { SingleScore score_entry; bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; SingleScore result; Parameters parameters; }; using PostScoreRequestJob = CloudGemFramework::ServiceRequestJob; class DeleteScoreRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemLeaderboard, HttpMethod::HTTP_DELETE, "/score/{stat}/{user}"); struct Parameters { AZStd::string user; AZStd::string stat; bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; ScoreData result; Parameters parameters; }; using DeleteScoreRequestJob = CloudGemFramework::ServiceRequestJob; class GetScoreRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemLeaderboard, HttpMethod::HTTP_GET, "/score/{stat}/{user}"); struct Parameters { AZStd::string user; AZStd::string stat; bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; ScoreData result; Parameters parameters; }; using GetScoreRequestJob = CloudGemFramework::ServiceRequestJob; class DeleteStatsRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemLeaderboard, HttpMethod::HTTP_DELETE, "/stats/{stat_name}"); struct Parameters { AZStd::string stat_name; bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; StatList result; Parameters parameters; }; using DeleteStatsRequestJob = CloudGemFramework::ServiceRequestJob; // Notification bus for this component class CloudGemLeaderboardNotifications : public AZ::ComponentBus { public: /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void OnGetPlayerBan_listRequestSuccess(const BannedPlayerList response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void OnGetPlayerBan_listRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void OnPostScoreDedicatedRequestSuccess(const SingleScore response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void OnPostScoreDedicatedRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void Onget_service_statusRequestSuccess(const ServiceStatus response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void Onget_service_statusRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void OnPostLeaderboardRequestSuccess(const ScoreData response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void OnPostLeaderboardRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void OnGetScoresRequestSuccess(const ScoreData response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void OnGetScoresRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void OnPostStatsRequestSuccess(const StatList response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void OnPostStatsRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void OnGetStatsRequestSuccess(const StatList response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void OnGetStatsRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void OnPostPlayerBanRequestSuccess(const BanOutcome response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void OnPostPlayerBanRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void OnDeletePlayerBanRequestSuccess(const BanOutcome response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void OnDeletePlayerBanRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void Onprocess_recordsRequestSuccess(); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void Onprocess_recordsRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void OnPostScoreRequestSuccess(const SingleScore response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void OnPostScoreRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void OnDeleteScoreRequestSuccess(const ScoreData response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void OnDeleteScoreRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void OnGetScoreRequestSuccess(const ScoreData response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void OnGetScoreRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void OnDeleteStatsRequestSuccess(const StatList response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void OnDeleteStatsRequestError(const CloudGemFramework::Error error); }; using CloudGemLeaderboardNotificationBus = AZ::EBus; class BehaviorCloudGemLeaderboardNotificationBusHandler : public CloudGemLeaderboardNotificationBus::Handler, public AZ::BehaviorEBusHandler { public: AZ_EBUS_BEHAVIOR_BINDER(BehaviorCloudGemLeaderboardNotificationBusHandler, LmbrAWS_CodeGen_NotificationBus1_UUID, AZ::SystemAllocator , OnGetPlayerBan_listRequestSuccess , OnGetPlayerBan_listRequestError , OnPostScoreDedicatedRequestSuccess , OnPostScoreDedicatedRequestError , Onget_service_statusRequestSuccess , Onget_service_statusRequestError , OnPostLeaderboardRequestSuccess , OnPostLeaderboardRequestError , OnGetScoresRequestSuccess , OnGetScoresRequestError , OnPostStatsRequestSuccess , OnPostStatsRequestError , OnGetStatsRequestSuccess , OnGetStatsRequestError , OnPostPlayerBanRequestSuccess , OnPostPlayerBanRequestError , OnDeletePlayerBanRequestSuccess , OnDeletePlayerBanRequestError , Onprocess_recordsRequestSuccess , Onprocess_recordsRequestError , OnPostScoreRequestSuccess , OnPostScoreRequestError , OnDeleteScoreRequestSuccess , OnDeleteScoreRequestError , OnGetScoreRequestSuccess , OnGetScoreRequestError , OnDeleteStatsRequestSuccess , OnDeleteStatsRequestError ); void OnGetPlayerBan_listRequestSuccess(const BannedPlayerList response) override; void OnGetPlayerBan_listRequestError(const CloudGemFramework::Error error) override; void OnPostScoreDedicatedRequestSuccess(const SingleScore response) override; void OnPostScoreDedicatedRequestError(const CloudGemFramework::Error error) override; void Onget_service_statusRequestSuccess(const ServiceStatus response) override; void Onget_service_statusRequestError(const CloudGemFramework::Error error) override; void OnPostLeaderboardRequestSuccess(const ScoreData response) override; void OnPostLeaderboardRequestError(const CloudGemFramework::Error error) override; void OnGetScoresRequestSuccess(const ScoreData response) override; void OnGetScoresRequestError(const CloudGemFramework::Error error) override; void OnPostStatsRequestSuccess(const StatList response) override; void OnPostStatsRequestError(const CloudGemFramework::Error error) override; void OnGetStatsRequestSuccess(const StatList response) override; void OnGetStatsRequestError(const CloudGemFramework::Error error) override; void OnPostPlayerBanRequestSuccess(const BanOutcome response) override; void OnPostPlayerBanRequestError(const CloudGemFramework::Error error) override; void OnDeletePlayerBanRequestSuccess(const BanOutcome response) override; void OnDeletePlayerBanRequestError(const CloudGemFramework::Error error) override; void Onprocess_recordsRequestSuccess() override; void Onprocess_recordsRequestError(const CloudGemFramework::Error error) override; void OnPostScoreRequestSuccess(const SingleScore response) override; void OnPostScoreRequestError(const CloudGemFramework::Error error) override; void OnDeleteScoreRequestSuccess(const ScoreData response) override; void OnDeleteScoreRequestError(const CloudGemFramework::Error error) override; void OnGetScoreRequestSuccess(const ScoreData response) override; void OnGetScoreRequestError(const CloudGemFramework::Error error) override; void OnDeleteStatsRequestSuccess(const StatList response) override; void OnDeleteStatsRequestError(const CloudGemFramework::Error error) override; }; class CloudGemLeaderboardResponseHandler; // Request bus for this component class CloudGemLeaderboardRequests : public AZ::ComponentBus { public: virtual ~CloudGemLeaderboardRequests() {} virtual void GetPlayerBan_list(CloudGemLeaderboardResponseHandler* responseHandler); virtual void PostScoreDedicated(const SingleScore& score_entry, CloudGemLeaderboardResponseHandler* responseHandler); virtual void get_service_status(CloudGemLeaderboardResponseHandler* responseHandler); virtual void PostLeaderboard(const AZStd::string& stat, const AdditionalLeaderboardRequestData& additional_data, CloudGemLeaderboardResponseHandler* responseHandler); virtual void GetScores(const AZStd::string& user, CloudGemLeaderboardResponseHandler* responseHandler); virtual void PostStats(const StatDefinition& stat_def, CloudGemLeaderboardResponseHandler* responseHandler); virtual void GetStats(CloudGemLeaderboardResponseHandler* responseHandler); virtual void PostPlayerBan(const AZStd::string& user, CloudGemLeaderboardResponseHandler* responseHandler); virtual void DeletePlayerBan(const AZStd::string& user, CloudGemLeaderboardResponseHandler* responseHandler); virtual void process_records(CloudGemLeaderboardResponseHandler* responseHandler); virtual void PostScore(const SingleScore& score_entry, CloudGemLeaderboardResponseHandler* responseHandler); virtual void DeleteScore(const AZStd::string& user, const AZStd::string& stat, CloudGemLeaderboardResponseHandler* responseHandler); virtual void GetScore(const AZStd::string& user, const AZStd::string& stat, CloudGemLeaderboardResponseHandler* responseHandler); virtual void DeleteStats(const AZStd::string& stat_name, CloudGemLeaderboardResponseHandler* responseHandler); }; using CloudGemLeaderboardRequestBus = AZ::EBus; // This class is used as a parameter for all requests and throws the response on the CloudGemLeaderboardNotificationBus // Inherit from this to define custom behavior. class CloudGemLeaderboardResponseHandler { public: AZ_TYPE_INFO(CloudGemLeaderboardResponseHandler, LmbrAWS_CodeGen_ResponseHandler_UUID) AZ_CLASS_ALLOCATOR(CloudGemLeaderboardResponseHandler, AZ::SystemAllocator, 0) virtual ~CloudGemLeaderboardResponseHandler() {} virtual void HandleGetPlayerBan_listSuccess(GetPlayerBan_listRequestJob* job, AZ::EntityId entityId); virtual void HandleGetPlayerBan_listError(GetPlayerBan_listRequestJob* job, AZ::EntityId entityId); virtual void HandlePostScoreDedicatedSuccess(PostScoreDedicatedRequestJob* job, AZ::EntityId entityId); virtual void HandlePostScoreDedicatedError(PostScoreDedicatedRequestJob* job, AZ::EntityId entityId); virtual void Handleget_service_statusSuccess(get_service_statusRequestJob* job, AZ::EntityId entityId); virtual void Handleget_service_statusError(get_service_statusRequestJob* job, AZ::EntityId entityId); virtual void HandlePostLeaderboardSuccess(PostLeaderboardRequestJob* job, AZ::EntityId entityId); virtual void HandlePostLeaderboardError(PostLeaderboardRequestJob* job, AZ::EntityId entityId); virtual void HandleGetScoresSuccess(GetScoresRequestJob* job, AZ::EntityId entityId); virtual void HandleGetScoresError(GetScoresRequestJob* job, AZ::EntityId entityId); virtual void HandlePostStatsSuccess(PostStatsRequestJob* job, AZ::EntityId entityId); virtual void HandlePostStatsError(PostStatsRequestJob* job, AZ::EntityId entityId); virtual void HandleGetStatsSuccess(GetStatsRequestJob* job, AZ::EntityId entityId); virtual void HandleGetStatsError(GetStatsRequestJob* job, AZ::EntityId entityId); virtual void HandlePostPlayerBanSuccess(PostPlayerBanRequestJob* job, AZ::EntityId entityId); virtual void HandlePostPlayerBanError(PostPlayerBanRequestJob* job, AZ::EntityId entityId); virtual void HandleDeletePlayerBanSuccess(DeletePlayerBanRequestJob* job, AZ::EntityId entityId); virtual void HandleDeletePlayerBanError(DeletePlayerBanRequestJob* job, AZ::EntityId entityId); virtual void Handleprocess_recordsSuccess(process_recordsRequestJob* job, AZ::EntityId entityId); virtual void Handleprocess_recordsError(process_recordsRequestJob* job, AZ::EntityId entityId); virtual void HandlePostScoreSuccess(PostScoreRequestJob* job, AZ::EntityId entityId); virtual void HandlePostScoreError(PostScoreRequestJob* job, AZ::EntityId entityId); virtual void HandleDeleteScoreSuccess(DeleteScoreRequestJob* job, AZ::EntityId entityId); virtual void HandleDeleteScoreError(DeleteScoreRequestJob* job, AZ::EntityId entityId); virtual void HandleGetScoreSuccess(GetScoreRequestJob* job, AZ::EntityId entityId); virtual void HandleGetScoreError(GetScoreRequestJob* job, AZ::EntityId entityId); virtual void HandleDeleteStatsSuccess(DeleteStatsRequestJob* job, AZ::EntityId entityId); virtual void HandleDeleteStatsError(DeleteStatsRequestJob* job, AZ::EntityId entityId); }; class CloudGemLeaderboardClientComponent : public AZ::Component , public CloudGemLeaderboardRequestBus::Handler { public: AZ_COMPONENT(CloudGemLeaderboardClientComponent, LmbrAWS_CodeGen_Component_UUID); virtual ~CloudGemLeaderboardClientComponent() = default; AZStd::shared_ptr m_defaultResponseHandler; void Init() override; void Activate() override; void Deactivate() override; static void Reflect(AZ::ReflectContext* reflection) { BannedPlayerList::Reflect(reflection); SingleScore::Reflect(reflection); ServiceStatus::Reflect(reflection); AdditionalLeaderboardRequestData::Reflect(reflection); ScoreData::Reflect(reflection); StatDefinition::Reflect(reflection); StatList::Reflect(reflection); BanOutcome::Reflect(reflection); AZ::SerializeContext* serializeContext = azrtti_cast(reflection); if (serializeContext) { // we must include any fields we want to expose to the editor or lua in the serialize context serializeContext->Class() ->Version(1); AZ::EditContext* editContext = serializeContext->GetEditContext(); if (editContext) { editContext->Class("CloudGemLeaderboardClientComponent", "CloudGemLeaderboard Component") ->ClassElement(AZ::Edit::ClassElements::EditorData, "") ->Attribute(AZ::Edit::Attributes::Category, "Cloud Canvas Gems") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game")); } } AZ::BehaviorContext* behaviorContext = azrtti_cast(reflection); if (behaviorContext) { behaviorContext->EBus("CloudGemLeaderboardRequestBus") // one of these for each function ->Event("GetPlayerBan_list", &CloudGemLeaderboardRequestBus::Events::GetPlayerBan_list) ->Event("PostScoreDedicated", &CloudGemLeaderboardRequestBus::Events::PostScoreDedicated) ->Event("get_service_status", &CloudGemLeaderboardRequestBus::Events::get_service_status) ->Event("PostLeaderboard", &CloudGemLeaderboardRequestBus::Events::PostLeaderboard) ->Event("GetScores", &CloudGemLeaderboardRequestBus::Events::GetScores) ->Event("PostStats", &CloudGemLeaderboardRequestBus::Events::PostStats) ->Event("GetStats", &CloudGemLeaderboardRequestBus::Events::GetStats) ->Event("PostPlayerBan", &CloudGemLeaderboardRequestBus::Events::PostPlayerBan) ->Event("DeletePlayerBan", &CloudGemLeaderboardRequestBus::Events::DeletePlayerBan) ->Event("process_records", &CloudGemLeaderboardRequestBus::Events::process_records) ->Event("PostScore", &CloudGemLeaderboardRequestBus::Events::PostScore) ->Event("DeleteScore", &CloudGemLeaderboardRequestBus::Events::DeleteScore) ->Event("GetScore", &CloudGemLeaderboardRequestBus::Events::GetScore) ->Event("DeleteStats", &CloudGemLeaderboardRequestBus::Events::DeleteStats) ; behaviorContext->EBus("CloudGemLeaderboardNotificationBus") ->Handler() ; } } // Functions from the swagger definitions void GetPlayerBan_list(CloudGemLeaderboardResponseHandler* responseHandler) override; void PostScoreDedicated(const SingleScore& score_entry, CloudGemLeaderboardResponseHandler* responseHandler) override; void get_service_status(CloudGemLeaderboardResponseHandler* responseHandler) override; void PostLeaderboard(const AZStd::string& stat, const AdditionalLeaderboardRequestData& additional_data, CloudGemLeaderboardResponseHandler* responseHandler) override; void GetScores(const AZStd::string& user, CloudGemLeaderboardResponseHandler* responseHandler) override; void PostStats(const StatDefinition& stat_def, CloudGemLeaderboardResponseHandler* responseHandler) override; void GetStats(CloudGemLeaderboardResponseHandler* responseHandler) override; void PostPlayerBan(const AZStd::string& user, CloudGemLeaderboardResponseHandler* responseHandler) override; void DeletePlayerBan(const AZStd::string& user, CloudGemLeaderboardResponseHandler* responseHandler) override; void process_records(CloudGemLeaderboardResponseHandler* responseHandler) override; void PostScore(const SingleScore& score_entry, CloudGemLeaderboardResponseHandler* responseHandler) override; void DeleteScore(const AZStd::string& user, const AZStd::string& stat, CloudGemLeaderboardResponseHandler* responseHandler) override; void GetScore(const AZStd::string& user, const AZStd::string& stat, CloudGemLeaderboardResponseHandler* responseHandler) override; void DeleteStats(const AZStd::string& stat_name, CloudGemLeaderboardResponseHandler* responseHandler) override; }; } // ServiceAPI } // CloudGemLeaderboard