mirror of
https://github.com/tobspr/shapez.io.git
synced 2024-10-27 20:34:29 +00:00
Support for crazgames sdk
This commit is contained in:
parent
56296ab88a
commit
a39195c972
BIN
res/ui/vignette-strong.lossless.png
Normal file
BIN
res/ui/vignette-strong.lossless.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.8 KiB |
@ -83,7 +83,7 @@ body {
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: rgba(50, 60, 70, 0.8);
|
||||
z-index: 9999;
|
||||
z-index: 999999;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
@ -52,14 +52,13 @@
|
||||
}
|
||||
}
|
||||
|
||||
&::before,
|
||||
&::after {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: uiResource("vignette.lossless.png") center center / cover no-repeat;
|
||||
background: uiResource("vignette-strong.lossless.png") center center / cover no-repeat;
|
||||
pointer-events: none;
|
||||
z-index: 2;
|
||||
content: "";
|
||||
|
@ -61,7 +61,9 @@ export class HUDSettingsMenu extends BaseHUDPart {
|
||||
}
|
||||
|
||||
returnToMenu() {
|
||||
this.root.app.adProvider.showVideoAd().then(() => {
|
||||
this.root.gameState.goBackToMenu();
|
||||
});
|
||||
}
|
||||
|
||||
goToSettings() {
|
||||
|
1
src/js/globals.d.ts
vendored
1
src/js/globals.d.ts
vendored
@ -93,6 +93,7 @@ declare interface Window {
|
||||
grecaptcha: any;
|
||||
gtag: any;
|
||||
cpmstarAPI: any;
|
||||
CrazyGames: any;
|
||||
|
||||
// Mods
|
||||
$shapez_registerMod: any;
|
||||
|
91
src/js/platform/ad_providers/crazygames.js
Normal file
91
src/js/platform/ad_providers/crazygames.js
Normal file
@ -0,0 +1,91 @@
|
||||
import { AdProviderInterface } from "../ad_provider";
|
||||
import { createLogger } from "../../core/logging";
|
||||
import { timeoutPromise } from "../../core/utils";
|
||||
|
||||
const logger = createLogger("crazygames");
|
||||
|
||||
export class CrazygamesAdProvider extends AdProviderInterface {
|
||||
getHasAds() {
|
||||
return true;
|
||||
}
|
||||
|
||||
getCanShowVideoAd() {
|
||||
return this.getHasAds() && this.sdkInstance;
|
||||
}
|
||||
|
||||
get sdkInstance() {
|
||||
try {
|
||||
return window.CrazyGames.CrazySDK.getInstance();
|
||||
} catch (ex) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
initialize() {
|
||||
if (!this.getHasAds()) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
logger.log("🎬 Initializing crazygames SDK");
|
||||
|
||||
const scriptTag = document.createElement("script");
|
||||
scriptTag.type = "text/javascript";
|
||||
|
||||
return timeoutPromise(
|
||||
new Promise((resolve, reject) => {
|
||||
scriptTag.onload = resolve;
|
||||
scriptTag.onerror = reject;
|
||||
scriptTag.src = "https://sdk.crazygames.com/crazygames-sdk-v1.js";
|
||||
document.head.appendChild(scriptTag);
|
||||
})
|
||||
.then(() => {
|
||||
logger.log("🎬 Crazygames SDK loaded, now initializing");
|
||||
this.sdkInstance.init();
|
||||
})
|
||||
.catch(ex => {
|
||||
console.warn("Failed to init crazygames SDK:", ex);
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
showVideoAd() {
|
||||
const instance = this.sdkInstance;
|
||||
if (!instance) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
logger.log("Set sound volume to 0");
|
||||
this.app.sound.setMusicVolume(0);
|
||||
this.app.sound.setSoundVolume(0);
|
||||
|
||||
return timeoutPromise(
|
||||
new Promise(resolve => {
|
||||
console.log("🎬 crazygames: Start ad");
|
||||
document.body.classList.add("externalAdOpen");
|
||||
|
||||
const finish = () => {
|
||||
instance.removeEventListener("adError", finish);
|
||||
instance.removeEventListener("adFinished", finish);
|
||||
resolve();
|
||||
};
|
||||
|
||||
instance.addEventListener("adError", finish);
|
||||
instance.addEventListener("adFinished", finish);
|
||||
|
||||
instance.requestAd();
|
||||
}),
|
||||
60000
|
||||
)
|
||||
.catch(ex => {
|
||||
console.warn("Error while resolving video ad:", ex);
|
||||
})
|
||||
.then(() => {
|
||||
document.body.classList.remove("externalAdOpen");
|
||||
|
||||
logger.log("Restored sound volume");
|
||||
|
||||
this.app.sound.setMusicVolume(this.app.settings.getSetting("musicVolume"));
|
||||
this.app.sound.setSoundVolume(this.app.settings.getSetting("soundVolume"));
|
||||
});
|
||||
}
|
||||
}
|
@ -32,8 +32,6 @@ export class GamedistributionAdProvider extends AdProviderInterface {
|
||||
* When we showed the last video ad
|
||||
*/
|
||||
this.lastVideoAdShowTime = -1e20;
|
||||
|
||||
console.error("X");
|
||||
}
|
||||
|
||||
getHasAds() {
|
||||
|
@ -3,6 +3,7 @@ import { createLogger } from "../../core/logging";
|
||||
import { queryParamOptions } from "../../core/query_parameters";
|
||||
import { WEB_STEAM_SSO_AUTHENTICATED } from "../../core/steam_sso";
|
||||
import { clamp } from "../../core/utils";
|
||||
import { CrazygamesAdProvider } from "../ad_providers/crazygames";
|
||||
import { GamedistributionAdProvider } from "../ad_providers/gamedistribution";
|
||||
import { NoAdProvider } from "../ad_providers/no_ad_provider";
|
||||
import { SteamAchievementProvider } from "../electron/steam_achievement_provider";
|
||||
@ -22,13 +23,11 @@ export class PlatformWrapperImplBrowser extends PlatformWrapperInterface {
|
||||
adProvider: NoAdProvider,
|
||||
iframed: false,
|
||||
externalLinks: true,
|
||||
iogLink: true,
|
||||
};
|
||||
|
||||
if (!G_IS_STANDALONE && !WEB_STEAM_SSO_AUTHENTICATED && queryParamOptions.embedProvider) {
|
||||
const providerId = queryParamOptions.embedProvider;
|
||||
this.embedProvider.iframed = true;
|
||||
this.embedProvider.iogLink = false;
|
||||
|
||||
switch (providerId) {
|
||||
case "armorgames": {
|
||||
@ -38,7 +37,6 @@ export class PlatformWrapperImplBrowser extends PlatformWrapperInterface {
|
||||
|
||||
case "iogames.space": {
|
||||
this.embedProvider.id = "iogames.space";
|
||||
this.embedProvider.iogLink = true;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -61,6 +59,7 @@ export class PlatformWrapperImplBrowser extends PlatformWrapperInterface {
|
||||
|
||||
case "crazygames": {
|
||||
this.embedProvider.id = "crazygames";
|
||||
this.embedProvider.adProvider = CrazygamesAdProvider;
|
||||
break;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user