Skip to content

Commit a39195c

Browse files
committed
Support for crazgames sdk
1 parent 56296ab commit a39195c

File tree

8 files changed

+99
-9
lines changed

8 files changed

+99
-9
lines changed

res/ui/vignette-strong.lossless.png

5.77 KB
Loading

src/css/common.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ body {
8383
right: 0;
8484
bottom: 0;
8585
background: rgba(50, 60, 70, 0.8);
86-
z-index: 9999;
86+
z-index: 999999;
8787
display: flex;
8888
justify-content: center;
8989
align-items: center;

src/css/states/main_menu.scss

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,13 @@
5252
}
5353
}
5454

55-
&::before,
5655
&::after {
5756
position: absolute;
5857
top: 0;
5958
left: 0;
6059
right: 0;
6160
bottom: 0;
62-
background: uiResource("vignette.lossless.png") center center / cover no-repeat;
61+
background: uiResource("vignette-strong.lossless.png") center center / cover no-repeat;
6362
pointer-events: none;
6463
z-index: 2;
6564
content: "";

src/js/game/hud/parts/settings_menu.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,9 @@ export class HUDSettingsMenu extends BaseHUDPart {
6161
}
6262

6363
returnToMenu() {
64-
this.root.gameState.goBackToMenu();
64+
this.root.app.adProvider.showVideoAd().then(() => {
65+
this.root.gameState.goBackToMenu();
66+
});
6567
}
6668

6769
goToSettings() {

src/js/globals.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ declare interface Window {
9393
grecaptcha: any;
9494
gtag: any;
9595
cpmstarAPI: any;
96+
CrazyGames: any;
9697

9798
// Mods
9899
$shapez_registerMod: any;
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
import { AdProviderInterface } from "../ad_provider";
2+
import { createLogger } from "../../core/logging";
3+
import { timeoutPromise } from "../../core/utils";
4+
5+
const logger = createLogger("crazygames");
6+
7+
export class CrazygamesAdProvider extends AdProviderInterface {
8+
getHasAds() {
9+
return true;
10+
}
11+
12+
getCanShowVideoAd() {
13+
return this.getHasAds() && this.sdkInstance;
14+
}
15+
16+
get sdkInstance() {
17+
try {
18+
return window.CrazyGames.CrazySDK.getInstance();
19+
} catch (ex) {
20+
return null;
21+
}
22+
}
23+
24+
initialize() {
25+
if (!this.getHasAds()) {
26+
return Promise.resolve();
27+
}
28+
29+
logger.log("🎬 Initializing crazygames SDK");
30+
31+
const scriptTag = document.createElement("script");
32+
scriptTag.type = "text/javascript";
33+
34+
return timeoutPromise(
35+
new Promise((resolve, reject) => {
36+
scriptTag.onload = resolve;
37+
scriptTag.onerror = reject;
38+
scriptTag.src = "https://sdk.crazygames.com/crazygames-sdk-v1.js";
39+
document.head.appendChild(scriptTag);
40+
})
41+
.then(() => {
42+
logger.log("🎬 Crazygames SDK loaded, now initializing");
43+
this.sdkInstance.init();
44+
})
45+
.catch(ex => {
46+
console.warn("Failed to init crazygames SDK:", ex);
47+
})
48+
);
49+
}
50+
51+
showVideoAd() {
52+
const instance = this.sdkInstance;
53+
if (!instance) {
54+
return Promise.resolve();
55+
}
56+
57+
logger.log("Set sound volume to 0");
58+
this.app.sound.setMusicVolume(0);
59+
this.app.sound.setSoundVolume(0);
60+
61+
return timeoutPromise(
62+
new Promise(resolve => {
63+
console.log("🎬 crazygames: Start ad");
64+
document.body.classList.add("externalAdOpen");
65+
66+
const finish = () => {
67+
instance.removeEventListener("adError", finish);
68+
instance.removeEventListener("adFinished", finish);
69+
resolve();
70+
};
71+
72+
instance.addEventListener("adError", finish);
73+
instance.addEventListener("adFinished", finish);
74+
75+
instance.requestAd();
76+
}),
77+
60000
78+
)
79+
.catch(ex => {
80+
console.warn("Error while resolving video ad:", ex);
81+
})
82+
.then(() => {
83+
document.body.classList.remove("externalAdOpen");
84+
85+
logger.log("Restored sound volume");
86+
87+
this.app.sound.setMusicVolume(this.app.settings.getSetting("musicVolume"));
88+
this.app.sound.setSoundVolume(this.app.settings.getSetting("soundVolume"));
89+
});
90+
}
91+
}

src/js/platform/ad_providers/gamedistribution.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@ export class GamedistributionAdProvider extends AdProviderInterface {
3232
* When we showed the last video ad
3333
*/
3434
this.lastVideoAdShowTime = -1e20;
35-
36-
console.error("X");
3735
}
3836

3937
getHasAds() {

src/js/platform/browser/wrapper.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { createLogger } from "../../core/logging";
33
import { queryParamOptions } from "../../core/query_parameters";
44
import { WEB_STEAM_SSO_AUTHENTICATED } from "../../core/steam_sso";
55
import { clamp } from "../../core/utils";
6+
import { CrazygamesAdProvider } from "../ad_providers/crazygames";
67
import { GamedistributionAdProvider } from "../ad_providers/gamedistribution";
78
import { NoAdProvider } from "../ad_providers/no_ad_provider";
89
import { SteamAchievementProvider } from "../electron/steam_achievement_provider";
@@ -22,13 +23,11 @@ export class PlatformWrapperImplBrowser extends PlatformWrapperInterface {
2223
adProvider: NoAdProvider,
2324
iframed: false,
2425
externalLinks: true,
25-
iogLink: true,
2626
};
2727

2828
if (!G_IS_STANDALONE && !WEB_STEAM_SSO_AUTHENTICATED && queryParamOptions.embedProvider) {
2929
const providerId = queryParamOptions.embedProvider;
3030
this.embedProvider.iframed = true;
31-
this.embedProvider.iogLink = false;
3231

3332
switch (providerId) {
3433
case "armorgames": {
@@ -38,7 +37,6 @@ export class PlatformWrapperImplBrowser extends PlatformWrapperInterface {
3837

3938
case "iogames.space": {
4039
this.embedProvider.id = "iogames.space";
41-
this.embedProvider.iogLink = true;
4240
break;
4341
}
4442

@@ -61,6 +59,7 @@ export class PlatformWrapperImplBrowser extends PlatformWrapperInterface {
6159

6260
case "crazygames": {
6361
this.embedProvider.id = "crazygames";
62+
this.embedProvider.adProvider = CrazygamesAdProvider;
6463
break;
6564
}
6665

0 commit comments

Comments
 (0)