/* * GDevelop JS Platform * Copyright 2013-2016 Florian Rival (Florian.Rival@gmail.com). All rights reserved. * This project is released under the MIT License. */ /** * Tools related to runtime scene, for events generated code. * @memberof gdjs.evtTools * @class runtimeScene * @static * @private */ gdjs.evtTools.runtimeScene = gdjs.evtTools.runtimeScene || {}; gdjs.evtTools.runtimeScene.sceneJustBegins = function(runtimeScene) { return runtimeScene.getTimeManager().isFirstFrame(); }; gdjs.evtTools.runtimeScene.sceneJustResumed = function(runtimeScene) { return runtimeScene.sceneJustResumed(); }; gdjs.evtTools.runtimeScene.getSceneName = function(runtimeScene) { return runtimeScene.getName(); }; gdjs.evtTools.runtimeScene.setBackgroundColor = function(runtimeScene, rgbColor) { var colors = rgbColor.split(";"); if ( colors.length < 3 ) return; runtimeScene.setBackgroundColor(parseInt(colors[0]), parseInt(colors[1]), parseInt(colors[2])); }; gdjs.evtTools.runtimeScene.getElapsedTimeInSeconds = function(runtimeScene) { return runtimeScene.getTimeManager().getElapsedTime() / 1000; }; gdjs.evtTools.runtimeScene.setTimeScale = function(runtimeScene, timeScale) { return runtimeScene.getTimeManager().setTimeScale(timeScale); }; gdjs.evtTools.runtimeScene.getTimeScale = function(runtimeScene) { return runtimeScene.getTimeManager().getTimeScale(); }; gdjs.evtTools.runtimeScene.timerElapsedTime = function(runtimeScene, timeInSeconds, timerName) { var timeManager = runtimeScene.getTimeManager(); if ( !timeManager.hasTimer(timerName) ) { timeManager.addTimer(timerName); return false; } return timeManager.getTimer(timerName).getTime() / 1000 >= timeInSeconds; }; gdjs.evtTools.runtimeScene.timerPaused = function(runtimeScene, timerName) { var timeManager = runtimeScene.getTimeManager(); if ( !timeManager.hasTimer(timerName) ) return false; return timeManager.getTimer(timerName).isPaused(); }; gdjs.evtTools.runtimeScene.resetTimer = function(runtimeScene, timerName) { var timeManager = runtimeScene.getTimeManager(); if ( !timeManager.hasTimer(timerName) ) timeManager.addTimer(timerName); else timeManager.getTimer(timerName).reset(); }; gdjs.evtTools.runtimeScene.pauseTimer = function(runtimeScene, timerName) { var timeManager = runtimeScene.getTimeManager(); if ( !timeManager.hasTimer(timerName) ) timeManager.addTimer(timerName); timeManager.getTimer(timerName).setPaused(true); }; gdjs.evtTools.runtimeScene.unpauseTimer = function(runtimeScene, timerName) { var timeManager = runtimeScene.getTimeManager(); if ( !timeManager.hasTimer(timerName) ) timeManager.addTimer(timerName); return timeManager.getTimer(timerName).setPaused(false); }; gdjs.evtTools.runtimeScene.removeTimer = function(runtimeScene, timerName) { var timeManager = runtimeScene.getTimeManager(); timeManager.removeTimer(timerName); }; gdjs.evtTools.runtimeScene.getTimerElapsedTimeInSeconds = function(runtimeScene, timerName) { var timeManager = runtimeScene.getTimeManager(); if (!timeManager.hasTimer(timerName)) return 0; return timeManager.getTimer(timerName).getTime() / 1000; }; gdjs.evtTools.runtimeScene.getTimeFromStartInSeconds = function(runtimeScene) { return runtimeScene.getTimeManager().getTimeFromStart() / 1000; }; gdjs.evtTools.runtimeScene.getTime = function(runtimeScene, what) { if ( what === "timestamp" ) { return Date.now(); } var now = new Date(); if ( what === "hour" ) return now.getHours(); else if ( what === "min" ) return now.getMinutes(); else if ( what === "sec" ) return now.getSeconds(); else if ( what === "mday" ) return now.getDate(); else if ( what === "mon" ) return now.getMonth(); else if ( what === "year" ) return now.getFullYear() - 1900; //Conform to the C way of returning years. else if ( what === "wday" ) return now.getDay(); else if ( what === "yday" ) { var start = new Date(now.getFullYear(), 0, 0); var diff = now - start; var oneDay = 1000 * 60 * 60 * 24; return Math.floor(diff / oneDay); } return 0; }; gdjs.evtTools.runtimeScene.replaceScene = function(runtimeScene, newSceneName, clearOthers) { if (!runtimeScene.getGame().getSceneData(newSceneName)) return; runtimeScene.requestChange(clearOthers ? gdjs.RuntimeScene.CLEAR_SCENES : gdjs.RuntimeScene.REPLACE_SCENE, newSceneName); }; gdjs.evtTools.runtimeScene.pushScene = function(runtimeScene, newSceneName) { if (!runtimeScene.getGame().getSceneData(newSceneName)) return; runtimeScene.requestChange(gdjs.RuntimeScene.PUSH_SCENE, newSceneName); }; gdjs.evtTools.runtimeScene.popScene = function(runtimeScene) { runtimeScene.requestChange(gdjs.RuntimeScene.POP_SCENE); }; gdjs.evtTools.runtimeScene.stopGame = function(runtimeScene) { runtimeScene.requestChange(gdjs.RuntimeScene.STOP_GAME); }; gdjs.evtTools.runtimeScene.createObjectsFromExternalLayout = function(scene, externalLayout, xPos, yPos) { var externalLayoutData = scene.getGame().getExternalLayoutData(externalLayout); if ( externalLayoutData === null ) return; scene.createObjectsFrom(externalLayoutData.instances, xPos, yPos); };