waves/public/assets/g/golddiggerfrvr/index.html
2025-04-17 20:43:10 -05:00

1088 lines
42 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<html lang="en"><head>
<meta name="robots" content="noindex,nofollow" />
<script>!function(i){var c="addEventListener",a="removeEventListener";"function"!=typeof Date.now&&(Date.now=function(){return+new Date});var r,f,u,p,e,t=window.performance;if(void 0===t&&(window.performance=t={}),"function"!=typeof t.now){var n=Date.now();t.timing&&t.timing.navigationStart&&(n=t.timing.navigationStart),t.now=function(){return Date.now()-n}}"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(n){var o=this,t=arguments.length-1,r=[];if(0<t)for(r.length=t;t--;)r[t]=arguments[t+1];if("function"!=typeof o)throw new TypeError;function i(){for(var t=arguments.length,e=new Array(t);t--;)e[t]=arguments[t];return e=r.concat(e),o.apply(this instanceof i?this:n,e)}return i.prototype=function t(e){if(e&&(t.prototype=e),!(this instanceof t))return new t}(o.prototype),i}),"function"!=typeof Object.create&&(Object.create=function(t,e){if("object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object prototype may only be an Object: "+t);if(null===t)throw new Error("This browser's implementation of Object.create is a shim and doesn't support \"null\" as the first argument.");if(void 0!==e)throw new Error("This browser's implementation of Object.create is a shim and doesn't support a second argument.");function n(){}return n.prototype=t,new n}),"function"!=typeof Object.assign&&Object.defineProperty(Object,"assign",{value:function(t,e){if(null===t)throw new TypeError("Cannot convert undefined or null to object");for(var n=Object(t),o=1;o<arguments.length;o++){var r=arguments[o];if(null!==r)for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(n[i]=r[i])}return n},writable:!0,configurable:!0}),"function"!=typeof Object.keys&&(r=Object.prototype.hasOwnProperty,f=!{toString:null}.propertyIsEnumerable("toString"),p=(u=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"]).length,Object.keys=function(t){if("function"!=typeof t&&("object"!=typeof t||null===t))throw new TypeError("Object.keys called on non-object");var e,n,o=[];for(e in t)r.call(t,e)&&o.push(e);if(f)for(n=0;n<p;n++)r.call(t,u[n])&&o.push(u[n]);return o}),function(){var t=("undefined"==typeof EventTarget?Node:EventTarget).prototype,o=t[c],r=t[a],e=!1;try{var n=Object.defineProperty({},"passive",{get:function(){e=!0}});i[c]("test",null,n),i[a]("test",null,n)}catch(t){console.error("Polyfill error:",t)}e||(t[c]=function(t,e,n){return"object"==typeof n&&(n=n.capture),o.call(this,t,e,n)},t[a]=function(t,e,n){return"object"==typeof n&&(n=n.capture),r.call(this,t,e,n)})}(),"function"!=typeof i.encodeURI&&(e=i.escape,i.encodeURI=i.escape=function(t){return e(t)}),"function"!=typeof Math.seed&&(Math.seed=function(t){var e=t,n=426381559378,o=4294967295;return function(){var t=((n=18e3*(65535&n)+(n>>16)&o)<<16)+(e=36969*(65535&e)+(e>>16)&o)&o;return.5+(t/=4294967296)}})}(this);
</script>
<script>
window.__FRVR = window.__FRVR || {};
window.__FRVR.startTime = Date.now();
window.LEGACY_COORD_SYSTEM = true;
</script>
<meta charset="UTF-8">
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<!--
/**
* @author Chris Benjaminsen http://chrisbenjaminsen.com/ @benjaminsen
*/
/** @license
Gold Digger FRVR 1.2.4
More info at http://frvr.com
Copyright (c) 2013+ FRVR Limited
All Rights Reserved!
FRVR is a registered trademark of FRVR Limited
*/
/**
Well hello there!
I see you are interested in the details of how this game was made!
It's written using a custom HTML5 engine built around PixiJS.
While I can't tell you more on the how, there is much more on the why to be find at
http://blog.chrisbenjaminsen.com where I write frequent status updates on the games I build
under the FRVR brand - - including a 100% honest track record of money earned and spend.
Hack on!
Chris Benjaminsen
chrisbenjaminsen.com
- - - - - - - - - - - - - -
Gold Digger FRVR would not be possible without the following open source projects:
pixi.js - v2.2.3
Copyright (c) 2012-2014, Mat Groves
http://goodboydigital.com/
pixi.js is licensed under the MIT License.
http://www.opensource.org/licenses/mit-license.php
Mat Groves http://matgroves.com/ @Doormat23
*/
-->
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0, viewport-fit=cover">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-title" content="Gold Digger FRVR">
<meta name="theme-color" content="#202020">
<meta name="HandheldFriendly" content="true">
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<meta name="google" content="notranslate">
<link rel="canonical" href="https://golddigger.frvr.com/">
<link rel="apple-touch-icon" sizes="60x60" href="./v/1576154523809/i/web/icon60x60.png">
<link rel="apple-touch-icon" sizes="76x76" href="./v/1576154523809/i/web/icon76x76.png">
<link rel="apple-touch-icon" sizes="120x120" href="./v/1576154523809/i/web/icon120x120.png">
<link rel="apple-touch-icon" sizes="196x196" href="./v/1576154523809/i/web/icon196x196.png">
<link rel="apple-touch-icon" sizes="256x256" href="./v/1576154523809/i/web/icon256x256.png">
<link rel="apple-touch-icon" sizes="1024x1024" href="./v/1576154523809/i/web/icon1024x1024.png">
<link rel="icon" type="image/png" href="./v/1576154523809/i/web/favicon.png">
<link rel="me" href="https://twitter.com/FRVRGames">
<meta name="facebook_label" content="Gold Digger FRVR - Deep Mining - Dig and Match Exploration">
<meta property="og:title" content="Gold Digger FRVR - Deep Mining">
<meta property="og:description" content="Start mining and get tons of gold in the best free digging game ever! Can you become the speleology tycoon?">
<meta property="og:site_name" content="Gold Digger FRVR">
<meta property="og:url" content="https://golddigger.frvr.com/">
<meta property="og:type" content="game">
<meta property="og:locale" content="en">
<meta property="og:image" content="https://golddigger.frvr.com/v/1576154523809/i/web/facebook01.png">
<meta property="fb:app_id" content="2521873641173108">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@FRVRGames">
<meta name="twitter:creator" content="@Benjaminsen">
<meta name="twitter:title" content="Gold Digger FRVR - Deep Mining - Dig and Match Exploration">
<meta name="twitter:image" content="https://golddigger.frvr.com/v/1576154523809/i/web/twitter01.png">
<meta name="twitter:description" content="Start mining and get tons of gold in the best free digging game ever! Can you become the speleology tycoon?">
<meta name="twitter:app:name:iphone" content="Gold Digger FRVR">
<meta name="twitter:app:id:iphone" content="">
<meta name="twitter:app:name:ipad" content="Gold Digger FRVR">
<meta name="twitter:app:id:ipad" content="">
<meta name="twitter:app:name:googleplay" content="Gold Digger FRVR">
<meta name="twitter:app:id:googleplay" content="com.frvr.golddigger">
<meta name="description" content="Start mining and get tons of gold in the best free digging game ever! Can you become the speleology tycoon?">
<meta name="keywords" content="pickaxe,rush,explore,cave,dirt,golden,miner,maze,drill,map,rocks,match,treasure,archeology,simulator">
<title>Gold Digger FRVR - Deep Mining - Dig and Match Exploration</title>
<style>
body {
background:#c8c8c8;
overflow:hidden;
position:fixed;
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
border:0px;padding:0px;margin:0px;
width:100%;
height:100%;
padding-top: constant(safe-area-inset-top);
}
preloader{
display:block;
width:100%;
height:100%;
background: #EEEEEE;
background:radial-gradient(ellipse at center, #ffffff 1%,#c8c8c8 150%);
position:fixed;
z-index:5;
}
preloader canvas, preloader img{
position: fixed;
}
preloader loadbar{
display:none;
position:fixed;
border:1px solid #afafaf;
}
preloader loadbar div{
display:block;
width:0%;
height:100%;
background-color:#007bb2;
}
#gameCanvas{
position: fixed;
top:0px;
left:0px;
width:0px;
height:0px;
background-color:#000000
}
#overlay{
position:absolute;
z-index:3;
left:50%;
margin-left:-70px;
visibility:hidden;
bottom:3px;
overflow:hidden;
text-align: center;
}
#overlay div{
float:left;
}
#overlay.cn {
margin-left: -190px;
}
/* Google+ share button */
#overlay.cn div#___plusone_0 {
width: 68px !important;
}
#overlay.cn div#___plusone_0 iframe {
position: relative !important;
top: -4px !important;
}
/* Sina Weibo share button */
#overlay wb\:share-button iframe {
width: 105px !important;
}
/* QZone share button */
#overlay iframe[version="1.0"] {
position: relative !important;
top: -2px;
}
@-ms-viewport{width:100%}
content{
background-color:#ffffff;
display: block;
padding:20px;
height:100%;
overflow:scroll;
}
content metadata{
float:right;
margin-left:10px;
text-align:center;
}
h1{
margin:0px;
font-weight:100;
font-size:50px;
}
a{
line-height:2em;
}
h3{
margin-bottom:0px;
}
@keyframes w{0%{transform:rotate(0deg);}20%{transform:rotate(-3deg) scale(1.4) translate(0px,-5px);}50%{transform:rotate(3deg) scale(1.4) translate(0px,-5px);}80%{transform:rotate(-3deg) scale(1.4) translate(0px,-5px);}100%{transform:rotate(0deg);}}
.w {animation:w 1.5s 1;}
</style>
<script src="poki-sdk.js"></script><style>
.pokiSdkContainer {
overflow: hidden;
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
z-index: 1000;
display: flex;
align-items: center;
justify-content: center;
}
.pokiSdkContainer.pokiSdkFixed {
position: fixed;
}
.pokiSdkContainer.pokiSdkVisible {
display: block;
}
.pokiSdkContainer.pokiSdkHidden,
.pokiSdkSpinnerContainer.pokiSdkHidden {
display: none;
}
.pokiSdkContainer.pokiSdkHidden,
.pokiSdkSpinnerContainer {
pointer-events: none;
}
.pokiSdkSpinnerContainer {
z-index: 10;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: url('https://a.poki.com/images/thumb_anim_2x.gif') 50% 50% no-repeat;
user-select: none;
}
.pokiSdkInsideContainer {
background: #000;
position: relative;
z-index: 1;
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
opacity: 0;
-webkit-transition: opacity 0.5s ease-in-out;
-moz-transition: opacity 0.5s ease-in-out;
-ms-transition: opacity 0.5s ease-in-out;
-o-transition: opacity 0.5s ease-in-out;
transition: opacity 0.5s ease-in-out;
}
.pokiSdkContainer.pokiSdkVisible .pokiSdkInsideContainer {
opacity: 1;
}
.pokiSDKAdContainer, .pokiSdkVideoContainer {
position: absolute;
width: 100%;
height: 100%;
}
.pokiSdkStartAdButton {
position: absolute;
z-index: 9999;
top: 0;
padding-top: 10%;
width: 100%;
height: 100%;
text-align: center;
color: #FFF;
font: 700 15pt 'Arial', sans-serif;
font-weight: bold;
letter-spacing: 1px;
transition: 0.1s ease-in-out;
line-height: 1em;
}
.pokiSdkPauseButton {
cursor:pointer;
position: absolute;
top: 50%;
left: 50%;
z-index: 1;
}
.pokiSdkPauseButton:before {
content: '';
position: absolute;
width: 100px;
height: 100px;
display: block;
border: 2px solid #fff;
border-radius: 50%;
user-select: none;
background-color: rgba(0, 0, 0, 0.6);
transition: background-color 0.5s ease;
animation: 1s linear infinite pokiPulse;
}
.pokiSdkPauseButton:after {
content: '';
position: absolute;
display: block;
box-sizing: border-box;
border-color: transparent transparent transparent #fff;
border-style: solid;
border-width: 26px 0 26px 40px;
pointer-events: none;
animation: 1s linear infinite pokiPulse;
left: 6px;
}
.pokiSdkPauseButtonBG {
position: fixed;
top: 0;
left: 0;
display: block;
content: '';
background: rgba(0, 43, 80, 0.5);
width: 100%;
height: 100%;
}
.pokiSdkPauseButtonBG:hover{
background: rgba(0, 43, 80, 0.7);
}
@keyframes pokiPulse {
0% {
transform: translate(-50%, -50%) scale(0.95);
}
70% {
transform: translate(-50%, -50%) scale(1.1);
}
100% {
transform: translate(-50%, -50%) scale(0.95);
}
}
.pokiSdkProgressContainer {
background: #B8C7DD;
width: 100%;
height: 5px;
position: absolute;
bottom: 0;
z-index: 9999;
}
.pokiSdkProgressBar {
position:relative;
bottom:0px;
background: #FFDC00;
height: 100%;
width: 0%;
transition: width 0.5s;
transition-timing-function: linear;
}
.pokiSdkProgressBar.pokiSdkVisible, .pokiSdkPauseButton.pokiSdkVisible, .pokiSdkStartAdButton.pokiSdkVisible {
display: block;
pointer-events: auto;
}
.pokiSdkProgressBar.pokiSdkHidden, .pokiSdkPauseButton.pokiSdkHidden, .pokiSdkStartAdButton.pokiSdkHidden {
display: none;
pointer-events: none;
}
</style></head>
<body>
<!-- TODO debugcode, move me to provider -->
<div id="debug" style="position:absolute; color:red; left:40px; z-index: 9999999"></div>
<script>
window.__antialias = false
</script>
<script>
var version = "1.2.4"
var gaPath = '/golddigger/' + version + '/';
var initTime = 1*new Date();
window.vpath = "./v/1576154523809/";
window.spath = "./v/1576154523809/external.js";
window.extsize = 1811152;
//In seperate code block to load first & not trigger when JS is disabled
var preloader = document.createElement('preloader');document.body.appendChild(preloader);
</script>
<script>
//ie9 polyfill
if(!(window.console && console.log)) {
var fn = function(){};
console={log:fn,debug:fn,info:fn,warn:fn,error:fn};
}
Host = {
Localize:{
languages:
[]
},dataUrlsSupported:(function(){
var c = document.createElement("canvas");
return c.toDataURL&&(c.toDataURL("image/png").indexOf("data:image/png") == 0);
})()
};
(function(scope){
(function(w,d,a,m){var g='GameAnalytics';w[g]=w[g]||function(){(w[g].q=w[g].q||[]).push(arguments)}})(window,document);
var relasedCanvasElements = []
var completed = 0;
var preview = 0;
var facebookAPIInited = false;
var gameIsLoaded = false;
scope._jsonData={};
;
scope._jsonData['ab_tests'] = {"ab_ftue":{"cohorts":["disabled","enabled"]},"ab_blastpreview":{"cohorts":["disabled","enabled"]}};
scope._jsonData['track-ga'] = {"gaIds":{"all":"UA-54081731-1"},"state":"{appId=app_id,appName=app_name,appVersion=app_version,metric1=play_session_count,dimension2=cohort,dimension4=play_session_id,dimension3=device_id,metric2=days_elapsed,metric3=days_played,dimension5=channel,dimension6=entry_point,dimension7=utm_string,dimension8=screen,dimension9=facebook_context,metric4=currency_amount,metric5=missions_completed,metric6=progression,metric7=games_played}","events":{"default":"name,,value,_params","options_change":"name,option_name:option_value","game_end":"name,level_id,game_duration","game_play_start,game_continue_used":"name,level_id","keepalive,new_user,mission_success":"name","coin_spent,tutorial_step_completed,session_start":"name,,value","game_loaded":"name,,loading_time","social_engage,engage":"'engage',engage_id:button_placement,1","play_with_friend":"name,,1","share,invite":"name,button_placement,1","cross_promotion_show":"name,button_placement,1","cross_promotion_click,cross_promotion_success,cross_promotion_failure":"name,target_game,1","ad_mandatory_request":"name,,value,{_merge=_params,dimension13=provider}","ad_mandatory_response":"name,ad_response,value,{_merge=_params,dimension13=provider}","ad_mandatory_show":"name,,value,{_merge=_params,dimension13=provider}","ad_mandatory_finish":"name,ad_result,value,{_merge=_params,dimension13=provider}","ad_mandatory_blocked":"name,,value,{_merge=_params,dimension13=provider}","ad_mandatory_pass":"name,,value,{_merge=_params,dimension13=provider}","ad_mandatory_throttled":"name,throttle_type,value,{_merge=_params,dimension13=provider}","ad_rewarded_request":"name,,value,{_merge=_params,dimension13=provider}","ad_rewarded_response":"name,ad_response,value,{_merge=_params,dimension13=provider}","ad_rewarded_show":"name,,value,{_merge=_params,dimension13=provider}","ad_rewarded_finish":"name,ad_result,value,{_merge=_params,dimension13=provider}","ad_rewarded_blocked":"name,,value,{_merge=_params,dimension13=provider}","ad_rewarded_pass":"name,,value,{_merge=_params,dimension13=provider}","ad_rewarded_throttled":"name,throttle_type,value,{_merge=_params,dimension13=provider}","chatbot_noshow,chatbot_show,chatbot_success,chatbot_issubscribed,chatbot_useraborted":"name,,","chatbot_error":"name,reason,"}};
scope._jsonData['track-gma'] = {"url":"https://cdn.frvr.com/utils/gameanalytics310.js","currencies":"coin","itemtypes":"unknown","channelMapping":{"web_edge,web_firefox,web_opera,web_safari,web_chrome,":"web","web_safari_ios,web_chrome_ios":"web_ios","vkru,okru,twitch,hago":"other"},"customDimensions01":"web,web_ios,web_samsung,web_samsung_m4s,web_silk,chromeos,android,ios,rcs,samsung,facebook_instant,facebook_canvasweb,facebook_canvas,bixby,imessage,spil,kongregate,kik,twitter,other","events":{"new_user":"'addDesignEvent',name","game_loaded":"'addProgressionEvent','Complete',name,,,loading_time","keepalive":"'addDesignEvent',name","game_play_start":"'addProgressionEvent','Start',level_id","game_continue_used":"'addProgressionEvent','Start',level_id","game_end":"'addProgressionEvent','Complete',level_id,,,value","game_end-lose":"'addProgressionEvent','Fail',level_id,,,value","mission_success":"'addDesignEvent',name","ad_rewarded_request":"'addDesignEvent',name:screen","ad_rewarded_response":"'addDesignEvent',name:screen:ad_response","ad_rewarded_show":"'addDesignEvent',name:screen","ad_rewarded_finish":"'addDesignEvent',name:screen:ad_result,value","ad_mandatory_request":"'addDesignEvent',name:screen","ad_mandatory_response":"'addDesignEvent',name:screen:ad_response","ad_mandatory_show":"'addDesignEvent',name:screen","ad_mandatory_finish":"'addDesignEvent',name:screen:ad_result,value","coin_spent":"'addResourceEvent','Sink','coin',value,'unknown','consumed'","play_with_friend":"'addDesignEvent',name:screen,1","share,invite":"'addDesignEvent',name:button_placement,1","crosspromotion":"'addDesignEvent',name:screen","cross_promotion_show":"'addDesignEvent',name:button_placement,1","cross_promotion_success":"'addDesignEvent',name:target_game,1","engage":"'addDesignEvent',name:engage_id","iap_interaction":"'addDesignEvent',name:iap_id,value","iap_completed":"'addDesignEvent',name:iap_id,value","iap_failed":"'addDesignEvent',name:iap_id,value","tutorial_step_completed":"'addDesignEvent',name:value","options_change":"'addDesignEvent',option_name:option_value","social_engage":"'addDesignEvent','engage':engage_id:button_placement,1"}};
scope.getNewCanvasObject = function(){
var cachedElement = relasedCanvasElements.pop();
if(cachedElement) return cachedElement;
return document.createElement('canvas')
}
scope.releaseCanvas = function(canvas){
canvas.getContext('2d').setTransform(1, 0, 0, 1, 0, 0);
canvas.width = canvas.height = 1
relasedCanvasElements.push(canvas)
}
var isFBInstant = !!window.FBInstant;
if(isFBInstant){
gaPath += 'app/facebook_instant/';
FBInstant.logEvent&&FBInstant.logEvent(
"NLPPreloadStart"
)
}
var isTwitch = !!window.Twitch;
if(isTwitch){
gaPath += 'app/twitch/';
}
var loadQueue = [];
var loadQueueTimer = null;
function triggerQueue() {
var t = new Date().getTime();
while(loadQueue.length && (new Date().getTime() - t < 10)) {
loadQueue.shift()();
}
if(loadQueue.length) {
popQueue();
}
}
function popQueue() {
clearTimeout(loadQueueTimer);
if(loadQueueTimer === null) triggerQueue();
loadQueueTimer = setTimeout(function() {
triggerQueue();
}, 1);
}
function buildCharIndex(chars) {
var index = {};
for(var i = 0; i < chars.length; i++) index[chars[i]] = i;
return index;
}
var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/!#$&*-,.:;@()<=>?[]^`{|}";
var charIndex = buildCharIndex(chars);
var intChars = "()<=>?[]^`{|}";
var intCharIndex = buildCharIndex(intChars);
scope.getJSGImageWrapper = function getJSGImageWrapper(path, actions, cords, drawCallback) {
function getCord() {
var first = cords[cordOffset++];
var res, intChar;
switch(first) {
case '_': res = 0; break;
case '~': res = 1; break;
case '%': res = 149932; break;
case '\'': res = -149932; break;
case '@':
res =
charIndex[cords[cordOffset++]]
+ charIndex[cords[cordOffset++]] * 74
+ charIndex[cords[cordOffset++]] * 5476 // (74 * 74)
+ charIndex[cords[cordOffset++]] * 405224; // (74 * 74 * 74)
res = (res / 100) - 149932;
break;
default:
intChar = intCharIndex[first];
if(intChar !== undefined) {
res = intChar * 88 + charIndex[cords[cordOffset++]];
} else {
res =
charIndex[first]
+ charIndex[cords[cordOffset++]] * 74
+ charIndex[cords[cordOffset++]] * 5476; // (74 * 74)
res = (res / 100) - 2026;
}
}
return res;
}
function getColor() {
return getCord()
? 'rgb(' + getCord() + ',' + getCord() + ',' + getCord() + ')'
: 'rgba(' + getCord() + ',' + getCord() + ',' + getCord() + ',' + getCord() + ')';
}
function toCanvas(canvas, scale) {
canvas.width = Math.ceil(assetWidth * scale);
canvas.height = Math.ceil(assetHeight * scale);
var ctx = canvas.getContext('2d');
ctx.scale(scale, scale);
var canvasStack = [canvas];
var fillObject;
try {
for(var a = 0; a < actions.length; a++) {
switch(actions[a]) {
case '4':
var newCanvas = getNewCanvasObject();
newCanvas.width = getCord();
newCanvas.height = getCord();
ctx = newCanvas.getContext('2d');
canvasStack.push(newCanvas);
break;
case 'b':
var pattern = ctx.createPattern(ctx.canvas, 'no-repeat');
var removed = canvasStack.pop();
releaseCanvas(removed);
ctx = canvasStack[canvasStack.length - 1].getContext('2d');
ctx.fillStyle = pattern;
break;
case 't': fillObject = ctx.createLinearGradient(getCord(), getCord(), getCord(), getCord()); break;
case 'D': fillObject = ctx.createRadialGradient(getCord(), getCord(), getCord(), getCord(), getCord(), getCord()); break;
case '8': fillObject.addColorStop(getCord(), getColor()); break;
case 'F': ctx.fillStyle = fillObject; break;
case 'f': ctx.save(); break;
case '/': ctx.bezierCurveTo(getCord(), getCord(), getCord(), getCord(), getCord(), getCord()); break;
case 'p': ctx.strokeStyle = getColor(); break;
case 'w': ctx.lineCap = 'butt'; break;
case 'y': ctx.lineJoin = 'miter'; break;
case '9': ctx.miterLimit = getCord(); break;
case '6': ctx.fillStyle = getColor(); break;
case 'n': ctx.beginPath(); break;
case 'q': ctx.closePath(); break;
case 'o': ctx.fill(); break;
case 'P': ctx.stroke(); break;
case 'r': ctx.restore(); break;
case '2': ctx.arc(getCord(), getCord(), getCord(), getCord(), getCord(), getCord() === 1); break;
case 'm': ctx.moveTo(getCord(),getCord()); break;
case 'l': ctx.lineTo(getCord(),getCord()); break;
case '5': ctx.quadraticCurveTo(getCord(), getCord(), getCord(), getCord()); break;
case 'C': ctx.clip(); break;
case 'E': ctx.lineWidth = getCord(); break;
case 'A': ctx.transform(getCord(), getCord(), getCord(), getCord(), getCord(), getCord()); break;
case 'u': ctx.translate(getCord(), getCord()); break;
case 'V': ctx.scale(getCord(), getCord()); break;
case '0': ctx.rotate(getCord()); break;
case 'K': ctx.globalAlpha = getCord(); break;
case 'G': ctx.strokeStyle = fillObject; break;
default: console.error('unhandled', actions[a]);
}
}
} catch(err) {
window.onerror && window.onerror('Draw failure in > ' + path + ' ' + err.message, err.sourceURL, err.line);
}
// Reset JSG drawing
cordOffset = 0;
getCord();
getCord();
return canvas;
}
function handleDraw(config) {
config = config || {};
var scale = config.scale || 1;
var forceCanvas = config.forceCanvas || false;
//var instantDraw = config.instantDraw || false; // Check if we need this
var jsgImage;
function handleCallback() {
jsgImage.onload = null;
jsgImage.onerror = null;
drawCallback && drawCallback()
drawCallback = null;
}
function loadNext() {
var jsgCanvas = toCanvas(getNewCanvasObject(), scale);
if(typeof drawCallback === 'function') {
jsgImage.onload = handleCallback;
jsgImage.onerror = handleCallback;
}
jsgImage.src = jsgCanvas.toDataURL(); // TODO: Investigate performance impact here
releaseCanvas(jsgCanvas);
}
if(Host.dataUrlsSupported && !forceCanvas) {
jsgImage = new Image();
loadNext();
return jsgImage;
} else {
var jsgCanvas = toCanvas(getNewCanvasObject(), scale);
jsgCanvas.isCanvas = true;
drawCallback && drawCallback()
drawCallback = null
return jsgCanvas;
}
}
var cordOffset = 0;
var assetWidth = getCord();
var assetHeight = getCord();
var jsgWrapper = {
isJSG: true,
path: path,
width: assetWidth,
height: assetHeight,
actions: actions,
cords: cords,
draw: handleDraw
};
return jsgWrapper;
};
var canvas, loadbar, progressbar, logoOptions = {forceCanvas: true};
if(!isFBInstant) {
canvas = getJSGImageWrapper('logo','6nmllmllo6nmllmllo6nmllllllmlllmlllmllllo6nmllmlllmllo6nmllmlllmlllmllllo6nmlllmlllmllllmllllo6nmlllmlllo6nmlllllllllllllmlllllll//lllllml//lllmllllllllllmlllllll//lllllml//lllm////m////lm////lll//llllm/////llo6nmlllmllmlllmllllo6nmllo6nmlllo6KnmllmllllllllmlllllllloK','Iq7|s~<+(2)N>4>o=K?j>m?r{[<=}b>G}^<W~</(3(`=M?i=E]U>m?q):)]=;=O)#<(~<h<g<n|U(]>4>n>{>P?9=w[D=W`N(0|H_(T>(_==(.=})t?}?9=w>{>P=;=O>Y).:G7>K,D6?7`-[9`i[H{,[H~)y)y)y|U(]k*5)F}^<W(X=[(>)0):)](.=},D6?7|,[@`-[+~_)1<h{W=J}^<W|U(]<I?k)x?E)t?}=E]U[D=W?9=w>Y).?d<n`i[H]r>;]V>}`H]W`-[+~)u)!)!>4>n|U(]{W=J>m?q=E]U(.[3(T>()t?}Ov6<(Iq7<^:G7>K{,[H||>}]$>6`|?<{,[H`i[H]r>;~)J)})7):)])x?E)t?}(.=}>^>Q=y=L=;=O>{>P~(K)z<c)`|s<h|H<h{W=P{W=i{E=i`+<h`+<h^;=h^;=,^k=,^Z)]^Z)/^s)/|s>Y|s>9|H>9{a>|{a?*|s[V|s[h|V?5{SY8uqK1DTvMs0[i`YDTvMNz6!u^Z?B^Z>V^Z>D^r>D|r>Y|s>Y|s>9^:?F^:?0^:yLuSiz?+`YyLu`3;+t`*?G`*>9`*>9^:>9^:^M|s^h|d`m^Z`L^Z^5^3]{{&]Y^3[,^Z[p^Z]u|d]&|s{C|s{n|H{n{a{!{a|u|s|}|s}L|V|i{SSE4qK18k4Ms0}M`Y8k4MNzqI4^Z{&^Z{A^Z`-^r`-|r{C|s{C|s{n^:{.^:QQ3,LzOd3+hz|n`YOd34h0kG3iz0{.`*{m`*{n^:{n^:}P^f}PYEyGq448x}u]|cy548x6y5QBy}<^f6y5s2ycy50:y}u^+Gq4+:y}Pg0y}P^f}.^foq5O;xam5Y*x}u^E}ZY*xIx4E;x}V^f}Vu4y*24K#y}u^4}*U#yyq5q5y}.^f}.^f}g^Oe.4+Hy0E5gHy}x^OOa5gHyMd54Ly}9^WMd5Aeyia52iy}0^juS5qlyIU5Eny}3^m}+^u}3^u}x^nmK5EnyWJ5gly}t^jJF5kkyFB5aky}m^j}m^v}g^v}g^O}g^O}m^eAC5sdysG5sdy}u^evS5sdycU5wcy}2^XcU5:RyqT5aQy}1^UYQ5sOyuN5iOy}v^T2G5iOyHD5sOy}m^T}m^e}m^e~)C)R)O=E]U?F[g{W=J>m?q=M?i<I?k=E]U>Y).<r)+):)]=;=O||>}Ov6<(Gn6)+O.5(.}^<W~_)u)>[q?o`H]W]V>}~_<E<q|B]e`H]W`-[+|,[@~_(x(*mAl}^<W|U=N{[<=]r>;]V>}[q?o[]?*]x?h^E?R^@?X]$>7]r>;?{=P?x=h?x=h>?>K>{>P?9=w?9=w[E=W?{=P~').draw(logoOptions);
loadbar = document.createElement('loadbar');
progressbar = document.createElement('div');
preloader.appendChild(loadbar);
loadbar.appendChild(progressbar);
preloader.appendChild(canvas);
}
var ow = 0
var oh = 0
function handleResize(){
if(!isFBInstant){
var w = document.documentElement.clientWidth;
var h = Math.min(window.innerHeight,document.documentElement.clientHeight);
if(ow!=w||oh!=h){
ow = w;oh = h;
var s = Math.min(w,h)*.8>>0
var nh = s*0.8187702265>>0
var t = ((h-nh*1.15)/2>>0)
loadbar.style.width = canvas.style.width = s+"px"
canvas.style.height = nh +"px"
loadbar.style.left = canvas.style.left = ((w-s)/2>>0)+"px"
canvas.style.top = t+"px"
loadbar.style.height = Math.max(Math.min((s/40>>0),10),4) + "px"
loadbar.style.top = (t + nh*1.05)+"px"
}
}
}
handleResize()
scope.htmlprogress = function(total, left){
completed = Math.max((left / total), completed)
}
var timer = setInterval(function(){
if(completed < .5){
completed += (.5-completed)/100
}
preview += (completed-preview)/10
if(isFBInstant && facebookAPIInited){
FBInstant.setLoadingProgress(preview*100>>0)
} else {
progressbar&&(progressbar.style.width = (preview*100>>0) + "%")
}
handleResize();
},50)
setTimeout(function(){
loadbar&&(loadbar.style.display = "block")
},500)
function handleFacebookLoaded() {
if(isFBInstant && facebookAPIInited && gameIsLoaded) {
FBInstant.logEvent('NLPhandleFacebookLoaded');
FBInstant.setLoadingProgress(100);
function handleSuccess() {
FBInstant.logEvent&&FBInstant.logEvent('NLPstartGameAsync');
var locale = false;
// If it's one of the supported languages then load it
if(locale && locale != 'en-US' && Host.Localize.languages.indexOf(locale) > -1) {
Host.Localize.Load(locale, function(language, success) {
console.log('Localization loaded: ', language, success);
Host.emit('FBInstantPreloadComplete');
});
} else {
// Do english
Host.emit('FBInstantPreloadComplete');
}
}
function handleError(err) {
//<debug>
console.error('Instant Error:', err);
//</debug>
window.onerror && window.onerror('handleFacebookLoaded > startGameAsync (' + FBInstant.getSDKVersion() + ') > ' + (err.message || err.toString()), err);
FBInstant.logEvent('startGameAsyncError', 1, err);
Host.emit('FBInstantPreloadComplete');
}
FBInstant.startGameAsync()
.then(handleSuccess)
.catch(handleError);
}
}
scope.htmlclean = function() {
if(isFBInstant) {
FBInstant.logEvent('NLPhtmlclean');
}
gameIsLoaded = true;
// Stop the progress bar timer
clearInterval(timer)
// Remove the preloader
if(preloader){
preloader.parentNode&&preloader.parentNode.removeChild(preloader)
}
// Dealloc the canvas
if(canvas){
canvas.width = canvas.height = 1
}
// Garbage collection
loadbar = progressbar = canvas = preloader = null;
handleFacebookLoaded()
}
// Embed general data - this is used by builder.rb's embed_data_content
// files: Array of filenames
// data : Array of data that mapes to filenames
scope.embeddedFiles = {};
scope.embedFiles = function(files,data) {
for( var a=0;a<files.length;a++){
var d = data[a]
scope.embeddedFiles[files[a]] = d;
}
}
// Embed image data
scope.embeddedAssets = {};
scope.embedLoad = function(path,file){
scope.embeddedAssets[path] = file;
}
scope.loadAssets = function(files, svgCommands, data){
for( var a=0;a<files.length;a++){
var path = files[a]
var svg = svgCommands[a];
if(svg){
scope.embedLoad(path,[svg,data[a]])
}else{
scope.embedLoad(path, data[a])
}
}
}
var req = new XMLHttpRequest();
req.addEventListener('load', function(event){
var s = document.createElement("script");
//s.text rather than innerHTML for ie9
s.text = event.target.responseText;
document.documentElement.appendChild(s);
})
req.addEventListener("progress", function(event) {
if (event.lengthComputable) {
htmlprogress(event.total, event.loaded*.7)
} else {
htmlprogress(scope.extsize||500000, event.loaded)
}
}, false);
if(scope.spath !== undefined){
req.open("GET", spath);
req.send()
}
if(isFBInstant){
FBInstant.logEvent&&FBInstant.logEvent( "FRVRAppVersion", 26, { build: "26", version: version })
FBInstant.logEvent&&FBInstant.logEvent(
"NLPBeforeinitializeAsync"
)
FBInstant.initializeAsync()
.then(function() {
FBInstant.logEvent&&FBInstant.logEvent(
"NLPInitializeAsync"
)
facebookAPIInited = true
handleFacebookLoaded()
gax('set', 'userId', FBInstant.player.getID());
})
.catch(function(err) {
window.onerror && window.onerror('Failure in promise initializeAsync > ' + err.message, err);
//We fire this no matter what, we always whant to show the game regardless of the users crashy devices.
facebookAPIInited = true
handleFacebookLoaded()
});
}
})(this)
</script>
<canvas id="gameCanvas" width="640" height="360" style="height: 360px; width: 640px;"></canvas>
<script>
var cs = document.getElementById('gameCanvas').style;
cs.width = cs.height = "100%"
</script>
<div id="overlay"></div>
<content itemscope="" itemtype="https://schema.org/VideoGame">
<h1 itemprop="name">Gold Digger FRVR</h1>
<meta itemprop="url" content="https://golddigger.frvr.com/">
<div itemprop="author" itemscope="" itemtype="http://schema.org/Organization">
<p style="margin-top:0px"><span itemprop="name"><a itemprop="url" href="http://frvr.com/">By FRVR</a></span></p>
</div>
<metadata>
<!--<img itemprop="image" src="" data-original="./v/1576154523809/i/web/icon196x196.png"/>-->
<meta itemprop="playMode" content="SinglePlayer">
<p>Genre: <span itemprop="genre"></span></p>
<div itemscope="" itemtype="http://schema.org/AggregateRating" itemprop="aggregateRating">
<div>Average Rating: <b itemprop="ratingValue">4.8</b>/<b itemprop="bestRating">5</b></div>
<meta itemprop="reviewCount" content="9427">
</div>
<link itemprop="applicationCategory" content="Game">
<link itemprop="applicationSubCategory" content="Board, Puzzle">
<span itemprop="offers" itemscope="" itemtype="http://schema.org/Offer">
<meta itemprop="price" content="$0">
<meta itemprop="priceCurrency" content="USD">
<link itemprop="availability" href="http://schema.org/InStock">
</span>
<meta itemprop="contentRating" content="Everyone">
<meta itemprop="playMode" content="SinglePlayer">
</metadata>
<p>Gold Digger FRVR is the best digging game, for both gold rush veterans and mining fans. Take your pickaxe and your helmet and start drilling!</p>
<p>Lets dig day and night, lets find tons of gold and some treasures, lets put them on the ground and make some money! But aware of the giant rocks, make smart use of your pickaxe and dig wisely, otherwise they will fall on you and you'll lose all the gold! Instead of that, try to connect three or more rocks to blast them and get even more gold!</p>
<p>Explore every corner of the cave and do not leave a stone unexcavated. Who knows what could you find in the depths of a gold mine? Dig up ancient dinosaurs bones, valuable gold nuggets of even shiny diamonds. No rock can stop you from your mining mission! Be careful of underground explosions and use the checkpoint base to save your progress.</p>
Start mining and fill your bag with gold and diamonds in the best free digging game ever! Can you become the speleology tycoon?
<p><a href=".">Please enable JavaScript to play now!</a></p>
<h2>More information</h2>
<ul>
<li><a href="//frvr.com/">FRVR Website</a></li>
<li><a href="http://news.frvr.com">FRVR News</a></li>
<li><a href="//twitter.com/frvrgames">FRVR on Twitter</a></li>
<li><a href="//www.facebook.com/frvrgames">FRVR on Facebook</a></li>
<li><a href="//plus.google.com/+Frvrgames">FRVR on Google+</a></li>
</ul>
<h2>More great games</h2>
<ul>
</ul>
<h2>More platforms</h2>
<ul>
</ul>
<p><a href="//frvr.com/">Always get the greatest new games on frvr.com</a></p>
</content>
<script>
function parseStack(err) {
var stack = [];
var lines = (err && err.stack || '').split('\n'); // split stack trace into lines
lines.shift(); // remove first line, the error message
for(var i = 0; i < lines.length; i++) {
// simplyfy and shorten details
stack.push(lines[i]
.replace(/^\s*at\s+/g, '')
.replace(/(https?:\/\/[^\/]+)?/g, '')
.replace(/https?:\/\/[^\/]+/g, '')
.replace(/\/?game\/[^\/]+\/[^\/]+/g, '')
.replace(/:?<anonymous>:?/g, '')
.replace(/^([^ ]+)\s+\(/g, '$1(')
.replace(/^([0-9]+:[0-9]+$)/g, '($1)')
);
}
return stack;
}
function createErrorHandler(errorType) {
return function(errorMsg, sourceURL, line, column, err) {
if(sourceURL instanceof Error) { // Enable optional parameters
err = sourceURL;
sourceURL = undefined;
}
err = err || new Error(errorMsg);
var parts = ((err.stack || '').split('\n')[1] || '').split(':');
var colFromStack = parts.pop() || undefined;
var lineFromStack = parts.pop() || undefined;
line = line || err.lineNumber || err.lineno || err.line || lineFromStack || '';
column = column || err.columnNumber || err.colno || err.column || colFromStack || '';
sourceURL = sourceURL || err.sourceURL || '';
errorMsg = errorMsg || err.message || (err.toString && err.toString()) || '';
var parsedStack = parseStack(err) || [];
var errSrc = sourceURL + ': ' + line + ': ' + column;
window.Host && Host.Log && Host.Log(errorType + ' Error: ' + errorMsg + ': ' + errSrc + '\nStack: ' + parsedStack.join('\n'));
console.error(errorType + ' Error', errorMsg + ': ' + errSrc, err);
errSrc += ': ' + parsedStack.join('|').substr(0, 150);
var eventCategory = 'golddigger 1.2.4 26 ' + errorType + ' Error';
var errTime = Date.now() - ((window && window.__FRVR && window.__FRVR.startTime) || 0);
if(window.gax) {
gax('send', 'event', eventCategory, errorMsg, errSrc, errTime);
gax('send', 'exception', {exDescription: eventCategory + ': ' + errorMsg + ': ' + errSrc});
}
if(typeof FBInstant !== 'undefined' && typeof FBInstant.logEvent === 'function') {
FBInstant.logEvent('onerror', errTime, {
appName: 'golddigger',
appVersion: '1.2.4',
appBuild: '26',
category: eventCategory,
message: errorMsg,
stack: errSrc
});
}
};
}
window.onerror = createErrorHandler('JavaScript');
var promiseErrorHandler = createErrorHandler('Promise');
window.onunhandledrejection = function(rejection) {
var err = (rejection && rejection.reason) || {};
promiseErrorHandler(undefined, undefined, undefined, undefined, err);
};
window.gaAppInfo = {
appId: 'com.frvr.golddigger',
appName: 'golddigger',
appVersion: '1.2.4',
};
window.initGoogle = function(){
// ga('set', window.gaAppInfo);
// ga('create', 'UA-54081731-1', 'auto', window.gaAppInfo);
// ga('create', 'UA-54081731-48', 'auto', 'game', window.gaAppInfo);
// gax('require', 'displayfeatures');
// gax('send', 'pageview', gaPath + location.search);
// // Record native-ish "Promise" support
// var eventCategory = 'golddigger 1.2.4 26 Promise Support';
// gax('send', 'event', eventCategory, (typeof Promise === 'function') ? 'supported' : 'unsupported');
}
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();;a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga(function() {
setTimeout(function(){
window.location.hash = ""
if (window.history && window.history.replaceState instanceof Function) {
window.history.replaceState({}, document.title,'./');
}
},5000)
});
window.gax=function() {
// ga.apply(this,arguments)
// a = arguments; a[0] = "game."+a[0]
// ga.apply(this,a);
}
</script>
<script>
window.initGoogle();
</script>
<script>
(function() {
function Scitylana(tracker, config) {
var sciUAs = [], uasInited = false;
var reAmp = /^&|&$/ig, reTid = /&tid=([^&]+)&/;
var orgSendHitTask = tracker.get('sendHitTask');
function sciData(tracker) {
var time = (new Date).getTime();
var _sl_order = window._sl_order;
if(_sl_order >= time) _sl_order++;
else _sl_order = time;
window._sl_order = _sl_order;
var hasReferrer = !document.referrer ? 0 : 1;
var userId = tracker.get('userId') || tracker.get('clientId');
return 'sl=1&u=' + userId + '&t=' + _sl_order + '&r=' + hasReferrer;
}
function initUAs() {
for(var xsIs in config){
var sciUa = config[xsIs];
if((xsIs === 'any' || ((typeof XS !== 'undefined') && XS.is[xsIs])) && sciUAs.indexOf(sciUa) === -1) sciUAs.push(sciUa);
}
if((typeof XS !== 'undefined') && XS.is) uasInited = true;
}
function sendHitTask(model) {
orgSendHitTask(model);
if(!uasInited) initUAs();
var hitPayload = model.get('hitPayload') + '&cd1=' + encodeURIComponent(sciData(tracker));
for(var i = 0; i < sciUAs.length; i++) {
model.set('hitPayload', ('&' + hitPayload + '&').replace(reTid, '&tid=' + sciUAs[i] + '&').replace(reAmp, ''), true);
orgSendHitTask(model);
}
}
tracker.set('sendHitTask', sendHitTask);
}
var _jsonData = window._jsonData || {};
if(_jsonData.scitylana) {
// ga('provide', 'scitylana', Scitylana);
// ga('require', 'scitylana', _jsonData.scitylana);
}
})();
</script>
</body>
</html>