From fabcc9824cb5fd751754460bf1b58ada90314f45 Mon Sep 17 00:00:00 2001 From: Echo <58097612+3kh0@users.noreply.github.com> Date: Thu, 4 Nov 2021 11:00:37 -0400 Subject: [PATCH] uph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.jsuph_poki.js --- html5game/uph_poki.js | 127 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 html5game/uph_poki.js diff --git a/html5game/uph_poki.js b/html5game/uph_poki.js new file mode 100644 index 0000000..d424bbe --- /dev/null +++ b/html5game/uph_poki.js @@ -0,0 +1,127 @@ +console.log("Poki wrapper load"); +///~ +function poki_init_raw() { + console.log("Poki wrapper init"); + // fix GMS1 bug with iframes + var ctr = document.getElementById("gm4html5_div_id"); + if (ctr && !ctr.frames) ctr.frames = []; + return 0; +} +///~ +function poki_script_closure_raw(self, other, script, custom) { + return function(result) { + window.gml_Script_gmcallback_poki_closure(self, other, script, result, custom) + } +} + +function poki_is_blocked() { + return !window.PokiSDK_OK; +} + +function poki_gameplay_start() { + if (PokiSDK) PokiSDK.gameplayStart(); +} + +function poki_gameplay_stop() { + if (PokiSDK) PokiSDK.gameplayStop(); +} + +function poki_happy_time(magnitude) { + if (PokiSDK) PokiSDK.happyTime(magnitude); +} + +///~ +function poki_commercial_break_raw(fn) { + if (PokiSDK) { + PokiSDK.commercialBreak().then(function() { fn(true); }); + } else setTimeout(function() { fn(false); }, 0); +} + +///~ +function poki_rewarded_break_raw(fn) { + if (PokiSDK) { + PokiSDK.rewardedBreak().then(fn); + } else setTimeout(function() { fn(false); }, 0); +} + +/// https://yal.cc/gamemaker-html5-loading-bar-extended/ +var inst = { }; +///~ +function poki_loadbar(ctx, width, height, total, current, image) { + if (window.PokiSDK) { // if you have your own loadbar, just copy this block in there + if (window.PokiSDK_loadState == 0) { + window.PokiSDK_loadState = 1; + PokiSDK.gameLoadingStart(); + } + PokiSDK.gameLoadingProgress({ percentageDone: current/total }); + if (current >= total && window.PokiSDK_loadState != 2) { + window.PokiSDK_loadState = 2; + PokiSDK.gameLoadingFinished(); + } + } + + function getv(s) { + if (window.gml_Script_gmcallback_poki_loadbar) { + return window.gml_Script_gmcallback_poki_loadbar(inst, null, + s, current, total, + width, height, image ? image.width : 0, image ? image.height : 0) + } else return undefined; + } + function getf(s, d) { + var r = getv(s); + return typeof(r) == "number" ? r : d; + } + function getw(s, d) { + var r = getv(s); + return r && r.constructor == Array ? r : d; + } + function getc(s, d) { + var r = getv(s); + if (typeof(r) == "number") { + r = r.toString(16); + while (r.length < 6) r = "0" + r; + return "#" + r; + } else if (typeof(r) == "string") { + return r; + } else return d; + } + // get parameters: + var backgroundColor = getc("background_color", "#FFFFFF"); + var barBackgroundColor = getc("bar_background_color", "#FFFFFF"); + var barForegroundColor = getc("bar_foreground_color", "#242238"); + var barBorderColor = getc("bar_border_color", "#242238"); + var barWidth = getf("bar_width", Math.round(width * 0.6)); + var barHeight = getf("bar_height", 20); + var barBorderWidth = getf("bar_border_width", 2); + var barOffset = getf("bar_offset", 10); + // background: + ctx.fillStyle = backgroundColor; + ctx.fillRect(0, 0, width, height); + // image: + var totalHeight, barTop; + if (image != null) { + var rect = getw("image_rect"); + if (!rect) rect = [0, 0, image.width, image.height]; + totalHeight = rect[3] + barOffset + barHeight; + var image_y = (height - totalHeight) >> 1; + ctx.drawImage(image, rect[0], rect[1], rect[2], rect[3], + (width - rect[2]) >> 1, image_y, rect[2], rect[3]); + barTop = image_y + rect[3] + barOffset; + } else barTop = (height - barHeight) >> 1; + // bar border: + var barLeft = (width - barWidth) >> 1; + ctx.fillStyle = barBorderColor; + ctx.fillRect(barLeft, barTop, barWidth, barHeight); + // + var barInnerLeft = barLeft + barBorderWidth; + var barInnerTop = barTop + barBorderWidth; + var barInnerWidth = barWidth - barBorderWidth * 2; + var barInnerHeight = barHeight - barBorderWidth * 2; + // bar background: + ctx.fillStyle = barBackgroundColor; + ctx.fillRect(barInnerLeft, barInnerTop, barInnerWidth, barInnerHeight); + // bar foreground: + var barLoadedWidth = Math.round(barInnerWidth * current / total); + ctx.fillStyle = barForegroundColor; + ctx.fillRect(barInnerLeft, barInnerTop, barLoadedWidth, barInnerHeight); +}