/* * 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. * */ #ifndef INCLUDE_MULTIPLAYERCVARS_HEADER #define INCLUDE_MULTIPLAYERCVARS_HEADER #include <MultiplayerGameLiftClient.h> #include <INetwork.h> #include <CertificateManager/ICertificateManagerGem.h> #include <GridMate/Session/Session.h> struct IConsole; struct IConsoleCmdArgs; namespace GridMate { class GridSearch; } namespace CertificateManager { class FileDataSource; } namespace Multiplayer { /*! * GridMate-specific network cvars. */ class MultiplayerCVars : public GridMate::SessionEventBus::Handler { public: MultiplayerCVars(); ~MultiplayerCVars(); void RegisterCVars(); void UnregisterCVars(); void PostInitRegistration(); private: //! Host a session (LAN). static void MPHostLANCmd(IConsoleCmdArgs* args); //! Attempt to join an existing session (LAN). static void MPJoinLANCmd(IConsoleCmdArgs* args); #if defined(BUILD_GAMELIFT_CLIENT) //! Attempt to host a session on GameLift and join it. static void MPHostGameLiftCmd(IConsoleCmdArgs* args); //! Attempt to join an existing GameLift session. static void MPJoinGameLiftCmd(IConsoleCmdArgs* args); static void StopGameLiftClient(IConsoleCmdArgs* args); static void MPMatchmakingGameLiftCmd(IConsoleCmdArgs* args); #endif //! Shut down current server or client session. static void MPDisconnectCmd(IConsoleCmdArgs* args); private: void OnGridSearchComplete(GridMate::GridSearch* gridSearch) override; #if defined(NET_SUPPORT_SECURE_SOCKET_DRIVER) static void OnPrivateKeyChanged(ICVar* cvar); static void OnCertificateChanged(ICVar* cvar); static void OnCAChanged(ICVar* cvar); static void CreateFileDataSource(); #endif bool m_autoJoin; GridMate::GridSearch* m_search; #if defined(BUILD_GAMELIFT_CLIENT) MultiplayerGameLiftClient m_gameLift; #endif static MultiplayerCVars* s_instance; }; } // namespace GridMate #endif // INCLUDE_NETWORKGRIDMATECVARS_HEADER