////////////////////////////////////////////////////////////
// CANVAS
////////////////////////////////////////////////////////////
var stage
var canvasW=0;
var canvasH=0;
/*!
*
* START GAME CANVAS - This is the function that runs to setup game canvas
*
*/
function initGameCanvas(w,h){
var gameCanvas = document.getElementById("gameCanvas");
gameCanvas.width = w;
gameCanvas.height = h;
canvasW=w;
canvasH=h;
stage = new createjs.Stage("gameCanvas");
createjs.Touch.enable(stage);
stage.enableMouseOver(20);
stage.mouseMoveOutside = true;
createjs.Ticker.setFPS(60);
createjs.Ticker.addEventListener("tick", tick);
}
var guide = false;
var canvasContainer, mainContainer, gameContainer, statusContainer, gameStatusContainer, worldContainer, resultContainer, confirmContainer;
var guideline, bg, logo, buttonStart, buttonStartTxt, buttonRestart, buttonFacebook, buttonTwitter, buttonWhatsapp, buttonFullscreen, buttonSoundOn, buttonSoundOff;
var dimOverlay;
$.sprites = {};
$.background = {};
// SOUND TOGGLE (új rajzolt gomb)
var soundToggleButton, soundToggleBg, soundIconOn, soundIconOff;
var __isMuted = false; // induló állapot (szinkronizáljuk, ha van SoundJS)
/*!
*
* BUILD GAME CANVAS ASSERTS - This is the function that runs to build game canvas asserts
*
*/
function buildGameCanvas(){
canvasContainer = new createjs.Container();
mainContainer = new createjs.Container();
gameContainer = new createjs.Container();
statusContainer = new createjs.Container();
gameStatusContainer = new createjs.Container();
worldContainer = new createjs.Container();
resultContainer = new createjs.Container();
confirmContainer = new createjs.Container();
bg = new createjs.Bitmap(loader.getResult('base'));
logo = new createjs.Bitmap(loader.getResult('logo'));
// --- LOGO: max 300x400 px
centerReg(logo); // a (x,y) innentől a logó közepe
(function capLogo(){
if (!logo || !logo.image) return;
var img = logo.image;
var w = img.naturalWidth || img.width || 0;
var h = img.naturalHeight || img.height || 0;
if (!w || !h) return;
var maxW = 400, maxH = 300;
var scaleW = maxW / w;
var scaleH = maxH / h;
var scale = Math.min(scaleW, scaleH, 1); // ne nagyítsunk
logo.scaleX = logo.scaleY = scale;
})();
// pozíció: középre és lejjebb 80%-ra
logo.x = canvasW / 2;
logo.y = canvasH * 0.2;
// --- 60% fekete overlay az egész vászonra ---
dimOverlay = new createjs.Shape();
dimOverlay.mouseEnabled = false; // ne fogja el a kattintást
dimOverlay.alpha = 0.4;
dimOverlay.graphics.beginFill("#000").drawRect(0, 0, canvasW, canvasH);
// button új háttér layer ide
//buttonStart = new createjs.Bitmap(loader.getResult('buttonStart')); // button régi rész, ez kijön
buttonStart = new createjs.Shape();
buttonStart.graphics.beginFill("#0099cc").drawRoundRect(0, 0, 300, 100, 10); // button_start radius = 10
buttonStart.x = (canvasW - 300) / 2;
buttonStart.y = canvasH/100 * 82;
// centerReg(buttonStart);
// button szöveg ide
buttonStartTxt = new createjs.Text();
buttonStartTxt.font = "2.5rem gotham_blackregular"; // button_start font
buttonStartTxt.color = "#ffffff";
buttonStartTxt.textAlign = "center";
buttonStartTxt.textBaseline='alphabetic';
buttonStartTxt.text = 'START';
buttonStartTxt.x = canvasW/2;
buttonStartTxt.y = canvasH/100 * 88;
buttonStartTxt.visible=true;
//
//road
for(var key in spritesData) {
if(spritesData[key].src != undefined){
spritesData[key].id = key;
$.sprites[key] = new createjs.Bitmap(loader.getResult(key));
$.sprites[key].y -= $.sprites[key].image.naturalHeight;
gameContainer.addChild($.sprites[key]);
spritesData[key].id = key;
spritesData[key].w = $.sprites[key].image.naturalWidth;
spritesData[key].h = $.sprites[key].image.naturalHeight;
}
}
for(var key in backgroundData) {
if(backgroundData[key].src != undefined){
$.background[key] = new createjs.Bitmap(loader.getResult(key));
$.background[key].y -= $.background[key].image.naturalHeight;
gameContainer.addChild($.background[key]);
backgroundData[key].id = key;
backgroundData[key].w = $.background[key].image.naturalWidth;
backgroundData[key].h = $.background[key].image.naturalHeight;
}
}
for(var key in playerCarData) {
if(playerCarData[key].src != undefined){
$.sprites[key] = new createjs.Bitmap(loader.getResult(key));
$.sprites[key].y -= $.sprites[key].image.naturalHeight;
gameContainer.addChild($.sprites[key]);
playerCarData[key].id = key;
playerCarData[key].w = $.sprites[key].image.naturalWidth;
playerCarData[key].h = $.sprites[key].image.naturalHeight;
}
}
var _frameW = 70;
var _frameH = 100;
var _frame = {"regX": 0, "regY": 0, "height": _frameH, "count": 2, "width": _frameW};
var _animations = {animate:{frames: [0,1], speed:1}};
smokeData = new createjs.SpriteSheet({
"images": [loader.getResult('itemSmoke').src],
"frames": _frame,
"animations": _animations
});
smokeAnimate = new createjs.Sprite(smokeData, "animate");
smokeAnimate.framerate = 20;
smokeAnimate.x = -200;
var _frameW = 155;
var _frameH = 55;
var _frame = {"regX": 0, "regY": 0, "height": _frameH, "count": 2, "width": _frameW};
var _animations = {animate:{frames: [0,1], speed:1}};
fireData = new createjs.SpriteSheet({
"images": [loader.getResult('itemFire').src],
"frames": _frame,
"animations": _animations
});
fireAnimate = new createjs.Sprite(fireData, "animate");
fireAnimate.framerate = 20;
fireAnimate.x = -200;
scoreTxt = new createjs.Text();
scoreTxt.font = "10rem gotham_blackregular";
scoreTxt.color = "#ffffff";
scoreTxt.textAlign = "center";
scoreTxt.textBaseline='alphabetic';
scoreTxt.text = scoreData.text;
scoreTxt.x = canvasW/100 * 50;
scoreTxt.y = canvasH/100 * 15;
scoreShadowTxt = new createjs.Text();
scoreShadowTxt.font = "10rem gotham_blackregular";
scoreShadowTxt.color = "#00000060";
scoreShadowTxt.textAlign = "center";
scoreShadowTxt.textBaseline='alphabetic';
scoreShadowTxt.text = scoreData.text;
scoreShadowTxt.x = scoreTxt.x+3;
scoreShadowTxt.y = scoreTxt.y+2;
fuelTxt = new createjs.Text();
fuelTxt.font = "20px gotham_blackregular";
fuelTxt.color = "#1a4539";
fuelTxt.textAlign = "left";
fuelTxt.textBaseline='alphabetic';
fuelTxt.text = fuelData.text;
fuelTxt.x = canvasW/100 * 2;
fuelTxt.y = canvasH/100 * 9;
fuelShadowTxt = new createjs.Text();
fuelShadowTxt.font = "20px gotham_blackregular";
fuelShadowTxt.color = "#00000060";
fuelShadowTxt.textAlign = "left";
fuelShadowTxt.textBaseline='alphabetic';
fuelShadowTxt.text = fuelData.text;
fuelShadowTxt.x = fuelTxt.x+3;
fuelShadowTxt.y = fuelTxt.y+2;
fuelBarBackground = new createjs.Shape();
fuelBarBackground.graphics.beginFill(fuelData.bar.backgroundColor).drawRect(0, 0, fuelData.bar.width, fuelData.bar.height);
fuelBarBackground.x = canvasW/100-10; //12
fuelBarBackground.y = canvasH/100 * 96; //6.8
fuelBarEmpty = new createjs.Shape();
fuelBarEmpty.graphics.beginFill(fuelData.bar.blankColor).drawRect(0, 0, fuelData.bar.width - (fuelData.bar.space*2), fuelData.bar.height - (fuelData.bar.space * 4));
fuelBarEmpty.x = fuelBarBackground.x + fuelData.bar.space;
fuelBarEmpty.y = fuelBarBackground.y + fuelData.bar.space;
fuelBarFill = new createjs.Shape();
fuelBarFill.x = fuelBarBackground.x + fuelData.bar.space;
fuelBarFill.y = fuelBarBackground.y + fuelData.bar.space;
gameStatusTxt = new createjs.Text();
gameStatusTxt.font = "12rem gotham_blackregular";
gameStatusTxt.color = "#fff";
gameStatusTxt.textAlign = "center";
gameStatusTxt.textBaseline='alphabetic';
gameStatusTxt.text = '';
gameStatusTxt.x = canvasW/100 * 50;
gameStatusTxt.y = canvasH/100 * 30;
gameStatusShadowTxt = new createjs.Text();
gameStatusShadowTxt.font = "12rem gotham_blackregular";
gameStatusShadowTxt.color = "#00000060";
gameStatusShadowTxt.textAlign = "center";
gameStatusShadowTxt.textBaseline='alphabetic';
gameStatusShadowTxt.text = '';
gameStatusShadowTxt.x = gameStatusTxt.x+3;
gameStatusShadowTxt.y = gameStatusTxt.y+2;
instructionTxt = new createjs.Text();
instructionTxt.font = "18rem gotham_blackregular";
instructionTxt.color = "#fff";
instructionTxt.textAlign = "center";
instructionTxt.textBaseline='alphabetic';
instructionTxt.text = intructionDisplayText;
instructionTxt.x = canvasW/2;
instructionTxt.y = canvasH/100 * 40;
instructionShadowTxt = new createjs.Text();
instructionShadowTxt.font = "18rem gotham_blackregular";
instructionShadowTxt.color = "#00000060";
instructionShadowTxt.textAlign = "center";
instructionShadowTxt.textBaseline='alphabetic';
instructionShadowTxt.text = intructionDisplayText;
instructionShadowTxt.x = instructionTxt.x+3;
instructionShadowTxt.y = instructionTxt.y+2;
//key
itemTouchUp = new createjs.Bitmap(loader.getResult('itemTouchUp'));
centerReg(itemTouchUp);
createHitarea(itemTouchUp);
itemTouchDown = new createjs.Bitmap(loader.getResult('itemTouchDown'));
centerReg(itemTouchDown);
createHitarea(itemTouchDown);
itemTouchLeft = new createjs.Bitmap(loader.getResult('itemTouchLeft'));
centerReg(itemTouchLeft);
createHitarea(itemTouchLeft);
itemTouchRight = new createjs.Bitmap(loader.getResult('itemTouchRight'));
centerReg(itemTouchRight);
createHitarea(itemTouchRight);
itemTouchUp.alpha = itemTouchDown.alpha = itemTouchLeft.alpha = itemTouchRight.alpha = .2;
//result
resultTitleTxt = new createjs.Text();
resultTitleTxt.font = "80px gotham_blackregular";
resultTitleTxt.color = "#ffffff";
resultTitleTxt.textAlign = "center";
resultTitleTxt.textBaseline='alphabetic';
resultTitleTxt.text = resultTitleText;
resultTitleTxt.x = canvasW/2;
resultTitleTxt.y = canvasH/100 * 30;
resultTitleShadowTxt = new createjs.Text();
resultTitleShadowTxt.font = "80px gotham_blackregular";
resultTitleShadowTxt.color = "#00000060";
resultTitleShadowTxt.textAlign = "center";
resultTitleShadowTxt.textBaseline='alphabetic';
resultTitleShadowTxt.text = resultTitleText;
resultTitleShadowTxt.x = resultTitleTxt.x+3;
resultTitleShadowTxt.y = resultTitleTxt.y+2;
resultScoreTxt = new createjs.Text();
resultScoreTxt.font = "200px gotham_blackregular";
resultScoreTxt.color = "#ffffff";
resultScoreTxt.textAlign = "center";
resultScoreTxt.textBaseline='alphabetic';
resultScoreTxt.text = '1500PTS';
resultScoreTxt.x = canvasW/2;
resultScoreTxt.y = canvasH/100 * 47;
resultScoreShadowTxt = new createjs.Text();
resultScoreShadowTxt.font = "0px gotham_blackregular";
resultScoreShadowTxt.color = "#00000060";
resultScoreShadowTxt.textAlign = "center";
resultScoreShadowTxt.textBaseline='alphabetic';
resultScoreShadowTxt.text = '1500PTS';
resultScoreShadowTxt.x = resultScoreTxt.x+3;
resultScoreShadowTxt.y = resultScoreTxt.y+2;
resultScoreDescTxt = new createjs.Text();
resultScoreDescTxt.font = "60px gotham_blackregular";
resultScoreDescTxt.color = "#363838ff";
resultScoreDescTxt.textAlign = "center";
resultScoreDescTxt.textBaseline='alphabetic';
resultScoreDescTxt.text = resultScoreText;
resultScoreDescTxt.x = canvasW/2;
resultScoreDescTxt.y = canvasH/100 * 38;
resultScoreDescShadowTxt = new createjs.Text();
resultScoreDescShadowTxt.font = "60px gotham_blackregular";
resultScoreDescShadowTxt.color = "#2f2f2f";
resultScoreDescShadowTxt.textAlign = "center";
resultScoreDescShadowTxt.textBaseline='alphabetic';
resultScoreDescShadowTxt.text = resultScoreText;
resultScoreDescShadowTxt.x = resultScoreDescTxt.x+3;
resultScoreDescShadowTxt.y = resultScoreDescTxt.y+2;
resultShareTxt = new createjs.Text();
resultShareTxt.font = "25px gotham_blackregular";
resultShareTxt.color = "#fff";
resultShareTxt.textAlign = "center";
resultShareTxt.textBaseline='alphabetic';
resultShareTxt.text = shareText;
resultShareTxt.x = canvasW/2;
resultShareTxt.y = canvasH/100 * 73;
resultShareShadowTxt = new createjs.Text();
resultShareShadowTxt.font = "25px gotham_blackregular";
resultShareShadowTxt.color = "#00000060";
resultShareShadowTxt.textAlign = "center";
resultShareShadowTxt.textBaseline='alphabetic';
resultShareShadowTxt.text = shareText;
resultShareShadowTxt.x = resultShareTxt.x+3;
resultShareShadowTxt.y = resultShareTxt.y+2;
// EREDETI (ezeket ki lehet kommentelni)
// buttonFacebook = new createjs.Bitmap(loader.getResult('buttonFacebook'));
// buttonTwitter = new createjs.Bitmap(loader.getResult('buttonTwitter'));
// buttonWhatsapp = new createjs.Bitmap(loader.getResult('buttonWhatsapp'));
// ÚJ FACEBOOK gomb
buttonFacebook = new createjs.Shape();
buttonFacebook.graphics.beginFill("#3b5998").drawRoundRect(0, 0, 180, 70, 20);
buttonFacebook.x = canvasW/5 * 2 - 90; // középre igazítás kb.
buttonFacebook.y = canvasH/100 * 80;
buttonFacebookTxt = new createjs.Text();
buttonFacebookTxt.font = "1.4rem gotham_blackregular";
buttonFacebookTxt.color = "#fff";
buttonFacebookTxt.textAlign = "center";
buttonFacebookTxt.textBaseline = "alphabetic";
buttonFacebookTxt.text = "FACEBOOK";
buttonFacebookTxt.x = buttonFacebook.x + 90;
buttonFacebookTxt.y = buttonFacebook.y + 47;
buttonFacebookTxt.visible = true;
// ÚJ TWITTER gomb
buttonTwitter = new createjs.Shape();
buttonTwitter.graphics.beginFill("#1DA1F2").drawRoundRect(0, 0, 180, 70, 20);
buttonTwitter.x = canvasW/5 * 3 - 90;
buttonTwitter.y = canvasH/100 * 80;
buttonTwitterTxt = new createjs.Text();
buttonTwitterTxt.font = "1.4rem gotham_blackregular";
buttonTwitterTxt.color = "#fff";
buttonTwitterTxt.textAlign = "center";
buttonTwitterTxt.textBaseline = "alphabetic";
buttonTwitterTxt.text = "TWITTER";
buttonTwitterTxt.x = buttonTwitter.x + 90;
buttonTwitterTxt.y = buttonTwitter.y + 47;
buttonTwitterTxt.visible = true;
// ÚJ WHATSAPP gomb
buttonWhatsapp = new createjs.Shape();
buttonWhatsapp.graphics.beginFill("#25D366").drawRoundRect(0, 0, 180, 70, 20);
buttonWhatsapp.x = canvasW/100 * 75 - 90;
buttonWhatsapp.y = canvasH/100 * 80;
buttonWhatsappTxt = new createjs.Text();
buttonWhatsappTxt.font = "1.4rem gotham_blackregular";
buttonWhatsappTxt.color = "#fff";
buttonWhatsappTxt.textAlign = "center";
buttonWhatsappTxt.textBaseline = "alphabetic";
buttonWhatsappTxt.text = "WHATSAPP";
buttonWhatsappTxt.x = buttonWhatsapp.x + 90;
buttonWhatsappTxt.y = buttonWhatsapp.y + 48;
buttonWhatsappTxt.visible = true;
// EREDETI (ezeket ki lehet kommentelni)
// buttonFacebook = new createjs.Bitmap(loader.getResult('buttonFacebook'));
// buttonTwitter = new createjs.Bitmap(loader.getResult('buttonTwitter'));
// buttonWhatsapp = new createjs.Bitmap(loader.getResult('buttonWhatsapp'));
// ÚJ FACEBOOK gomb
buttonFacebook = new createjs.Shape();
buttonFacebook.graphics.beginFill("#3b5998").drawRoundRect(0, 0, 180, 70, 20);
buttonFacebook.x = canvasW/5 * 2 - 90; // középre igazítás kb.
buttonFacebook.y = canvasH/100 * 80;
buttonFacebookTxt = new createjs.Text();
buttonFacebookTxt.font = "1.4rem gotham_blackregular";
buttonFacebookTxt.color = "#fff";
buttonFacebookTxt.textAlign = "center";
buttonFacebookTxt.textBaseline = "alphabetic";
buttonFacebookTxt.text = "FACEBOOK";
buttonFacebookTxt.x = buttonFacebook.x + 90;
buttonFacebookTxt.y = buttonFacebook.y + 48;
buttonFacebookTxt.visible = true;
// ÚJ TWITTER gomb
buttonTwitter = new createjs.Shape();
buttonTwitter.graphics.beginFill("#1DA1F2").drawRoundRect(0, 0, 180, 70, 20);
buttonTwitter.x = canvasW/5 * 3 - 90;
buttonTwitter.y = canvasH/100 * 80;
buttonTwitterTxt = new createjs.Text();
buttonTwitterTxt.font = "1.4rem gotham_blackregular";
buttonTwitterTxt.color = "#fff";
buttonTwitterTxt.textAlign = "center";
buttonTwitterTxt.textBaseline = "alphabetic";
buttonTwitterTxt.text = "TWITTER";
buttonTwitterTxt.x = buttonTwitter.x + 90;
buttonTwitterTxt.y = buttonTwitter.y + 48;
buttonTwitterTxt.visible = true;
/* ==== SOUND TOGGLE BUTTON (Shape + SVG ikonok) ==== */
(function(){
var W = 70, H = 70, R = 10;
// konténer
soundToggleButton = new createjs.Container();
// háttér (alap: nem némított -> szürke)
soundToggleBg = new createjs.Shape();
soundToggleBg.graphics.beginFill("#0099cc").drawRoundRect(0, 0, W, H, R);
// fehér SVG ikonok (640x640 viewBox-hoz skálázunk 40x40-re)
var svgOn = ``;
var svgOff = ``;
// ikonok középre
// fehér SVG ikonok
soundIconOn = svgToBitmap(svgOn, 35, 35);
soundIconOff = svgToBitmap(svgOff, 35, 35);
var isDesktopPointer = window.matchMedia && window.matchMedia('(pointer:fine)').matches;
var ICON_NUDGE = { x: -4, y: isDesktopPointer ? -4 : 0 };
soundIconOn.x = Math.round(W/2 + ICON_NUDGE.x);
soundIconOn.y = Math.round(H/2 + ICON_NUDGE.y);
soundIconOff.x = Math.round(W/2 + ICON_NUDGE.x);
soundIconOff.y = Math.round(H/2 + ICON_NUDGE.y);
// kezdeti állapot (ha van SoundJS)
if (window.createjs && createjs.Sound) {
__isMuted = !!createjs.Sound.muted;
}
soundIconOn.visible = !__isMuted;
soundIconOff.visible = __isMuted;
// vizuál helper
function refreshSoundVisual(){
if (__isMuted){
soundToggleBg.graphics.clear().beginFill("#0099cc").drawRoundRect(0,0,W,H,R); // némított
soundIconOn.visible = false;
soundIconOff.visible = true;
} else {
soundToggleBg.graphics.clear().beginFill("#0099cc").drawRoundRect(0,0,W,H,R); // hang
soundIconOn.visible = true;
soundIconOff.visible = false;
}
}
refreshSoundVisual();
// nagyobb hitArea
var hit = new createjs.Shape();
hit.graphics.beginFill("#fff").drawRect(0, 0, W, H);
soundToggleButton.hitArea = hit;
// POZÍCIÓ: tedd a jobb felső sarokba (offsetekkel)
// Ha inkább más helyre szeretnéd, később a resize-ben is állítjuk.
soundToggleButton.x = (canvasW - offset.x) - (W + 20);
soundToggleButton.y = offset.y + 25;
// összeállítás és hozzáadás
soundToggleButton.addChild(soundToggleBg, soundIconOn, soundIconOff);
soundToggleButton.cursor = "pointer";
soundToggleButton.addEventListener("click", function(){
if (window.createjs && createjs.Sound){
createjs.Sound.muted = !createjs.Sound.muted;
__isMuted = createjs.Sound.muted;
} else if (typeof toggleMute === "function"){
toggleMute();
__isMuted = !__isMuted;
} else {
__isMuted = !__isMuted;
}
refreshSoundVisual();
});
// FONTOS: legfelül legyen a rétegsorrendben → addChild a legvégén fogjuk (lásd lejjebb)
soundToggleButton.refreshSoundVisual = refreshSoundVisual; // ha máshonnan is hívnád
})();
/* // ÚJ WHATSAPP gomb
buttonWhatsapp = new createjs.Shape();
buttonWhatsapp.graphics.beginFill("#25D366").drawRoundRect(0, 0, 180, 70, 20);
buttonWhatsapp.x = canvasW/100 * 75 - 90;
buttonWhatsapp.y = canvasH/100 * 80;
buttonWhatsappTxt = new createjs.Text();
buttonWhatsappTxt.font = "1.4rem gotham_blackregular";
buttonWhatsappTxt.color = "#fff";
buttonWhatsappTxt.textAlign = "center";
buttonWhatsappTxt.textBaseline = "alphabetic";
buttonWhatsappTxt.text = "WHATSAPP";
buttonWhatsappTxt.x = buttonWhatsapp.x + 90;
buttonWhatsappTxt.y = buttonWhatsapp.y + 48;
buttonWhatsappTxt.visible = true; */
/* Helper: SVG string → Bitmap (640x640-es viewBox-hoz) */
function svgToBitmap(svgString, targetW, targetH) {
var img = new Image();
var svg = new Blob([svgString], { type: "image/svg+xml;charset=utf-8" });
var url = URL.createObjectURL(svg);
img.src = url;
var bmp = new createjs.Bitmap(img);
// a legtöbb "ikon" SVG 640x640-es viewBox-szal jön
// regX/regY = 320/320 -> valódi középre igazítás
bmp.regX = 320;
bmp.regY = 320;
img.onload = function () {
var sx = targetW / 640;
var sy = targetH / 640;
bmp.scaleX = sx;
bmp.scaleY = sy;
URL.revokeObjectURL(url);
};
return bmp;
}
/* Méretek/pozíciók */
var shareW = 80, shareH = 80, shareR = 10;
var shareY = canvasH / 100 * 80;
var fbX = canvasW / 5 * 2 - shareW / 2;
var twX = canvasW / 5 * 3 - shareW / 2;
/* FACEBOOK (háttér + ikon) */
buttonFacebook = new createjs.Shape();
buttonFacebook.graphics.beginFill("#0099cc").drawRoundRect(0, 0, shareW, shareH, shareR);
buttonFacebook.x = fbX;
buttonFacebook.y = shareY;
// hitArea a Shape-hez
var fbHit = new createjs.Shape();
fbHit.graphics.beginFill("#000").drawRect(0, 0, shareW, shareH);
buttonFacebook.hitArea = fbHit;
// Fehér Facebook SVG (tőled kapott)
var facebookSVG = ``;
var buttonFacebookIcon = svgToBitmap(facebookSVG, 40, 40);
{
const isDesktop = window.matchMedia && window.matchMedia('(pointer:fine)').matches;
const DESKTOP_NUDGE = { x: -3, y: -3 }; // állítható desktop eltolás
const MOBILE_NUDGE = { x: 0, y: 0 };
const n = isDesktop ? DESKTOP_NUDGE : MOBILE_NUDGE;
buttonFacebookIcon.x = Math.round(canvasW * 0.4 + n.x);
buttonFacebookIcon.y = Math.round(canvasH * 0.839 + n.y);
}
/* TWITTER (háttér + ikon) */
buttonTwitter = new createjs.Shape();
buttonTwitter.graphics.beginFill("#0099cc").drawRoundRect(0, 0, shareW, shareH, shareR);
buttonTwitter.x = twX;
buttonTwitter.y = shareY;
// hitArea a Shape-hez
var twHit = new createjs.Shape();
twHit.graphics.beginFill("#000").drawRect(0, 0, shareW, shareH);
buttonTwitter.hitArea = twHit;
// Fehér Twitter SVG (tőled kapott)
var twitterSVG = ``;
var buttonTwitterIcon = svgToBitmap(twitterSVG, 40, 40);
{
const isDesktop = window.matchMedia && window.matchMedia('(pointer:fine)').matches;
const DESKTOP_NUDGE = { x: -3, y: -3 }; // ugyanaz az eltolás desktopon
const MOBILE_NUDGE = { x: 0, y: 0 };
const n = isDesktop ? DESKTOP_NUDGE : MOBILE_NUDGE;
buttonTwitterIcon.x = Math.round(canvasW * 0.6 + n.x);
buttonTwitterIcon.y = Math.round(canvasH * 0.839 + n.y);
}
/* buttonRestart = new createjs.Bitmap(loader.getResult('buttonRestart'));
centerReg(buttonRestart);
createHitarea(buttonRestart);
buttonRestart.x = canvasW/2;
buttonRestart.y = canvasH/100 * 55; */
// ÚJ restart gomb (rajzolt háttér + szöveg)
buttonRestart = new createjs.Shape();
buttonRestart.graphics.beginFill("#0099cc").drawRoundRect(0, 0, 380, 90, 10);
buttonRestart.x = (canvasW - 380) / 2;
buttonRestart.y = canvasH/100 * 55;
// szöveg
buttonRestartTxt = new createjs.Text();
buttonRestartTxt.font = "2rem gotham_blackregular";
buttonRestartTxt.color = "#ffffff";
buttonRestartTxt.textAlign = "center";
buttonRestartTxt.textBaseline = "alphabetic";
buttonRestartTxt.text = "ÚJRA";
buttonRestartTxt.x = canvasW/2;
buttonRestartTxt.y = canvasH/100 * 61 - 6;
buttonRestartTxt.visible = true;
//option
buttonFullscreen = new createjs.Bitmap(loader.getResult('buttonFullscreen'));
centerReg(buttonFullscreen);
buttonSoundOn = new createjs.Bitmap(loader.getResult('buttonSoundOn'));
centerReg(buttonSoundOn);
buttonSoundOff = new createjs.Bitmap(loader.getResult('buttonSoundOff'));
centerReg(buttonSoundOff);
buttonSoundOn.visible = false;
buttonExit = new createjs.Bitmap(loader.getResult('buttonExit'));
centerReg(buttonExit);
buttonSettings = new createjs.Bitmap(loader.getResult('buttonSettings'));
centerReg(buttonSettings);
createHitarea(buttonFullscreen);
createHitarea(buttonSoundOn);
createHitarea(buttonSoundOff);
createHitarea(buttonExit);
createHitarea(buttonSettings);
optionsContainer = new createjs.Container();
optionsContainer.addChild(buttonFullscreen, buttonSoundOn, buttonSoundOff, buttonExit);
optionsContainer.visible = false;
//exit
itemExit = new createjs.Bitmap(loader.getResult('itemExit'));
buttonConfirm = new createjs.Bitmap(loader.getResult('buttonConfirm'));
centerReg(buttonConfirm);
buttonConfirm.x = canvasW/100* 37;
buttonConfirm.y = canvasH/100 * 58;
buttonCancel = new createjs.Bitmap(loader.getResult('buttonCancel'));
centerReg(buttonCancel);
buttonCancel.x = canvasW/100 * 66;
buttonCancel.y = canvasH/100 * 58;
confirmMessageTxt = new createjs.Text();
confirmMessageTxt.font = "60px gotham_blackregular";
confirmMessageTxt.color = "#363838ff";
confirmMessageTxt.textAlign = "center";
confirmMessageTxt.textBaseline='alphabetic';
confirmMessageTxt.text = exitMessage;
confirmMessageTxt.x = canvasW/2;
confirmMessageTxt.y = canvasH/100 *38;
confirmContainer.addChild(itemExit, buttonConfirm, buttonCancel, confirmMessageTxt);
confirmContainer.visible = false;
if(guide){
guideline = new createjs.Shape();
guideline.graphics.setStrokeStyle(2).beginStroke('red').drawRect((stageW-contentW)/2, (stageH-contentH)/2, contentW, contentH);
}
mainContainer.addChild(dimOverlay, logo, buttonStart, buttonStartTxt);
gameStatusContainer.addChild(gameStatusShadowTxt, gameStatusTxt);
gameContainer.addChild(smokeAnimate, fireAnimate, gameStatusContainer, statusContainer, instructionShadowTxt, instructionTxt, itemTouchUp, itemTouchDown, itemTouchLeft, itemTouchRight);
statusContainer.addChild(scoreShadowTxt, scoreTxt, fuelShadowTxt, fuelTxt, fuelBarBackground, fuelBarEmpty, fuelBarFill);
resultContainer.addChild(
resultTitleShadowTxt, resultTitleTxt,
resultScoreDescShadowTxt, resultScoreDescTxt,
resultScoreShadowTxt, resultScoreTxt,
buttonRestart, buttonRestartTxt
);
if (shareEnable) {
resultContainer.addChild(
resultShareShadowTxt, resultShareTxt,
buttonFacebook, buttonFacebookIcon,
buttonTwitter, buttonTwitterIcon
// WhatsApp nincs használatban
);
}
canvasContainer.addChild(bg, worldContainer, mainContainer, gameContainer, resultContainer, confirmContainer, optionsContainer, buttonSettings, guideline, soundToggleButton);
stage.addChild(canvasContainer);
resizeCanvas();
}
/*!
*
* RESIZE GAME CANVAS - This is the function that runs to resize game canvas
*
*/
function resizeCanvas(){
if(canvasContainer!=undefined){
statusContainer.x = offset.x;
statusContainer.y = offset.y;
buttonSettings.x = (canvasW - offset.x) - 6000; //Kitolva a képből
buttonSettings.y = offset.y + 120;
var distanceNum = 75;
if(curPage != 'game'){
buttonExit.visible = false;
buttonSoundOn.x = buttonSoundOff.x = buttonSettings.x;
buttonSoundOn.y = buttonSoundOff.y = buttonSettings.y+distanceNum;
buttonSoundOn.x = buttonSoundOff.x;
buttonSoundOn.y = buttonSoundOff.y = buttonSettings.y+(distanceNum);
buttonFullscreen.x = buttonSettings.x;
buttonFullscreen.y = buttonSettings.y+(distanceNum*2);
}else{
buttonExit.visible = true;
buttonSoundOn.x = buttonSoundOff.x = buttonSettings.x;
buttonSoundOn.y = buttonSoundOff.y = buttonSettings.y+distanceNum;
buttonSoundOn.x = buttonSoundOff.x;
buttonSoundOn.y = buttonSoundOff.y = buttonSettings.y+(distanceNum);
buttonFullscreen.x = buttonSettings.x;
buttonFullscreen.y = buttonSettings.y+(distanceNum*2);
buttonExit.x = buttonSettings.x;
buttonExit.y = buttonSettings.y+(distanceNum*3);
}
/*itemTouchUp.x = offset.x + 90;
itemTouchDown.x = offset.x + 90;
itemTouchDown.y = canvasH - (offset.y + 90);
itemTouchUp.y = itemTouchDown.y - 140;*/
itemTouchUp.x = (offset.x - 200) // + 90 volt
itemTouchUp.y = canvasH - (offset.y + 90);
itemTouchDown.x = itemTouchUp.x + 110;
itemTouchDown.y = itemTouchUp.y;
itemTouchRight.x = canvasW - (110); //+160
itemTouchRight.y = canvasH - (390); //+90
itemTouchLeft.x = itemTouchRight.x - 550; //-290
itemTouchLeft.y = itemTouchRight.y;
}
}
/*!
*
* REMOVE GAME CANVAS - This is the function that runs to remove game canvas
*
*/
function removeGameCanvas(){
stage.autoClear = true;
stage.removeAllChildren();
stage.update();
createjs.Ticker.removeEventListener("tick", tick);
createjs.Ticker.removeEventListener("tick", stage);
}
/*!
*
* CANVAS LOOP - This is the function that runs for canvas loop
*
*/
function tick(event) {
updateGame();
stage.update(event);
}
/*!
*
* CANVAS MISC FUNCTIONS
*
*/
function centerReg(obj){
obj.regX=obj.image.naturalWidth/2;
obj.regY=obj.image.naturalHeight/2;
}
function createHitarea(obj){
obj.hitArea = new createjs.Shape(new createjs.Graphics().beginFill("#000").drawRect(0, 0, obj.image.naturalWidth, obj.image.naturalHeight));
}