From 479539d9b872eccf0df9023c51d6fce2f3a39fef Mon Sep 17 00:00:00 2001 From: tobspr Date: Sun, 27 Jun 2021 15:52:37 +0200 Subject: [PATCH] Properly activate Puzzle DLC on steam version (Fixes having to activate it manually in some cases) --- src/js/platform/browser/game_analytics.js | 9 +++++++++ src/js/platform/electron/wrapper.js | 11 +++++++++++ src/js/platform/game_analytics.js | 9 +++++++++ 3 files changed, 29 insertions(+) diff --git a/src/js/platform/browser/game_analytics.js b/src/js/platform/browser/game_analytics.js index e4226ae0..80e19c7a 100644 --- a/src/js/platform/browser/game_analytics.js +++ b/src/js/platform/browser/game_analytics.js @@ -95,6 +95,15 @@ export class ShapezGameAnalytics extends GameAnalyticsInterface { ); } + /** + * Makes sure a DLC is activated on steam + * @param {string} dlc + */ + activateDlc(dlc) { + logger.log("Activating dlc:", dlc); + return this.sendToApi("/v1/activate-dlc/" + dlc, {}); + } + /** * Sends a request to the api * @param {string} endpoint Endpoint without base url diff --git a/src/js/platform/electron/wrapper.js b/src/js/platform/electron/wrapper.js index eac4328b..c1764f68 100644 --- a/src/js/platform/electron/wrapper.js +++ b/src/js/platform/electron/wrapper.js @@ -83,6 +83,17 @@ export class PlatformWrapperImplElectron extends PlatformWrapperImplBrowser { res => { logger.log("Got DLC ownership:", res); this.dlcs.puzzle = Boolean(res); + + if (this.dlcs.puzzle && !G_IS_DEV) { + this.app.gameAnalytics.activateDlc("puzzle").then( + () => { + logger.log("Puzzle DLC successfully activated"); + }, + error => { + logger.error("Failed to activate puzzle DLC:", error); + } + ); + } }, err => { logger.error("Failed to get DLC ownership:", err); diff --git a/src/js/platform/game_analytics.js b/src/js/platform/game_analytics.js index 765b2d67..00286fc2 100644 --- a/src/js/platform/game_analytics.js +++ b/src/js/platform/game_analytics.js @@ -39,4 +39,13 @@ export class GameAnalyticsInterface { * @param {number} level */ handleUpgradeUnlocked(id, level) {} + + /** + * Activates a DLC + * @param {string} dlc + */ + activateDlc(dlc) { + abstract; + return Promise.resolve(); + } }