From 42c9a695ff5edd327329fa096879abb17765119e Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Wed, 27 Jul 2016 17:45:45 -0700 Subject: [PATCH] Invite friends in HMD --- interface/src/Application.cpp | 4 +++ .../src/steamworks-wrapper/SteamClient.cpp | 14 +++++++-- .../src/steamworks-wrapper/SteamClient.h | 16 +++++++++++ scripts/system/assets/images/tools/steam.jpeg | Bin 0 -> 979 bytes scripts/system/steam.js | 27 ++++++++++++++++++ 5 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 scripts/system/assets/images/tools/steam.jpeg create mode 100644 scripts/system/steam.js diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 58284682f1..a1016d90fb 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1599,6 +1599,8 @@ void Application::initializeUi() { rootContext->setContextProperty("Reticle", getApplicationCompositor().getReticleInterface()); rootContext->setContextProperty("ApplicationCompositor", &getApplicationCompositor()); + + rootContext->setContextProperty("Steam", new SteamScriptingInterface(engine)); _glWidget->installEventFilter(offscreenUi.data()); @@ -4799,6 +4801,8 @@ void Application::registerScriptEngineWithApplicationServices(ScriptEngine* scri scriptEngine->registerGlobalObject("UserActivityLogger", DependencyManager::get().data()); scriptEngine->registerGlobalObject("Users", DependencyManager::get().data()); + + scriptEngine->registerGlobalObject("Steam", new SteamScriptingInterface(scriptEngine)); } bool Application::canAcceptURL(const QString& urlString) const { diff --git a/libraries/steamworks-wrapper/src/steamworks-wrapper/SteamClient.cpp b/libraries/steamworks-wrapper/src/steamworks-wrapper/SteamClient.cpp index f775efe2f6..ee6711e6f6 100644 --- a/libraries/steamworks-wrapper/src/steamworks-wrapper/SteamClient.cpp +++ b/libraries/steamworks-wrapper/src/steamworks-wrapper/SteamClient.cpp @@ -149,7 +149,7 @@ private: }; SteamCallbackManager::SteamCallbackManager() : -_gameRichPresenceJoinRequestedResponse(this, &SteamCallbackManager::onGameRichPresenceJoinRequested) + _gameRichPresenceJoinRequestedResponse(this, &SteamCallbackManager::onGameRichPresenceJoinRequested) { } @@ -161,7 +161,7 @@ void SteamCallbackManager::onGameRichPresenceJoinRequested(GameRichPresenceJoinR url.remove(-CONNECT_SUFFIX.size(), CONNECT_SUFFIX.size()); } - qDebug() << "Joining Steam Friends at:" << url; + qDebug() << "Joining Steam Friend at:" << url; auto mimeData = new QMimeData(); mimeData->setUrls(QList() << QUrl(url)); auto event = new QDropEvent(QPointF(0,0), Qt::MoveAction, mimeData, Qt::LeftButton, Qt::NoModifier); @@ -169,7 +169,6 @@ void SteamCallbackManager::onGameRichPresenceJoinRequested(GameRichPresenceJoinR QCoreApplication::postEvent(qApp, event); } - static std::atomic_bool initialized { false }; static SteamCallbackManager steamCallbackManager; @@ -239,3 +238,12 @@ void SteamClient::updateLocation(QString status, QUrl locationUrl) { SteamFriends()->SetRichPresence("status", status.toLocal8Bit().data()); SteamFriends()->SetRichPresence("connect", connectStr.toLocal8Bit().data()); } + +void SteamClient::openInviteOverlay() { + if (!initialized) { + return; + } + + qDebug() << "Inviting steam friends"; + SteamFriends()->ActivateGameOverlayInviteDialog(CSteamID()); +} diff --git a/libraries/steamworks-wrapper/src/steamworks-wrapper/SteamClient.h b/libraries/steamworks-wrapper/src/steamworks-wrapper/SteamClient.h index 9ce127f3cb..7c958c4b39 100644 --- a/libraries/steamworks-wrapper/src/steamworks-wrapper/SteamClient.h +++ b/libraries/steamworks-wrapper/src/steamworks-wrapper/SteamClient.h @@ -15,6 +15,7 @@ #include +#include #include using Ticket = QByteArray; @@ -33,6 +34,21 @@ public: static void requestTicket(TicketRequestCallback callback); static void updateLocation(QString status, QUrl locationUrl); + static void openInviteOverlay(); + +}; + +class SteamScriptingInterface : public QObject { + Q_OBJECT + + Q_PROPERTY(bool isRunning READ isRunning) + +public: + SteamScriptingInterface(QObject* parent) : QObject(parent) {} + +public slots: + bool isRunning() const { return SteamClient::isRunning(); } + void openInviteOverlay() const { SteamClient::openInviteOverlay(); } }; diff --git a/scripts/system/assets/images/tools/steam.jpeg b/scripts/system/assets/images/tools/steam.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..a39fdf9bc62c72467460026d639f13fc6910831c GIT binary patch literal 979 zcmex=o^zf-vy^0D~Y0gAs!fGoum%lOQ9rAmjfd4AKk?Ow5cRr@{dn3oAP_Bh&vQ z45k7MjLgi8EF3JXtPp8NCT11}RzV>)MZ-XLVG$+A#KK0S;7K1uohDv}biWfTeoY%~70>``pjeUEy0>($=!2;Y-a92A1ZY`BK`}T9%8N`dqFn?})C| zI`GWEwaDj~jO}#>yXw`>llf#%N#~yJYj>N#sLWC&XR@^DhSPGVwVMt&S|5H~JfR7`#um9y16f5)x(ibvX>(Na?nZq-m{`SqZ`D(I$!z#IMj z@>{-czVmqHrsf6peHA?)mH!1>f0lT2u591>6$h_g`(yF>+?!A_YwyCYt24jFMv1*y zGHtelWpH=EfdgMHmi{;e!m(3JJ0Q;4S>^Dg6ej(@dgylp#sORliY+bUGOf}6KR z<(KSpxkFP^@2bYWFc?i_THY?YUSd|p; z>^l@I+q!h6hL@cvLxD);@ZFFMj=1GxlF(C-BPYm>(a