UNPKG

visual-js

Version:

[3.0.26] Prepare for npm usage. Special integration for matrix engine 1.9.0 Thunder.

979 lines (662 loc) 41.3 kB
import APPLICATION from '../../manifest/manifest'; import SYS from '../system'; import {CONVERTOR, SAVE} from '../init'; import { ADD, ADD_ANIMATION, ADD_PARTICLE, ADD_TEXTBOX, ADD_COLLISION, CREATE_PLAYER, DEATACH_PLAYER, REMOVE_PARTICLE, SET_MAIN_INTERVAL, DELETE_FROM_VISUAL_SCRIPTS, DESTROY, REMOVE_TEXTBOX, ADD_WEBCAM, REMOVE_WEBCAM, SET_WIDTH, SET_ANIMATION_SPEED, SET_ANIMATION_TYPE, SET_HEIGHT} from '../editor/editor'; export function EVENTS(canvas, ROOT_ENGINE) { var ROOT_EVENTS = this; this.ROOT_ENGINE = ROOT_ENGINE; //Mobile device if(NOMOBILE == 0) { /** * Use for Mobile device. * @event touchstart */ canvas.addEventListener("touchstart", function(e) { e.preventDefault(); var touchList = e.changedTouches; //SYS.MOUSE.PRESS = true; SYS.MOUSE.x = touchList[0].pageX; SYS.MOUSE.y = touchList[0].pageY; ROOT_EVENTS.CALCULATE_TOUCH_OR_CLICK(); }, false); /** * Use for Mobile device. * @event touchend */ canvas.addEventListener("touchend", function(e) { e.preventDefault(); var touchList = e.changedTouches; SYS.MOUSE.PRESS = false; SYS.MOUSE.x = touchList[0].pageX; SYS.MOUSE.y = touchList[0].pageY; ROOT_EVENTS.CALCULATE_TOUCH_UP_OR_MOUSE_UP(); }, false); /** * Use for Mobile device. * @event touchcancel */ canvas.addEventListener("touchcancel", function(e) { e.preventDefault(); var touchList = e.changedTouches; SYS.MOUSE.PRESS = false; SYS.MOUSE.x = touchList[0].pageX; SYS.MOUSE.y = touchList[0].pageY; ROOT_EVENTS.CALCULATE_TOUCH_UP_OR_MOUSE_UP(); }, false); /** * Use for Mobile device. * @event touchmove */ canvas.addEventListener("touchmove", function(e) { e.preventDefault(); var touchList = e.changedTouches; //SYS.MOUSE.PRESS = true; SYS.MOUSE.x = touchList[0].pageX; SYS.MOUSE.y = touchList[0].pageY; ROOT_EVENTS.CALCULATE_TOUCH_MOVE_OR_MOUSE_MOVE(); }, false); } else { /** * Use for Desktop device. * @event click */ canvas.addEventListener("click", function(e) { //SYS.MOUSE.PRESS = true; SYS.MOUSE.x = e.layerX; SYS.MOUSE.y = e.layerY; ROOT_EVENTS.CALCULATE_TOUCH_OR_CLICK(); //SYS.DEBUG.LOG("SYS : CLICK EVENT " + canvas); }, false); /** * Use for Desktop device. * @event mouseup */ canvas.addEventListener("mouseup", function(e) { SYS.MOUSE.PRESS = false; SYS.MOUSE.BUTTON_PRESSED = null; SYS.MOUSE.x = e.layerX; SYS.MOUSE.y = e.layerY; ROOT_EVENTS.CALCULATE_TOUCH_UP_OR_MOUSE_UP(); }, false); /** * Use for Desktop device. * @event onmousemove */ canvas.onmousemove = function(e) { SYS.MOUSE.x = e.layerX; SYS.MOUSE.y = e.layerY; ROOT_EVENTS.CALCULATE_TOUCH_MOVE_OR_MOUSE_MOVE(); }; /** * Use for Desktop device. * @event onmousedown */ canvas.onmousedown = function(e) { SYS.MOUSE.PRESS = true; if(e.which == 3) { SYS.MOUSE.BUTTON_PRESSED = "RIGHT"; SYS.MOUSE.ON_RIGHT_BTN_PRESSED(); SYS.DEBUG.LOG("Right button clicked"); } else if(e.which == 2) { SYS.MOUSE.BUTTON_PRESSED = "MID"; SYS.MOUSE.ON_MID_BTN_PRESSED(); SYS.DEBUG.LOG("Mid button clicked"); } else if(e.which == 1) { SYS.MOUSE.BUTTON_PRESSED = "LEFT"; SYS.MOUSE.ON_LEFT_BTN_PRESSED(); SYS.DEBUG.LOG("Left button clicked"); } SYS.MOUSE.x = e.layerX; SYS.MOUSE.y = e.layerY; ROOT_EVENTS.CALCULATE_TOUCH_DOWN_OR_MOUSE_DOWN(); }; //console.log("This is PC desktop device."); } //Calculate touch or click event this.CALCULATE_TOUCH_OR_CLICK = function() { for(var x = 0;x < this.ROOT_ENGINE.MODULES.length;x++) { for(var z = 0;z < ROOT_EVENTS.ROOT_ENGINE.MODULES[x].GAME_OBJECTS.length;z++) { var local_go = ROOT_EVENTS.ROOT_ENGINE.MODULES[x].GAME_OBJECTS[z]; if(SYS.MOUSE.x > local_go.POSITION.X() && SYS.MOUSE.x < local_go.POSITION.X() + local_go.DIMENSION.WIDTH() && SYS.MOUSE.y > local_go.POSITION.Y() && SYS.MOUSE.y < local_go.POSITION.Y() + local_go.DIMENSION.HEIGHT()) { if(ROOT_EVENTS.ROOT_ENGINE.ENGINE_EDITOR == false && local_go.VISIBLE != false) { SYS.DEBUG.LOG("SYS : touch or click event on game object : " + local_go.NAME); local_go.FOCUS = true; local_go.TAP(); } } } } }; // CALCULATE MOUSE MOVE OR TOUCH MOVE this.CALCULATE_TOUCH_MOVE_OR_MOUSE_MOVE = function() { for(var x = 0;x < this.ROOT_ENGINE.MODULES.length;x++) { var first_pass = false; for(var z = 0;z < ROOT_EVENTS.ROOT_ENGINE.MODULES[x].GAME_OBJECTS.length;z++) { //-------------------------------//-------------------------------//------------------------------- var local_go = ROOT_EVENTS.ROOT_ENGINE.MODULES[x].GAME_OBJECTS[z]; if(SYS.MOUSE.x > local_go.POSITION.X() && SYS.MOUSE.x < local_go.POSITION.X() + local_go.DIMENSION.WIDTH() && SYS.MOUSE.y > local_go.POSITION.Y() && SYS.MOUSE.y < local_go.POSITION.Y() + local_go.DIMENSION.HEIGHT()) { //SYS.DEBUG.LOG( "SYS : touchmove event on game object : " + local_go.NAME); // EVENT ONLY OUT OF EDITOR if(ROOT_EVENTS.ROOT_ENGINE.ENGINE_EDITOR == false && local_go.VISIBLE == true) { local_go.TOUCH_MOVE(); if(SYS.MOUSE.PRESS == true && local_go.DRAG == true && first_pass == false && local_go.DRAG_STATUS == true) { first_pass = true; local_go.DRAG_DELTA = (local_go.DRAG_START_X); var local_ = CONVERTOR.PIX_TO_PER(parseFloat(local_go.DRAG_DELTA.toFixed(2))); local_go.POSITION.TRANSLATE_BY_X(parseFloat(CONVERTOR.PIX_TO_PER(SYS.MOUSE.x).toFixed(2)) - Math.abs(local_)); local_go.DRAG_DELTA = (local_go.DRAG_START_Y); var local_ = CONVERTOR.PIY_TO_PER(parseFloat(local_go.DRAG_DELTA.toFixed(2))); local_go.POSITION.TRANSLATE_BY_Y(parseFloat(CONVERTOR.PIY_TO_PER(SYS.MOUSE.y).toFixed(2)) - Math.abs(local_)); } } } else {} //-------------------------------//-------------------------------//------------------------------- //-------------------------------//-------------------------------//------------------------------- //EDITOR //-------------------------------//-------------------------------//------------------------------- if(local_go.EDITOR.ENABLE == true) { //-------------------------------//-------------------------------//------------------------------- // DRAG in EDITOR //-------------------------------//-------------------------------//------------------------------- if(SYS.MOUSE.PRESS == true && local_go.EDITOR.ACTOR_DRAG == true && first_pass == false) { first_pass = true; local_go.EDITOR.ACTOR_DELTA = (local_go.EDITOR.ACTOR_START_X + local_go.EDITOR.ACTORS_AREA_HEIGHT); var local_ = CONVERTOR.PIX_TO_PER(parseFloat(local_go.EDITOR.ACTOR_DELTA.toFixed(2))); local_go.POSITION.TRANSLATE_BY_X(parseFloat(CONVERTOR.PIX_TO_PER(SYS.MOUSE.x).toFixed(2)) - Math.abs(local_)); local_go.EDITOR.ACTOR_DELTA = (local_go.EDITOR.ACTOR_START_Y + local_go.EDITOR.ACTORS_AREA_HEIGHT); var local_ = CONVERTOR.PIY_TO_PER(parseFloat(local_go.EDITOR.ACTOR_DELTA.toFixed(2))); local_go.POSITION.TRANSLATE_BY_Y(parseFloat(CONVERTOR.PIY_TO_PER(SYS.MOUSE.y).toFixed(2)) - Math.abs(local_)); } //-------------------------------//-------------------------------//------------------------------- //-------------------------------//-------------------------------//------------------------------- //-------------------------------//-------------------------------//------------------------------- // OBJECT MOVE // ACTOR X if(local_go.EDITOR.ACTOR_X_IN_MOVE == true) { local_go.EDITOR.ACTOR_DELTA = (local_go.EDITOR.ACTOR_START_X); var local_ = CONVERTOR.PIX_TO_PER(parseFloat(local_go.EDITOR.ACTOR_DELTA.toFixed(1))); local_go.POSITION.TRANSLATE_BY_X(parseFloat(CONVERTOR.PIX_TO_PER(SYS.MOUSE.x).toFixed(1)) - Math.abs(local_)); } // ACTOR Y if(local_go.EDITOR.ACTOR_Y_IN_MOVE == true) { local_go.EDITOR.ACTOR_DELTA = (local_go.EDITOR.ACTOR_START_Y); var local_ = CONVERTOR.PIY_TO_PER(parseFloat(local_go.EDITOR.ACTOR_DELTA.toFixed(1))); local_go.POSITION.TRANSLATE_BY_Y(parseFloat(CONVERTOR.PIY_TO_PER(SYS.MOUSE.y).toFixed(1)) - Math.abs(local_)); } //-------------------------------//-------------------------------//------------------------------- //HOVER //-------------------------------//-------------------------------//------------------------------- if(SYS.MOUSE.x > local_go.POSITION.X() + local_go.EDITOR.ACTORS_AREA_HEIGHT && SYS.MOUSE.x < local_go.POSITION.X() + local_go.EDITOR.ACTORS_AREA_HEIGHT * 15 && SYS.MOUSE.y > local_go.POSITION.Y() && SYS.MOUSE.y < local_go.POSITION.Y() + local_go.EDITOR.ACTORS_AREA_HEIGHT) { local_go.EDITOR.ACTOR_BLUE_HOVER = true; } else { local_go.EDITOR.ACTOR_BLUE_HOVER = false; } //-------------------------------//-------------------------------//------------------------------- //-------------------------------//-------------------------------//------------------------------- if(SYS.MOUSE.x > local_go.POSITION.X() && SYS.MOUSE.x < local_go.POSITION.X() + local_go.EDITOR.ACTORS_AREA_HEIGHT && SYS.MOUSE.y > local_go.POSITION.Y() + local_go.EDITOR.ACTORS_AREA_HEIGHT && SYS.MOUSE.y < local_go.POSITION.Y() + local_go.EDITOR.ACTORS_AREA_HEIGHT * 15) { local_go.EDITOR.ACTOR_GREEN_HOVER = true; //SYS.DEBUG.LOG( "SYS : green Y-ACTOR event on game object : " + local_go.NAME); } else { local_go.EDITOR.ACTOR_GREEN_HOVER = false; } //-------------------------------//-------------------------------//------------------------------- //-------------------------------//-------------------------------//------------------------------- } // END OF EDITOR if(local_go.EDITOR.GAME_OBJECT_MENU.VISIBLE == true) { local_go.EDITOR.ACTOR_DRAG = false; for(var q = 0;q < local_go.EDITOR.BUTTONS.length;q++) { if(SYS.MOUSE.x > local_go.EDITOR.BUTTONS[q].POSITION.x && SYS.MOUSE.x < local_go.EDITOR.BUTTONS[q].POSITION.x + local_go.EDITOR.BUTTONS[q].DIMENSION.WIDTH() && SYS.MOUSE.y > local_go.EDITOR.BUTTONS[q].POSITION.y + local_go.EDITOR.BUTTONS[q].Y_OFFSET && SYS.MOUSE.y < local_go.EDITOR.BUTTONS[q].POSITION.y + local_go.EDITOR.BUTTONS[q].Y_OFFSET + local_go.EDITOR.BUTTONS[q].DIMENSION.HEIGHT()) { local_go.EDITOR.BUTTONS[q].HOVER = true; } else { local_go.EDITOR.BUTTONS[q].HOVER = false; } } } //-------------------------------//-------------------------------//------------------------------- } } if(ROOT_ENGINE.GUI.VISIBLE == true) { for(var x = 0;x < ROOT_ENGINE.GUI.BUTTONS.length;x++) { if(SYS.MOUSE.x > ROOT_ENGINE.GUI.BUTTONS[x].POSITION.x && SYS.MOUSE.x < ROOT_ENGINE.GUI.BUTTONS[x].POSITION.x + ROOT_ENGINE.GUI.BUTTONS[x].DIMENSION.WIDTH() && SYS.MOUSE.y > ROOT_ENGINE.GUI.BUTTONS[x].POSITION.y + ROOT_ENGINE.GUI.BUTTONS[x].Y_OFFSET && SYS.MOUSE.y < ROOT_ENGINE.GUI.BUTTONS[x].POSITION.y + ROOT_ENGINE.GUI.BUTTONS[x].Y_OFFSET + ROOT_ENGINE.GUI.BUTTONS[x].DIMENSION.HEIGHT()) { ROOT_ENGINE.GUI.BUTTONS[x].HOVER = true; } else { ROOT_ENGINE.GUI.BUTTONS[x].HOVER = false; } } } // LIST GUI SYSTEM EVENTS if(ROOT_ENGINE.GUI.VISIBLE == true) { for(var x = 0;x < ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_MODULES.length;x++) { if(SYS.MOUSE.x > ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_MODULES[x].POSITION.x && SYS.MOUSE.x < ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_MODULES[x].POSITION.x + ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_MODULES[x].DIMENSION.WIDTH() && SYS.MOUSE.y > ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_MODULES[x].POSITION.y + ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_MODULES[x].Y_OFFSET && SYS.MOUSE.y < ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_MODULES[x].POSITION.y + ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_MODULES[x].Y_OFFSET + ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_MODULES[x].DIMENSION.HEIGHT()) { ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_MODULES[x].HOVER = true; } else { ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_MODULES[x].HOVER = false; } } //BUTTONS_GAME_OBJECTS for(var x = 0;x < ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_GAME_OBJECTS.length;x++) { if(SYS.MOUSE.x > ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_GAME_OBJECTS[x].POSITION.x && SYS.MOUSE.x < ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_GAME_OBJECTS[x].POSITION.x + ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_GAME_OBJECTS[x].DIMENSION.WIDTH() && SYS.MOUSE.y > ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_GAME_OBJECTS[x].POSITION.y + ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_GAME_OBJECTS[x].Y_OFFSET && SYS.MOUSE.y < ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_GAME_OBJECTS[x].POSITION.y + ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_GAME_OBJECTS[x].Y_OFFSET + ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_GAME_OBJECTS[x].DIMENSION.HEIGHT()) { ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_GAME_OBJECTS[x].HOVER = true; } else { ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_GAME_OBJECTS[x].HOVER = false; } } } // }; // CALCULATE_TOUCH_UP_OR_MOUSE_UP this.CALCULATE_TOUCH_UP_OR_MOUSE_UP = function() { for(var x = 0;x < this.ROOT_ENGINE.MODULES.length;x++) { for(var z = 0;z < ROOT_EVENTS.ROOT_ENGINE.MODULES[x].GAME_OBJECTS.length;z++) { var local_go = ROOT_EVENTS.ROOT_ENGINE.MODULES[x].GAME_OBJECTS[z]; local_go.EDITOR.ACTOR_X_IN_MOVE = false; local_go.EDITOR.ACTOR_Y_IN_MOVE = false; //-------------------------------//-------------------------------//------------------------------- // EDITOR //-------------------------------//-------------------------------//------------------------------- if(local_go.EDITOR.ENABLE == true) { local_go.EDITOR.ACTOR_DRAG = false; //-------------------------------//-------------------------------//------------------------------- } // end of EDITOR //-------------------------------//-------------------------------//------------------------------- // EVENT ONLY OUT OF EDITOR if(ROOT_EVENTS.ROOT_ENGINE.ENGINE_EDITOR == false) { if(SYS.MOUSE.x > local_go.POSITION.X() && SYS.MOUSE.x < local_go.POSITION.X() + local_go.DIMENSION.WIDTH() && SYS.MOUSE.y > local_go.POSITION.Y() && SYS.MOUSE.y < local_go.POSITION.Y() + local_go.DIMENSION.HEIGHT()) { if(local_go.VISIBLE == true) { local_go.TOUCH_UP(); SYS.DOM.E(SYS.RUNNING_PROGRAMS[0]).style.cursor = "auto"; } } } } } }; this.CALCULATE_TOUCH_DOWN_OR_MOUSE_DOWN = function() { var selected_something = false; for(var x = 0;x < this.ROOT_ENGINE.MODULES.length;x++) { for(var z = 0;z < ROOT_EVENTS.ROOT_ENGINE.MODULES[x].GAME_OBJECTS.length;z++) { var local_go = ROOT_EVENTS.ROOT_ENGINE.MODULES[x].GAME_OBJECTS[z]; if(SYS.MOUSE.x > local_go.POSITION.X() && SYS.MOUSE.x < local_go.POSITION.X() + local_go.DIMENSION.WIDTH() && SYS.MOUSE.y > local_go.POSITION.Y() && SYS.MOUSE.y < local_go.POSITION.Y() + local_go.DIMENSION.HEIGHT()) { local_go.EDITOR.SELECTED = true; selected_something = true; if(local_go.TYPE_OF_GAME_OBJECT == "TEXT_BOX" && local_go.TEXTBOX.EDIT == true && local_go.VISIBLE == true) { if(NOMOBILE == 1) { // for desktop mouse HARD CODE 0/1 if(APPLICATION.ACCESSIBILITY.VIRTUAL_KEYBOARD_FOR_DESKTOP == true) { ROOT_EVENTS.ROOT_ENGINE.KEYBOARD.TARGET_MODUL = local_go.PARENT; ROOT_EVENTS.ROOT_ENGINE.KEYBOARD.TARGET = local_go.NAME; SHOW_KEYBOARD(local_go.NAME); } else { //normal for desktop local_go.FOCUS = true; ROOT_EVENTS.ROOT_ENGINE.KEYBOARD.CAPTURE_CHAR = local_go.TEXTBOX.TEXT; ROOT_EVENTS.ROOT_ENGINE.KEYBOARD.TARGET_MODUL = local_go.PARENT; ROOT_EVENTS.ROOT_ENGINE.KEYBOARD.TARGET = local_go.NAME; } } else { // for mobile VirtualKeyboard ROOT_EVENTS.ROOT_ENGINE.KEYBOARD.TARGET_MODUL = local_go.PARENT; ROOT_EVENTS.ROOT_ENGINE.KEYBOARD.TARGET = local_go.NAME; SHOW_KEYBOARD(local_go.NAME); } } // EVENT ONLY OUT OF EDITOR if(ROOT_EVENTS.ROOT_ENGINE.ENGINE_EDITOR == false && local_go.VISIBLE == true) { local_go.FOCUS = true; local_go.TOUCH_DOWN(); SYS.DEBUG.LOG("SYS : touchDown or mouseDown event on game object : " + local_go.NAME); // if drag is enabled if(local_go.DRAG == true) { if(SYS.MOUSE.BUTTON_PRESSED == "LEFT") { SYS.DOM.E(local_go.PROGRAM_NAME).style.cursor = "MOVE"; local_go.DRAG = true; local_go.DRAG_START_X = parseFloat(SYS.MOUSE.x.toFixed(2) - local_go.POSITION.X()); local_go.DRAG_START_Y = parseFloat(SYS.MOUSE.y.toFixed(2) - local_go.POSITION.Y()); } } } } else { local_go.FOCUS = false; } //-------------------------------//-------------------------------//------------------------------- // EDITOR //-------------------------------//-------------------------------//------------------------------- if(local_go.EDITOR.ENABLE == true) { //################ if(local_go.EDITOR.GAME_OBJECT_MENU.VISIBLE == true) { local_go.EDITOR.ACTOR_DRAG = false; for(var q = 0;q < local_go.EDITOR.BUTTONS.length;q++) { if(SYS.MOUSE.x > local_go.EDITOR.BUTTONS[q].POSITION.x && SYS.MOUSE.x < local_go.EDITOR.BUTTONS[q].POSITION.x + local_go.EDITOR.BUTTONS[q].DIMENSION.WIDTH() && SYS.MOUSE.y > local_go.EDITOR.BUTTONS[q].POSITION.y + local_go.EDITOR.BUTTONS[q].Y_OFFSET && SYS.MOUSE.y < local_go.EDITOR.BUTTONS[q].POSITION.y + local_go.EDITOR.BUTTONS[q].Y_OFFSET + local_go.EDITOR.BUTTONS[q].DIMENSION.HEIGHT()) { //-----------------------------------------------------------------------------//----------------------------------------------------------------------------- if(local_go.EDITOR.BUTTONS[q].IAM == "1") { // DESTROY OBJECT ROOT_EVENTS.ROOT_ENGINE.MODULES[x].DESTROY_OBJECT(local_go.NAME); //DESTROY( name , canvas.id , local_go.PARENT ) DESTROY(local_go.NAME); SYS.DEBUG.LOG("DESTROY_OBJECT"); } //-----------------------------------------------------------------------------//----------------------------------------------------------------------------- else if(local_go.EDITOR.BUTTONS[q].IAM == "2") { var local_res = prompt("Destroy game_object ( Time not count in editor ):", "10"); if(!isNaN(parseFloat(local_res.charAt(0)))) { var _name = local_go.NAME; local_go.DESTROY_ME_AFTER_X_SECUND(local_res, _name, x, ROOT_EVENTS); } else { alert("ERROR MSG: Destroy not success."); } SYS.DEBUG.LOG("Destroy..."); } //-----------------------------------------------------------------------------//----------------------------------------------------------------------------- else if(local_go.EDITOR.BUTTONS[q].IAM == "3") { var resource_list = ""; for(var key in window.RESOURCE) { if(RESOURCE.hasOwnProperty(key) && key != "SUM") { resource_list += " " + key + ", "; } } // console.log("WHAT IS local_go....", local_go.ANIMATION); var local_res = prompt("Full list of images source : \n " + resource_list + " \n \n Enter name of animation resource object :", "demo1"); if(isNaN(parseFloat(local_res.charAt(0)))) { ADD_ANIMATION(local_go.NAME, local_go.PROGRAM_NAME, local_go.PARENT, local_res); } else { alert("ERROR MSG: ADD_ANIMATION not success."); } } //-----------------------------------------------------------------------------//----------------------------------------------------------------------------- //----------------------------------------------------------------------------- else if(local_go.EDITOR.BUTTONS[q].IAM == "4") { if(local_go.COLLISION == null) { // ADD COLLIDER var local_res = prompt("Enter outline margin collider.", "1.02"); if(!isNaN(parseFloat(local_res.charAt(0)))) { ADD_COLLISION(local_go.NAME, local_go.PROGRAM_NAME, local_go.PARENT, local_res); local_go.EDITOR.BUTTONS[q].text = "Remove collision"; //local_go.REMOVE_COLLISION(local_go.NAME , local_go.PROGRAM_NAME , local_go.PARENT); SYS.DEBUG.LOG("add collider"); } else { alert("ERROR MSG: ADD_COLLISION not success."); } } else if(local_go.EDITOR.BUTTONS[q].text == "Remove collision") { REMOVE_COLLISION(); local_go.COLLISION = null; local_go.EDITOR.BUTTONS[q].text = "Add collision"; SYS.DEBUG.LOG("remove collider"); } } //----------------------------------------------------------------------------- else if(local_go.EDITOR.BUTTONS[q].IAM == "5") { if(typeof PLAYER === "undefined") { var local_res = prompt("Enter player type : ", "NORMAL"); if(isNaN(parseFloat(local_res.charAt(0)))) { CREATE_PLAYER(local_go.NAME, local_go.PROGRAM_NAME, local_go.PARENT, local_res, q); local_go.EDITOR.BUTTONS[q].text = "Deatach player"; SYS.DEBUG.LOG("atach player"); } } else if(typeof local_go.PLAYER != "undefined") { DEATACH_PLAYER(local_go.NAME, local_go.PROGRAM_NAME, local_go.PARENT); local_go.PLAYER = undefined; PLAYER = undefined; //delete (local_go.PLAYER); //delete (PLAYER); local_go.EDITOR.BUTTONS[q].text = "Atach player"; SYS.DEBUG.LOG("deatach player , also destroy PLAYER global object."); } } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- else if(local_go.EDITOR.BUTTONS[q].IAM == "6") { if(local_go.PARTICLE == null) { var local_res = prompt("Enter particle type : ", "FONTAN"); if(isNaN(parseFloat(local_res.charAt(0)))) { ADD_PARTICLE(local_go.NAME, local_go.PROGRAM_NAME, local_go.PARENT, local_res); local_go.CREATE_PARTICLE(local_res); local_go.EDITOR.BUTTONS[q].text = "Remove particle"; SYS.DEBUG.LOG("atach player"); } } else if(typeof local_go.PARTICLE != null) { REMOVE_PARTICLE(local_go.NAME, local_go.PROGRAM_NAME, local_go.PARENT); local_go.TYPE_OF_GAME_OBJECT = "empty"; delete (local_go.PARTICLE); local_go.PARTICLE = null; local_go.EDITOR.BUTTONS[q].text = "Add particle"; SYS.DEBUG.LOG("particle removed from " + local_go.NAME); } } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- else if(local_go.EDITOR.BUTTONS[q].IAM == "7") { if(local_go.TEXTBOX == null) { var local_res = prompt("Enter text value : ", "HELLO"); var local_color = prompt("Enter color value : ", "red"); var local_textcolor = prompt("Enter Text color value : ", "black"); var local_radius = prompt("Enter rect radius value : ", 15); local_res = "" + local_res.toString(); ADD_TEXTBOX(local_go.NAME, local_go.PROGRAM_NAME, local_go.PARENT, local_res, local_radius, local_color, local_textcolor); local_go.CREATE_TEXTBOX(local_res, local_radius, local_color, local_textcolor); local_go.EDITOR.BUTTONS[q].text = "Remove textbox"; SYS.DEBUG.LOG("atach textbox"); } else if(typeof local_go.TEXTBOX != null) { REMOVE_TEXTBOX(local_go.NAME, local_go.PROGRAM_NAME, local_go.PARENT); local_go.TYPE_OF_GAME_OBJECT = "empty"; delete (local_go.TEXTBOX); local_go.TEXTBOX = null; local_go.EDITOR.BUTTONS[q].text = "Add textbox"; SYS.DEBUG.LOG("textbox removed from " + local_go.NAME + " . And .TEXTBOX is :" + local_go.TEXTBOX); } } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- else if(local_go.EDITOR.BUTTONS[q].IAM == "8") { if(local_go.WEBCAM == null) { var local_res = prompt("Choose NORMAL if you wanna simple webcam view or enter value 'NUI' for motion detect component + webcam view : ", "NORMAL"); if(local_res == "NORMAL") { var local_type_of_dim = prompt("Just press enter to make video with the same dimensions like game_object , any other value set dimensions of webcam video. ", "GAME_OBJECT"); if(local_type_of_dim == "GAME_OBJECT") { local_go.CREATE_WEBCAM(local_res, local_type_of_dim); ADD_WEBCAM(local_go.NAME, local_go.PROGRAM_NAME, local_go.PARENT, local_res, local_type_of_dim); local_go.EDITOR.BUTTONS[q].text = "Remove webcam"; SYS.DEBUG.LOG("atach webcam"); } else { // DIMENSIONS_TYPE = WEBCAM_DIMENSION local_go.CREATE_WEBCAM(local_res, local_type_of_dim); ADD_WEBCAM(local_go.NAME, local_go.PROGRAM_NAME, local_go.PARENT, local_res, "WEBCAM_DIMENSION"); local_go.EDITOR.BUTTONS[q].text = "Remove webcam"; SYS.DEBUG.LOG("atach webcam"); } } else if(local_res == "NUI") { var local_type_of_dim = prompt("Just press enter to make video with the same dimensions like game_object , any other value set dimensions of webcam video. ", "GAME_OBJECT"); var detectPointByVer = prompt(" Sum of motion detect point for vertical line, 8 is optimal for max value and 1 is minimum . ", 6); var detectPointByHor = prompt(" Sum of motion detect point for horizontal line, 8 is optimal for max value and 1 is minimum . ", 6); if(!isNaN(detectPointByVer) && !isNaN(detectPointByHor) && isNaN(local_type_of_dim)) { local_go.CREATE_WEBCAM(local_res, local_type_of_dim); ADD_WEBCAM(local_go.NAME, local_go.PROGRAM_NAME, local_go.PARENT, local_res, local_type_of_dim, detectPointByVer, detectPointByHor); local_go.EDITOR.BUTTONS[q].text = "Remove webcam"; SYS.DEBUG.LOG("atach webcam"); } else { SYS.DEBUG.WARNING(" Error in CREATE_WEBCAM procedure Description : type of dimensions must be string , Sum of point must be number."); } } } else { local_go.DESTROY_WEBCAM(); REMOVE_WEBCAM(local_go.NAME, local_go.PROGRAM_NAME, local_go.PARENT); } } else if(local_go.EDITOR.BUTTONS[q].IAM == "B1") { var local_res = prompt("Set width: \n Enter float or integer object width: ", "20"); if(!isNaN(parseFloat(local_res.charAt(0)))) { // SET_WIDTH(local_go.NAME, local_go.PROGRAM_NAME, local_go.PARENT, local_res); // ADD_ANIMATION(local_go.NAME, local_go.PROGRAM_NAME, local_go.PARENT, local_res); } else { alert("ERROR MSG: SET_WIDTH not success."); } SYS.DEBUG.LOG("SET_WIDTH...."); } else if(local_go.EDITOR.BUTTONS[q].IAM == "B2") { var local_res = prompt("Set width: \n Enter float or integer object height: ", "20"); if(!isNaN(parseFloat(local_res.charAt(0)))) { SET_HEIGHT(local_go.NAME, local_go.PROGRAM_NAME, local_go.PARENT, local_res); } else { alert("ERROR MSG: SET_height not success."); } SYS.DEBUG.LOG("SET_height...."); } else if(local_go.EDITOR.BUTTONS[q].IAM == "ANIM1") { var local_res = prompt("Set animation speed: \n Enter float or integer : ", "5"); if(!isNaN(parseFloat(local_res.charAt(0))) && local_go.ANIMATION != null) { SET_ANIMATION_SPEED(local_go.NAME, local_go.PROGRAM_NAME, local_go.PARENT, local_res); } else { alert("ERROR MSG: SET_ANIMATION_SPEED not success."); } SYS.DEBUG.LOG("SET_ANIMATION_SPEED...."); } else if(local_go.EDITOR.BUTTONS[q].IAM == "ANIM2") { var local_res = prompt("Set animation draw type: \n Enter LOOP or DRAW_FRAME : ", "DRAW_FRAME"); if(isNaN(parseFloat(local_res.charAt(0))) && local_go.ANIMATION != null) { SET_ANIMATION_TYPE(local_go.NAME, local_go.PROGRAM_NAME, local_go.PARENT, local_res); } else { alert("ERROR MSG: SET_ANIMATION_SPEED not success."); } SYS.DEBUG.LOG("SET_ANIMATION_SPEED...."); } } else { local_go.EDITOR.GAME_OBJECT_MENU.VISIBLE = false; } } } if(SYS.MOUSE.x > local_go.EDITOR.ACTOR_DRAG_RECT_POS.X() + local_go.EDITOR.ACTORS_AREA_HEIGHT && SYS.MOUSE.x < local_go.EDITOR.ACTOR_DRAG_RECT_POS.X() + local_go.EDITOR.ACTOR_DRAG_RECT_DIM.WIDTH() + local_go.EDITOR.ACTORS_AREA_HEIGHT && SYS.MOUSE.y > local_go.EDITOR.ACTOR_DRAG_RECT_POS.Y() + local_go.EDITOR.ACTORS_AREA_HEIGHT && SYS.MOUSE.y < local_go.EDITOR.ACTOR_DRAG_RECT_POS.Y() + local_go.EDITOR.ACTOR_DRAG_RECT_DIM.HEIGHT() + local_go.EDITOR.ACTORS_AREA_HEIGHT) { if(SYS.MOUSE.BUTTON_PRESSED == "LEFT") { local_go.EDITOR.ACTOR_DRAG = true; local_go.EDITOR.ACTOR_START_X = parseFloat(SYS.MOUSE.x.toFixed(2) - local_go.POSITION.X() - local_go.EDITOR.ACTORS_AREA_HEIGHT); local_go.EDITOR.ACTOR_START_Y = parseFloat(SYS.MOUSE.y.toFixed(2) - local_go.POSITION.Y() - local_go.EDITOR.ACTORS_AREA_HEIGHT); } else if(SYS.MOUSE.BUTTON_PRESSED == "RIGHT") { if(local_go.EDITOR.GAME_OBJECT_MENU.VISIBLE == false) { for(var w = 0;w < local_go.EDITOR.BUTTONS.length;w++) { local_go.EDITOR.BUTTONS[w].POSITION.x = SYS.MOUSE.x; local_go.EDITOR.BUTTONS[w].POSITION.y = SYS.MOUSE.y; } local_go.EDITOR.GAME_OBJECT_MENU.VISIBLE = true; } } } // HOVER ACTORS if(local_go.EDITOR.ACTOR_BLUE_HOVER == true) { local_go.EDITOR.ACTOR_X_IN_MOVE = true; local_go.EDITOR.ACTOR_START_X = parseFloat(SYS.MOUSE.x.toFixed(2) - local_go.POSITION.X()); } else if(local_go.EDITOR.ACTOR_GREEN_HOVER == true) { local_go.EDITOR.ACTOR_Y_IN_MOVE = true; local_go.EDITOR.ACTOR_START_Y = parseFloat(SYS.MOUSE.y.toFixed(2) - local_go.POSITION.Y()); } if(selected_something == false) { local_go.DESELECT_ALL(); } } // end of EDITOR if(selected_something == false && local_go.NAME.indexOf("___VIRTUALKEYBOARD") == -1) { ROOT_EVENTS.ROOT_ENGINE.KEYBOARD.TARGET_MODUL = undefined; ROOT_EVENTS.ROOT_ENGINE.KEYBOARD.TARGET = undefined; } // local_go } } if(ROOT_ENGINE.ENGINE_EDITOR == true) { if(ROOT_ENGINE.GUI.VISIBLE == false && selected_something == false && SYS.MOUSE.BUTTON_PRESSED == "RIGHT") { for(var x = 0;x < ROOT_ENGINE.GUI.BUTTONS.length;x++) { ROOT_ENGINE.GUI.BUTTONS[x].POSITION.x = SYS.MOUSE.x; ROOT_ENGINE.GUI.BUTTONS[x].POSITION.y = SYS.MOUSE.y; } ROOT_ENGINE.GUI.VISIBLE = true; } else if(ROOT_ENGINE.GUI.VISIBLE == true) { for(var x = 0;x < ROOT_ENGINE.GUI.BUTTONS.length;x++) { if(SYS.MOUSE.x > ROOT_ENGINE.GUI.BUTTONS[x].POSITION.x && SYS.MOUSE.x < ROOT_ENGINE.GUI.BUTTONS[x].POSITION.x + ROOT_ENGINE.GUI.BUTTONS[x].DIMENSION.WIDTH() && SYS.MOUSE.y > ROOT_ENGINE.GUI.BUTTONS[x].POSITION.y + ROOT_ENGINE.GUI.BUTTONS[x].Y_OFFSET && SYS.MOUSE.y < ROOT_ENGINE.GUI.BUTTONS[x].POSITION.y + ROOT_ENGINE.GUI.BUTTONS[x].Y_OFFSET + ROOT_ENGINE.GUI.BUTTONS[x].DIMENSION.HEIGHT()) { if(ROOT_ENGINE.GUI.BUTTONS[x].IAM == "1") { // ADD NEW OBJECT var sign_name = prompt("Enter gameObject name :", "noname"); if(isNaN(parseFloat(sign_name.charAt(0)))) { var sign_name2 = prompt("Enter gameObject parent modul :", "STARTER"); if(isNaN(parseFloat(sign_name.charAt(0)))) { ADD(sign_name, 45, 45, 10, 10, canvas.id, sign_name2); } else { alert("ERROR MSG: GameObject name created not success."); } } else { alert("ERROR MSG: GameObject name created not success."); } } else if(ROOT_ENGINE.GUI.BUTTONS[x].IAM == "2") { for(var z = 0;z < SYS.RUNNING_PROGRAMS.length;z++) { window[SYS.RUNNING_PROGRAMS[z]].ENGINE.EXIT_EDIT_MODE(); } } else if(ROOT_ENGINE.GUI.BUTTONS[x].IAM == "3") { //runtime only // change draw interval and update var sign_name = prompt("Enter program DRAW_INTERVAL :", 15); if(!isNaN(parseFloat(sign_name))) { var sign_name2 = prompt("Enter program UPDATE_INTERVAL :", 15); if(!isNaN(parseFloat(sign_name2))) { SYS.DEBUG.LOG("Program interval now is " + sign_name + " . best range is [1 , 70] "); window[ROOT_ENGINE.PROGRAM_ID].DRAW_INTERVAL = parseFloat(sign_name); window[ROOT_ENGINE.PROGRAM_ID].UPDATE_INTERVAL = parseFloat(sign_name2); SET_MAIN_INTERVAL(ROOT_ENGINE.PROGRAM_ID, sign_name, sign_name2); } else { alert("ERROR MSG: Program interval not success changed."); } } else { alert("ERROR MSG: Program interval not success changed."); } } else if(ROOT_ENGINE.GUI.BUTTONS[x].IAM == "4") { if(APPLICATION.ACCOUNT_SERVICE_AUTO_RUN == true) { APPLICATION.ACCOUNT_SERVICE_AUTO_RUN = false; ROOT_ENGINE.GUI.BUTTONS[3].text = "Switch AutoConnect to true"; } else { APPLICATION.ACCOUNT_SERVICE_AUTO_RUN = true; ROOT_ENGINE.GUI.BUTTONS[3].text = "Switch AutoConnectt to false"; } SAVE("Application", APPLICATION); } else if(ROOT_ENGINE.GUI.BUTTONS[x].IAM == "5") { if(APPLICATION.EDITOR_AUTORUN == true) { APPLICATION.EDITOR_AUTORUN = false; ROOT_ENGINE.GUI.BUTTONS[4].text = "Switch editorAutoRun to true"; } else { APPLICATION.EDITOR_AUTORUN = true; ROOT_ENGINE.GUI.BUTTONS[4].text = "Switch editorAutoRun to false"; } SAVE("Application", APPLICATION); } else if(ROOT_ENGINE.GUI.BUTTONS[x].IAM == "6") { // clear all DELETE_FROM_VISUAL_SCRIPTS(ROOT_ENGINE.PROGRAM_ID); } // DELETE_FROM_VISUAL_SCRIPTS } } ROOT_ENGINE.GUI.VISIBLE = false; } if(ROOT_ENGINE.GUI.LIST_OF_OBJECTS.VISIBLE == true) { for(var x = 0;x < ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_MODULES.length;x++) { if(SYS.MOUSE.x > ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_MODULES[x].POSITION.x && SYS.MOUSE.x < ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_MODULES[x].POSITION.x + ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_MODULES[x].DIMENSION.WIDTH() && SYS.MOUSE.y > ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_MODULES[x].POSITION.y + ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_MODULES[x].Y_OFFSET && SYS.MOUSE.y < ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_MODULES[x].POSITION.y + ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_MODULES[x].Y_OFFSET + ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_MODULES[x].DIMENSION.HEIGHT()) { ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_MODULES[x].TAP(); } } // GUI BUTTON LIST SYSTEM TAP EVENT for(var x = 0;x < ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_GAME_OBJECTS.length;x++) { if(SYS.MOUSE.x > ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_GAME_OBJECTS[x].POSITION.x && SYS.MOUSE.x < ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_GAME_OBJECTS[x].POSITION.x + ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_GAME_OBJECTS[x].DIMENSION.WIDTH() && SYS.MOUSE.y > ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_GAME_OBJECTS[x].POSITION.y + ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_GAME_OBJECTS[x].Y_OFFSET && SYS.MOUSE.y < ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_GAME_OBJECTS[x].POSITION.y + ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_GAME_OBJECTS[x].Y_OFFSET + ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_GAME_OBJECTS[x].DIMENSION.HEIGHT()) { ROOT_ENGINE.GUI.LIST_OF_OBJECTS.BUTTONS_GAME_OBJECTS[x].TAP(); } } } } }; }