UNPKG

visual-js

Version:

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

1,443 lines (1,007 loc) 49.7 kB
import {POSITION, DIMENSION, isOdd, isEven} from '../math'; import SYS from '../system'; import {RIGHT_MENU_BUTTON} from '../draw_functions/systems'; import {RECT} from '../draw_functions/rect'; import {ANIMATION} from '../draw_functions/animation'; import APPLICATION from '../../manifest/manifest'; import {VIEW, CONVERTOR, SET_STREAM} from '../init'; import {DESTROY_DELAY} from '../editor/editor'; import {PARTICLE_FONTAN} from '../particule/particule'; /** Copyright 2016, zlatnaspirala@gmail.com All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of zlatnaspirala@gmail.com nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /** Constructor GAME_OBJECT ( name , modul , x , y , w , h , speed , PROGRAM_NAME) Type : Class Program create instance of this class from class modul : HELLO_WORLD.ENGINE.MODULES.ACCESS_MODULE("STARTER").NEW_OBJECT("STOSKE" , 22, 42, 22 , 22 , "DIAMETRIC"); */ export function GAME_OBJECT(name, modul, x, y, w, h, speed, PROGRAM_NAME) { var ROOT_GAME_OBJECT = this; //alias global access if(name == "system" || name.indexOf("___VIRTUALKEYBOARD_") != -1) { ROOT_GAME_OBJECT.VISIBLE = true; window["" + name] = this; } else { window["" + name] = this; ROOT_GAME_OBJECT.VISIBLE = true; } this.ID = parseFloat(Math.random() * 4560000 + Math.random() * 1230000).toFixed(0); this.PARENT = modul; this.PROGRAM_NAME = PROGRAM_NAME; this.NAME = name; this.AUTO_UPDATE = true; this.FOCUS = false; // similar SELECTED but for runtime mode only this.TYPE_OF_GAME_OBJECT = "empty"; this.ENUMERATION = ["empty", "ANIMATION", "TEXT_BOX", "PATRICLE", "NO_RENDER", "ANIMATION_TEXT_BOX", "ANIMATION_PATRICLE"]; this.DESTROY_ON_GAMEMAP_EXIT = true; this.DRAG_STATUS = true; this.DRAG = true; this.DRAG_START_X = 0; this.DRAG_START_Y = 0; this.DRAG_DELTA = 0; this.zoom_scale = 0; this.globalAlpha = 1; if((typeof x && typeof y) === "number") { if(typeof speed === "number") { this.POSITION = new POSITION(x, y, x, y, speed); } else { this.POSITION = new POSITION(x, y, x, y, 1); } } else { this.POSITION = new POSITION(10, 10, 200, 200, 1); } if((typeof w && typeof h) === "number") { this.DIMENSION = new DIMENSION(w, h); } else { this.DIMENSION = new DIMENSION(10, 10); } //this.ON_TARGET_POSITION = function(){}; this.POSITION.parentModul = modul; this.POSITION.parentGameObject = name; this.POSITION.PROGRAM_NAME = PROGRAM_NAME; this.POSITION.DIMENSION = this.DIMENSION; //this.POSITION.ON_TARGET_POSITION = this.ON_TARGET_POSITION; this.ANIMATION = null; this.CREATE_ANIMATION = function(surf, TYPE_, FrameIndex, source, ID, blink_, min_, max_, step, speed_, opacity_) { this.ANIMATION = new ANIMATION(surf, TYPE_, FrameIndex, source, ROOT_GAME_OBJECT, ID, blink_, min_, max_, step, speed_, opacity_); this.TYPE_OF_GAME_OBJECT = "ANIMATION"; //SYS.DEBUG.LOG("images added in memory.... ID " + ID); }; this.CREATE_PLAYER = function(type_) { ROOT_GAME_OBJECT.PLAYER = { TYPE: type_, X: ROOT_GAME_OBJECT.POSITION.x, // for platform Y: ROOT_GAME_OBJECT.POSITION.y, SPEED: 1, CONTROL: { RIGHT: false, LEFT: false, JUMP: false, DOWN: false, }, POSITION: ROOT_GAME_OBJECT.POSITION, BREAK_AT_MOMENT_STATUS: false, }; window["PLAYER"] = ROOT_GAME_OBJECT.PLAYER; this.POSITION.PLAYER = ROOT_GAME_OBJECT.PLAYER; window[PROGRAM_NAME].ENGINE.GAME_TYPE = "NORMAL_CONTROL"; }; this.TEXTBOX = null; this.TRACK_KEY = null; this.CREATE_TEXTBOX = function(text, radius, color, textColor) { if((typeof text != "undefined" && typeof radius != "undefined" && typeof color != "undefined" && typeof textColor != "undefined")) { this.TEXTBOX = new RECT(text, ROOT_GAME_OBJECT, radius, color, textColor); this.TYPE_OF_GAME_OBJECT = "TEXT_BOX"; this.TRACK_KEY = true; this.TEXTBOX.TEXT = text; this.TEXTBOX.TEXT += window[ROOT_GAME_OBJECT.PROGRAM_NAME].ENGINE.KEYBOARD.CAPTURE_CHAR; this.FOCUS = true; this.TEXTBOX.ON_PRESS_ENTER = function() {}; ROOT_GAME_OBJECT.EDITOR.BUTTONS[6].text = "Remove textbox"; } else { SYS.DEBUG.WARNING("TEXT_BOX error in constructor : ( text , radius , color, textColor) cant be undefined."); } }; this.DESTROY_AFTER = null; this.DESTROY_ME_AFTER_X_SECUND = function(sec, name, x, ROOT_EVENTS) { this.DESTROY_AFTER = sec * 20; if(APPLICATION.EDITOR == true) { DESTROY_DELAY(name, sec, ROOT_GAME_OBJECT.PARENT, ROOT_GAME_OBJECT.PROGRAM_NAME); } }; this.COLLISION = null; this.POSITION.STATIC = false; this.COLIDER = function(type__, margin) { this.TYPE = type__; if(typeof margin === "number") { this.margin = margin; } else { this.margin = 1.02; } }; this.CREATE_COLLISION = function(type__, margin) { ROOT_GAME_OBJECT.COLLISION = new ROOT_GAME_OBJECT.COLIDER(type__, margin); ROOT_GAME_OBJECT.EDITOR.BUTTONS[3].text = "Remove collision"; }; this.ON_COLLISION = function(name_) {}; // face detect tracking.js this.CREATE_FACE_DETECT = function() { ROOT_GAME_OBJECT.SET_TRACKING_VIEW("NORMAL", "NORMAL"); TRACK_NOW(); ROOT_GAME_OBJECT.ON_UPDATE_SYS = function() { ROOT_GAME_OBJECT.WEBCAM.VIDEO.style.left = ROOT_GAME_OBJECT.POSITION.X() + "px"; ROOT_GAME_OBJECT.WEBCAM.VIDEO.style.top = (ROOT_GAME_OBJECT.POSITION.Y() + 50) + "px"; ROOT_GAME_OBJECT.WEBCAM.TRACKING_CANVAS_LAYOUT.style.left = ROOT_GAME_OBJECT.POSITION.X() + "px"; ROOT_GAME_OBJECT.WEBCAM.TRACKING_CANVAS_LAYOUT.style.top = (ROOT_GAME_OBJECT.POSITION.Y() + 50) + "px"; }; ROOT_GAME_OBJECT.WEBCAM.VIDEO.style.opacity = 0.9; }; this.SET_TRACKING_VIEW = function(type_, DIMENSIONS_TYPE) { // just webcam view ROOT_GAME_OBJECT.WEBCAM = new Object(); ROOT_GAME_OBJECT.WEBCAM.VIDEO = SYS.DOM.E("video"); ROOT_GAME_OBJECT.WEBCAM.TRACKING_CANVAS_LAYOUT = document.getElementById("canvas"); // SET_STREAM(ROOT_GAME_OBJECT.WEBCAM.VIDEO); if(DIMENSIONS_TYPE == "GAME_OBJECT") { ROOT_GAME_OBJECT.WEBCAM.DIMENSIONS_TYPE = "GAME_OBJECT"; } else { ROOT_GAME_OBJECT.WEBCAM.DIMENSIONS_TYPE = "WEBCAM_DIMENSION"; ROOT_GAME_OBJECT.DIMENSION.H = CONVERTOR.PIY_TO_PER(SYS.DOM.E("video").height); ROOT_GAME_OBJECT.DIMENSION.W = CONVERTOR.PIX_TO_PER(SYS.DOM.E("video").width); } ROOT_GAME_OBJECT.TYPE_OF_GAME_OBJECT = "CUSTOM"; ROOT_GAME_OBJECT.CUSTOM = function() { SURF.fillStyle = "white"; SURF.fillRect(ROOT_GAME_OBJECT.POSITION.X(), ROOT_GAME_OBJECT.POSITION.Y(), 100, 100); }; }; // DRAW PATH this.CREATE_PENCIL = function(type_, color, width) { this.PENCIL = new Object(); if(typeof type_ != "undefined") { this.PENCIL.TYPE = type_; } else { this.PENCIL.TYPE = "POINTS"; } if(typeof color != "undefined") { this.PENCIL.COLOR = color; } else { this.PENCIL.COLOR = "lime"; } if(typeof width != "undefined") { this.PENCIL.WIDTH = width; } else { this.PENCIL.WIDTH = 1; } ROOT_GAME_OBJECT.PENCIL.PATH = []; ROOT_GAME_OBJECT.PENCIL.NAME = ""; ROOT_GAME_OBJECT.PENCIL.ID = ""; //draw ROOT_GAME_OBJECT.TYPE_OF_GAME_OBJECT = "PENCIL"; ROOT_GAME_OBJECT.PENCIL.LAST_POS = { x: SYS.MOUSE.x, y: SYS.MOUSE.y }; // TRANSLATE_BY_PATH ROOT_GAME_OBJECT.PENCIL.RECORD = true; ROOT_GAME_OBJECT.PENCIL.RECORD_TYPE = function(TYPE_) { if(TYPE_ == "EVERY_POINT") { ROOT_GAME_OBJECT.ON_UPDATE_SYS = ROOT_GAME_OBJECT.ON_UPDATE_SYS_RECORD_EVERY_POINT; SYS.MOUSE.ON_RIGHT_BTN_PRESSED = function() {}; } else if(TYPE_ == "ON_TAP") { ROOT_GAME_OBJECT.ON_UPDATE_SYS = ROOT_GAME_OBJECT.ON_UPDATE_SYS_RECORD_ONLY_TAP; //clear colector //collector on tap SYS.MOUSE.ON_RIGHT_BTN_PRESSED = function() { IamPathGameObject.PENCIL.RECORD = false; }; SYS.MOUSE.ON_LEFT_BTN_PRESSED = function() { ROOT_GAME_OBJECT.PENCIL.PATH.push({ x: SYS.MOUSE.x, y: SYS.MOUSE.y }); var XX = SYS.MOUSE.x; var YY = SYS.MOUSE.y; ROOT_GAME_OBJECT.PENCIL.LAST_POS.x = XX; ROOT_GAME_OBJECT.PENCIL.LAST_POS.y = YY; }; } }; ROOT_GAME_OBJECT.PENCIL.SAVE_DRAWS = function(name_) { if(typeof name_ != "undefined") { var PATH_FOR_PENCIL = new Object(); PATH_FOR_PENCIL.PATH = ROOT_GAME_OBJECT.PENCIL.PATH; PATH_FOR_PENCIL.ID = SYS.MATH.RANDOM_INT_FROM_TO(1, 100000) * 78; ROOT_GAME_OBJECT.PENCIL.NAME = name_; PATH_FOR_PENCIL.NAME = name_; SAVE(PATH_FOR_PENCIL.NAME, PATH_FOR_PENCIL); } else { SYS.DEBUG.WARNING("Pencil object : save draws faild. Please give a name in arg"); } }; ROOT_GAME_OBJECT.PENCIL.LOAD_PATH = function(name_) { if(typeof name != "undefined") { ROOT_GAME_OBJECT.PENCIL.LOADED_PATH = LOAD(name_); ROOT_GAME_OBJECT.PENCIL.PATH = ROOT_GAME_OBJECT.PENCIL.LOADED_PATH.PATH; ROOT_GAME_OBJECT.PENCIL.NAME = ROOT_GAME_OBJECT.PENCIL.LOADED_PATH.NAME; ROOT_GAME_OBJECT.PENCIL.ID = ROOT_GAME_OBJECT.PENCIL.LOADED_PATH.ID; // ROOT_GAME_OBJECT.PENCIL.LOADED_PATH = null; ROOT_GAME_OBJECT.PENCIL.RECORD = false; } else { SYS.DEBUG.WARNING("Pencil object : load draws faild. Please give a name in arg"); } }; ROOT_GAME_OBJECT.PENCIL.DRAW = function() {}; ROOT_GAME_OBJECT.PENCIL.CLEAR = function() { ROOT_GAME_OBJECT.PENCIL.PATH = []; }; ROOT_GAME_OBJECT.PENCIL.DRAW_TYPE = function(TYPE_) { if(TYPE_ == "LINES") { ROOT_GAME_OBJECT.PENCIL.DRAW = ROOT_GAME_OBJECT.PENCIL.DRAW_LINES; ROOT_GAME_OBJECT.PENCIL.TYPE = TYPE_; } else if(TYPE_ == "POINTS") { ROOT_GAME_OBJECT.PENCIL.DRAW = ROOT_GAME_OBJECT.PENCIL.DRAW_POINTS; ROOT_GAME_OBJECT.PENCIL.TYPE = TYPE_; } else if(TYPE_ == "STRIP_LINES") { ROOT_GAME_OBJECT.PENCIL.DRAW = ROOT_GAME_OBJECT.PENCIL.DRAW_STRIP_LINES; ROOT_GAME_OBJECT.PENCIL.TYPE = TYPE_; } else if(TYPE_ == "STRIP_LINES2") { ROOT_GAME_OBJECT.PENCIL.DRAW = ROOT_GAME_OBJECT.PENCIL.DRAW_STRIP_LINES2; ROOT_GAME_OBJECT.PENCIL.TYPE = TYPE_; } else if(TYPE_ == "BALLS") { ROOT_GAME_OBJECT.PENCIL.DRAW = ROOT_GAME_OBJECT.PENCIL.DRAW_BALS; ROOT_GAME_OBJECT.PENCIL.TYPE = TYPE_; } else { ROOT_GAME_OBJECT.PENCIL.DRAW = ROOT_GAME_OBJECT.PENCIL.DRAW_POINTS; ROOT_GAME_OBJECT.PENCIL.TYPE = "POINTS"; } }; ROOT_GAME_OBJECT.PENCIL.DRAW_POINTS = function() { ROOT_GAME_OBJECT.PENCIL.PATH.forEach(function(value_) { SURF.fillStyle = ROOT_GAME_OBJECT.PENCIL.COLOR; SURF.beginPath(); SURF.arc(value_.x, value_.y, ROOT_GAME_OBJECT.PENCIL.WIDTH, 0, 2 * Math.PI); SURF.fill(); }); }; ROOT_GAME_OBJECT.PENCIL.DRAW_STRIP_LINES = function() { var a = 0; ROOT_GAME_OBJECT.PENCIL.PATH.forEach(function(value_) { SURF.strokeStyle = ROOT_GAME_OBJECT.PENCIL.COLOR; //SURF.beginPath(); //SURF.arc(value_.x,value_.y,ROOT_GAME_OBJECT.PENCIL.WIDTH,0,2*Math.PI); if(a == 0) { SURF.beginPath(); SURF.lineWidth = ROOT_GAME_OBJECT.PENCIL.WIDTH; SURF.moveTo(value_.x, value_.y); } SURF.lineTo(value_.x, value_.y); SURF.stroke(); a++; }); }; ROOT_GAME_OBJECT.PENCIL.DRAW_LINES = function() { var a = 0; ROOT_GAME_OBJECT.PENCIL.PATH.forEach(function(value_) { SURF.strokeStyle = ROOT_GAME_OBJECT.PENCIL.COLOR; //SURF.beginPath(); //SURF.arc(value_.x,value_.y,ROOT_GAME_OBJECT.PENCIL.WIDTH,0,2*Math.PI); if(isOdd(a)) { SURF.beginPath(); SURF.lineWidth = ROOT_GAME_OBJECT.PENCIL.WIDTH; SURF.moveTo(value_.x, value_.y); } SURF.lineTo(value_.x, value_.y); SURF.stroke(); a++; }); }; // ROOT_GAME_OBJECT.PENCIL.DRAW_STRIP_LINES2 = function() { var a = 0; ROOT_GAME_OBJECT.PENCIL.PATH.forEach(function(value_) { SURF.strokeStyle = ROOT_GAME_OBJECT.PENCIL.COLOR; //SURF.beginPath(); //SURF.arc(value_.x,value_.y,ROOT_GAME_OBJECT.PENCIL.WIDTH,0,2*Math.PI); if(isEven(a)) { SURF.beginPath(); SURF.lineWidth = ROOT_GAME_OBJECT.PENCIL.WIDTH; SURF.moveTo(value_.x, value_.y); } //SURF.lineTo(value_.x,value_.y); //SURF.stroke(); SURF.lineTo(value_.x, value_.y); SURF.stroke(); a++; }); var a = 0; ROOT_GAME_OBJECT.PENCIL.PATH.forEach(function(value_) { SURF.strokeStyle = ROOT_GAME_OBJECT.PENCIL.COLOR; //SURF.beginPath(); //SURF.arc(value_.x,value_.y,ROOT_GAME_OBJECT.PENCIL.WIDTH,0,2*Math.PI); if(isOdd(a)) { SURF.beginPath(); SURF.lineWidth = ROOT_GAME_OBJECT.PENCIL.WIDTH; SURF.moveTo(value_.x, value_.y); } SURF.lineTo(value_.x, value_.y); SURF.stroke(); a++; }); }; // ROOT_GAME_OBJECT.PENCIL.DRAW_BALS = function() { SURF.fillStyle = ROOT_GAME_OBJECT.PENCIL.COLOR; ROOT_GAME_OBJECT.PENCIL.PATH.forEach(function(value_) { SURF.beginPath(); SURF.arc(value_.x, value_.y, ROOT_GAME_OBJECT.PENCIL.WIDTH * 20, 0, 2 * Math.PI); SURF.fill(); }); }; ROOT_GAME_OBJECT.PENCIL.DRAW_TYPE(); //############################# //############################# ROOT_GAME_OBJECT.ON_UPDATE_SYS = function() { if(ROOT_GAME_OBJECT.PENCIL.RECORD == true) { if(ROOT_GAME_OBJECT.PENCIL.PATH.length > 0) { if(ROOT_GAME_OBJECT.PENCIL.PATH[ROOT_GAME_OBJECT.PENCIL.PATH.length - 1].x != SYS.MOUSE.x) { ROOT_GAME_OBJECT.PENCIL.PATH.push({ x: SYS.MOUSE.x, y: SYS.MOUSE.y }); var XX = SYS.MOUSE.x; var YY = SYS.MOUSE.y; ROOT_GAME_OBJECT.PENCIL.LAST_POS.x = XX; ROOT_GAME_OBJECT.PENCIL.LAST_POS.y = YY; } } else { ROOT_GAME_OBJECT.PENCIL.PATH.push(ROOT_GAME_OBJECT.PENCIL.LAST_POS); } } }; ROOT_GAME_OBJECT.ON_UPDATE_SYS_RECORD_ONLY_TAP = function() {}; ROOT_GAME_OBJECT.ON_UPDATE_SYS_RECORD_EVERY_POINT = function() { if(ROOT_GAME_OBJECT.PENCIL.RECORD == true) { if(ROOT_GAME_OBJECT.PENCIL.PATH.length > 0) { if(ROOT_GAME_OBJECT.PENCIL.PATH[ROOT_GAME_OBJECT.PENCIL.PATH.length - 1].x != SYS.MOUSE.x) { ROOT_GAME_OBJECT.PENCIL.PATH.push({ x: SYS.MOUSE.x, y: SYS.MOUSE.y }); var XX = SYS.MOUSE.x; var YY = SYS.MOUSE.y; ROOT_GAME_OBJECT.PENCIL.LAST_POS.x = XX; ROOT_GAME_OBJECT.PENCIL.LAST_POS.y = YY; } } else { ROOT_GAME_OBJECT.PENCIL.PATH.push(ROOT_GAME_OBJECT.PENCIL.LAST_POS); } } }; }; this.TRANSLATE_BY_PATH = function(PATH_, LOOP_TYPE) { ROOT_GAME_OBJECT.sys_translateByPath = PATH_; ROOT_GAME_OBJECT.sys_translateByPathIndex = 0; if(typeof LOOP_TYPE != "undefined") { ROOT_GAME_OBJECT.sys_translateByPathLoopType = LOOP_TYPE; ROOT_GAME_OBJECT.sys_translateByPathLoopTypeActive = "STOP"; } else { ROOT_GAME_OBJECT.sys_translateByPathLoopType = "STOP"; ROOT_GAME_OBJECT.sys_translateByPathLoopTypeActive = "STOP"; } ROOT_GAME_OBJECT.POSITION.TRANSLATE(CONVERTOR.PIX_TO_PER(ROOT_GAME_OBJECT.sys_translateByPath[ROOT_GAME_OBJECT.sys_translateByPathIndex].x), CONVERTOR.PIY_TO_PER(ROOT_GAME_OBJECT.sys_translateByPath[ROOT_GAME_OBJECT.sys_translateByPathIndex].y)); ROOT_GAME_OBJECT.POSITION.ON_TARGET_POSITION = function() { if(ROOT_GAME_OBJECT.sys_translateByPathLoopTypeActive == "STOP") { if(ROOT_GAME_OBJECT.sys_translateByPath.length > ROOT_GAME_OBJECT.sys_translateByPathIndex + 1) { ROOT_GAME_OBJECT.sys_translateByPathIndex++; ROOT_GAME_OBJECT.POSITION.TRANSLATE(CONVERTOR.PIX_TO_PER(ROOT_GAME_OBJECT.sys_translateByPath[ROOT_GAME_OBJECT.sys_translateByPathIndex].x), CONVERTOR.PIY_TO_PER(ROOT_GAME_OBJECT.sys_translateByPath[ROOT_GAME_OBJECT.sys_translateByPathIndex].y)); } else { if(ROOT_GAME_OBJECT.sys_translateByPathLoopType == "INVERSE") { ROOT_GAME_OBJECT.sys_translateByPathLoopTypeActive = "INVERSE"; ROOT_GAME_OBJECT.sys_translateByPathIndex--; ROOT_GAME_OBJECT.sys_translateByPathIndex--; ROOT_GAME_OBJECT.POSITION.TRANSLATE(CONVERTOR.PIX_TO_PER(ROOT_GAME_OBJECT.sys_translateByPath[ROOT_GAME_OBJECT.sys_translateByPathIndex].x), CONVERTOR.PIY_TO_PER(ROOT_GAME_OBJECT.sys_translateByPath[ROOT_GAME_OBJECT.sys_translateByPathIndex].y)); } } } else if(ROOT_GAME_OBJECT.sys_translateByPathLoopTypeActive == "INVERSE") { if(ROOT_GAME_OBJECT.sys_translateByPathIndex > 1) { ROOT_GAME_OBJECT.sys_translateByPathIndex--; ROOT_GAME_OBJECT.POSITION.TRANSLATE(CONVERTOR.PIX_TO_PER(ROOT_GAME_OBJECT.sys_translateByPath[ROOT_GAME_OBJECT.sys_translateByPathIndex].x), CONVERTOR.PIY_TO_PER(ROOT_GAME_OBJECT.sys_translateByPath[ROOT_GAME_OBJECT.sys_translateByPathIndex].y)); } else { if(ROOT_GAME_OBJECT.sys_translateByPathLoopType == "INVERSE_FOR_EVER") { ROOT_GAME_OBJECT.sys_translateByPathLoopTypeActive = "STOP"; ROOT_GAME_OBJECT.sys_translateByPathIndex++; ROOT_GAME_OBJECT.POSITION.TRANSLATE(CONVERTOR.PIX_TO_PER(ROOT_GAME_OBJECT.sys_translateByPath[ROOT_GAME_OBJECT.sys_translateByPathIndex].x), CONVERTOR.PIY_TO_PER(ROOT_GAME_OBJECT.sys_translateByPath[ROOT_GAME_OBJECT.sys_translateByPathIndex].y)); } } } else { /* if (ROOT_GAME_OBJECT.sys_translateByPathLoopType == "STOP") { } else if (ROOT_GAME_OBJECT.sys_translateByPathLoopType == "INVERSE"){ ROOT_GAME_OBJECT.sys_translateByPathLoopTypeActive = "INVERSE"; } else if (ROOT_GAME_OBJECT.sys_translateByPathLoopType == "INVERSE_FOR_EVER"){ ROOT_GAME_OBJECT.sys_translateByPathLoopTypeActive = "STOP"; } */ } }; }; this.EDITOR = { SELECTED: false, ENABLE: window[ROOT_GAME_OBJECT.PROGRAM_NAME].ENGINE.ENGINE_EDITOR, ACTORS_VISIBLE: true, ACTORS_AREA_HEIGHT: 10, ACTOR_BLUE_HOVER: false, ACTOR_GREEN_HOVER: false, ACTOR_CENTER_OSCILATOR: new SYS.MATH.OSCILLATOR(0, 2, 0.01), ACTOR_START_X: 0, ACTOR_START_Y: 0, ACTOR_DELTA: 0, ACTOR_X_IN_MOVE: false, ACTOR_Y_IN_MOVE: false, ACTOR_DRAG_RECT_DIM: new DIMENSION(5, 5), //ACTOR_DRAG_RECT_POS : SYS.ARRAY_OPERATION.DEEP_COPY.getCloneOfObject( this.POSITION ) , ACTOR_DRAG_RECT_POS: this.POSITION, ACTOR_DRAG: false, BUTTONS: [ new RIGHT_MENU_BUTTON("Destroy gameObject", 0, "1"), new RIGHT_MENU_BUTTON("Destroy after secund ", 20, "2"), new RIGHT_MENU_BUTTON("Add animation ", 40, "3"), new RIGHT_MENU_BUTTON("Add collision ", 60, "4"), new RIGHT_MENU_BUTTON("Atach player ", 80, "5", "res/system/images/html5/plus.png"), new RIGHT_MENU_BUTTON("Add particle ", 100, "6", "res/system/images/html5/particle.png"), new RIGHT_MENU_BUTTON("Add textbox ", 120, "7", "res/system/images/html5/textbox.png"), new RIGHT_MENU_BUTTON("Add webcam ", 140, "8", "res/system/images/html5/HTML5-Device-Access.png"), new RIGHT_MENU_BUTTON("Set width ", 160, "B1"), new RIGHT_MENU_BUTTON("Set height ", 180, "B2"), new RIGHT_MENU_BUTTON("Set animation speed ", 200, "ANIM1"), new RIGHT_MENU_BUTTON("Set animation type ", 220, "ANIM2"), ], GAME_OBJECT_MENU: { VISIBLE: false, }, }; this.WEBCAM = null; this.SET_WEBCAM_VIEW = function(type_, DIMENSIONS_TYPE) { // just webcam view ROOT_GAME_OBJECT.WEBCAM = new Object(); ROOT_GAME_OBJECT.WEBCAM.VIDEO = SYS.DOM.E("webcam"); SET_STREAM(ROOT_GAME_OBJECT.WEBCAM.VIDEO); if(DIMENSIONS_TYPE == "GAME_OBJECT") { ROOT_GAME_OBJECT.WEBCAM.DIMENSIONS_TYPE = "GAME_OBJECT"; } else { ROOT_GAME_OBJECT.WEBCAM.DIMENSIONS_TYPE = "WEBCAM_DIMENSION"; ROOT_GAME_OBJECT.DIMENSION.H = CONVERTOR.PIY_TO_PER(SYS.DOM.E("webcam").height); ROOT_GAME_OBJECT.DIMENSION.W = CONVERTOR.PIX_TO_PER(SYS.DOM.E("webcam").width); } if(type_ == "NORMAL") { ROOT_GAME_OBJECT.TYPE_OF_GAME_OBJECT = "WEBCAM"; } else if(type_ == "NUI") { SYS.DOM.E("canvas-blended").height = SYS.DOM.E("webcam").height; SYS.DOM.E("canvas-blended").width = SYS.DOM.E("webcam").width; SYS.DOM.E("canvas-render").height = SYS.DOM.E("webcam").height; SYS.DOM.E("canvas-render").width = SYS.DOM.E("webcam").width; ROOT_GAME_OBJECT.TYPE_OF_GAME_OBJECT = "WEBCAM_NUI"; ROOT_GAME_OBJECT.WEBCAM.BLEND_CANVAS = SYS.DOM.E("canvas-blended"); ROOT_GAME_OBJECT.WEBCAM.RENDER_CANVAS = SYS.DOM.E("canvas-render"); ROOT_GAME_OBJECT.WEBCAM.NOTES = []; } }; this.CREATE_WEBCAM = function(type_, DIMENSIONS_TYPE, numFieldV, numFieldH) { if(typeof type_ != "undefined") { if(type_ == "NUI") { ROOT_GAME_OBJECT.SET_WEBCAM_VIEW("NUI", DIMENSIONS_TYPE); ROOT_GAME_OBJECT.WEBCAM.numFieldV = numFieldV; ROOT_GAME_OBJECT.WEBCAM.numFieldH = numFieldH; ROOT_GAME_OBJECT.WEBCAM.BS = ROOT_GAME_OBJECT.WEBCAM.BLEND_CANVAS.getContext("2d"); ROOT_GAME_OBJECT.WEBCAM.RC = ROOT_GAME_OBJECT.WEBCAM.RENDER_CANVAS.getContext("2d"); ROOT_GAME_OBJECT.WEBCAM._N_ = new Array(); CREATE_MOTION_PARAMETERS(ROOT_GAME_OBJECT); CREATE_MOTION_FIELDS(ROOT_GAME_OBJECT); ROOT_GAME_OBJECT.WEBCAM.HIDE_INDICATED_POINT = false; ROOT_GAME_OBJECT.WEBCAM.DRAW = WEBCAM_DRAW; } else if("NORMAL") { ROOT_GAME_OBJECT.SET_WEBCAM_VIEW("NORMAL", DIMENSIONS_TYPE); } } else { SYS.DEBUG.WARNING("Pleas enter type of webcam component . [ NUI , NORMAL ] "); } }; this.DESTROY_WEBCAM = function() { ROOT_GAME_OBJECT.TYPE_OF_GAME_OBJECT = "NO_RENDER"; ROOT_GAME_OBJECT.WEBCAM.DRAW = function() {}; ROOT_GAME_OBJECT.WEBCAM.NOTES = []; ROOT_GAME_OBJECT.WEBCAM.BS = null; ROOT_GAME_OBJECT.WEBCAM.RC = null; ROOT_GAME_OBJECT.WEBCAM._N_ = []; delete (ROOT_GAME_OBJECT.WEBCAM); ROOT_GAME_OBJECT.WEBCAM = null; }; //$$$$$$$$$$$$$$$$$$$$$$$$$$$$//$$$$$$$$$$$$$$$$$$$$$$$$$$$$ //$$$$$$$$$$$$$$$$$$$$$$$$$$$$//$$$$$$$$$$$$$$$$$$$$$$$$$$$$ // MUTIRTC_PEER this.ON_PEER_CREATED = { "DONE": function() {} /* MAIN_PEER.CHANNEL.SET('LEVEL1') } */ }; this.CREATE_PEER = function(port) { if(typeof port != "undefined") { window["MAIN_PEER"].PORT = port; } else { window["MAIN_PEER"].PORT = 12034; } if(typeof window["MAIN_PEER"].REMOTE_DATA == "undefined") { ROOT_GAME_OBJECT.MAIN_PEER = window["MAIN_PEER"]; ROOT_GAME_OBJECT.MAIN_PEER.ADDRESS = "localhost"; ROOT_GAME_OBJECT.MAIN_PEER.ON_PEER_CREATED = ROOT_GAME_OBJECT.ON_PEER_CREATED; ROOT_GAME_OBJECT.MAIN_PEER.LOADED = function() { console.log("peer loaded2"); }; if(typeof window[SYS.RUNNING_PROGRAMS[SYS.RUNNING_PROGRAMS.length - 1]].ENGINE.MODULES.ACCESS_MODULE("GUI_STARTER") == "undefined") { setTimeout(ROOT_GAME_OBJECT.CREATE_PEER, 50); return; } else { if(typeof window[SYS.RUNNING_PROGRAMS[SYS.RUNNING_PROGRAMS.length - 1]].ENGINE.MODULES.ACCESS_MODULE("GUI_STARTER").NEW_OBJECT == "function") {} else { setTimeout(ROOT_GAME_OBJECT.CREATE_PEER, 50); return; } } window[SYS.RUNNING_PROGRAMS[SYS.RUNNING_PROGRAMS.length - 1]].ENGINE.MODULES.ACCESS_MODULE("GUI_STARTER").NEW_OBJECT("system_object_for_MAIN_peer", 5, 5, 15, 8, 10); var sys_btn_alias = window[SYS.RUNNING_PROGRAMS[SYS.RUNNING_PROGRAMS.length - 1]].ENGINE.MODULES.ACCESS_MODULE("GUI_STARTER").GAME_OBJECTS.ACCESS("system_object_for_MAIN_peer"); sys_btn_alias.DIMENSION.W = ROOT_GAME_OBJECT.DIMENSION.W; sys_btn_alias.CREATE_TEXTBOX("enter message", 10, "black", "lime"); system_object_for_MAIN_peer.TEXTBOX.font = "18px Arial"; system_object_for_MAIN_peer.TEXTBOX.ON_PRESS_ENTER = function() { SYS.DOM.E("SEND_BTN_").value = system_object_for_MAIN_peer.TEXTBOX.TEXT; SYS.DEBUG.LOG("SEND TEXT MSG TO CURRENT CHANNEL"); system_object_for_MAIN_peer.TEXTBOX.TEXT = ""; ROOT_GAME_OBJECT.MAIN_PEER.SEND_MSG(); }; window[SYS.RUNNING_PROGRAMS[SYS.RUNNING_PROGRAMS.length - 1]].ENGINE.MODULES.ACCESS_MODULE("GUI_STARTER").NEW_OBJECT("system_object_for_MAIN_peer_BTN_connect", 5, 5, 9, 7, 10); var sys_btn_connect = window[SYS.RUNNING_PROGRAMS[SYS.RUNNING_PROGRAMS.length - 1]].ENGINE.MODULES.ACCESS_MODULE("GUI_STARTER").GAME_OBJECTS.ACCESS("system_object_for_MAIN_peer_BTN_connect"); sys_btn_connect.CREATE_TEXTBOX("Connect", 10, "black", "lime"); sys_btn_connect.TEXTBOX.font = "18px Arial"; sys_btn_connect.TEXTBOX.EDIT = false; sys_btn_connect.TAP = function() { if(rtcMultiConnection.sessionDescription == null) { MAIN_PEER.CONNECT_TO_CHANNEL(); } }; /////////////////////// ROOT_GAME_OBJECT.ON_UPDATE_SYS = function() { //sys_btn_alias.POSITION.x = ROOT_GAME_OBJECT.POSITION.x; sys_btn_alias.POSITION.SET_POSITION(ROOT_GAME_OBJECT.POSITION.x, ROOT_GAME_OBJECT.POSITION.y + ROOT_GAME_OBJECT.DIMENSION.H * 1.1, "DIAMETRIC"); sys_btn_connect.POSITION.SET_POSITION(ROOT_GAME_OBJECT.POSITION.x + ROOT_GAME_OBJECT.DIMENSION.W / 1.7, ROOT_GAME_OBJECT.POSITION.y, "DIAMETRIC"); }; // ROOT_GAME_OBJECT. // ROOT_GAME_OBJECT.MAIN_PEER.REMOTE_DATA = { OBJECTS: [], //SEND DATA SHARE: function(object) { rtcMultiConnection.send({ "shared_object": object, "operation": "share" }); object.PEER_SHARED = true; }, SHARE_POSITION: function(object) { object.POSITION.SHARE_POSITION = true; }, NEW_POSITION: function(object) { rtcMultiConnection.send({ "nameOfObject": object.NAME, "operation": "new_pos", "x": object.POSITION.x, "y": object.POSITION.y }); }, NEW_DIMENSION: function(object) { rtcMultiConnection.send({ "nameOfObject": object.NAME, "operation": "new_dim", "x": object.DIMENSION.W, "y": object.DIMENSION.H }); }, // DATA FROM SERVER NETWORK_VIEW: function(e) { if(e.operation == "share") { window[SYS.RUNNING_PROGRAMS[SYS.RUNNING_PROGRAMS.length - 1]].ENGINE.MODULES.ACCESS_MODULE("STARTER").NEW_NETWORK_OBJECT(e.shared_object); } else if(e.operation == "new_pos") { window[SYS.RUNNING_PROGRAMS[SYS.RUNNING_PROGRAMS.length - 1]].ENGINE.MODULES.ACCESS_MODULE("STARTER").NEW_NETWORK_POSITION(e); } else if(e.operation == "new_dim") { window[SYS.RUNNING_PROGRAMS[SYS.RUNNING_PROGRAMS.length - 1]].ENGINE.MODULES.ACCESS_MODULE("STARTER").NEW_NETWORK_DIMENSION(e); } else if(e.operation == "dimension&position") {} }, }; ROOT_GAME_OBJECT.MAIN_PEER.CHANNEL = { GET: function() { return SYS.DOM.E("room-name").value; }, SET: function(newvalue) { SYS.DOM.E("room-name").value = newvalue; }, }; ROOT_GAME_OBJECT.MAIN_PEER.LOCAL_USER = { GET: function() { return SYS.DOM.E("your-name").value; }, SET: function(newvalue) { SYS.DOM.E("your-name").value = newvalue; }, }; ROOT_GAME_OBJECT.MAIN_PEER.SEND_MSG = function() { if(typeof rtcMultiConnection != "undefined") { rtcMultiConnection.send(SYS.DOM.E("SEND_BTN_").value); SYS.DOM.E("SEND_BTN_").value = ""; } }, ROOT_GAME_OBJECT.MAIN_PEER.CONNECT_TO_CHANNEL = function() { SYS.DOM.E("continue").onclick(); }, ROOT_GAME_OBJECT.MAIN_PEER.LOGS = "logs!"; ROOT_GAME_OBJECT.TYPE_OF_GAME_OBJECT = "MAIN_PEER_OBJECT"; setTimeout(function() { MAIN_PEER.ON_PEER_CREATED.DONE(); }, 200); } else { SYS.DEBUG.WARNING("from function CREATE_PEER - MAIN PEER OBJECT ALREADY CREATED."); } }; this.GROUP = { ADD: function(name) { var locx = window[ROOT_GAME_OBJECT.PROGRAM_NAME].ENGINE.MODULES.ACCESS_MODULE(ROOT_GAME_OBJECT.PARENT).GAME_OBJECTS.ACCESS(name).POSITION.x; var locy = window[ROOT_GAME_OBJECT.PROGRAM_NAME].ENGINE.MODULES.ACCESS_MODULE(ROOT_GAME_OBJECT.PARENT).GAME_OBJECTS.ACCESS(name).POSITION.y; var dx = ROOT_GAME_OBJECT.GROUP.MASTER_INITIALS.x - locx; var dy = ROOT_GAME_OBJECT.GROUP.MASTER_INITIALS.y - locy; ROOT_GAME_OBJECT.GROUP.GROUP_INITIALS.push({ x: dx, y: dy }); ROOT_GAME_OBJECT.GROUP.GROUP.push(name); //delete (locx); //delete (locy); //SYS.DEBUG.LOG(dx + "=============" + dy) }, GROUP: [], GROUP_INITIALS: [], MASTER: ROOT_GAME_OBJECT.NAME, MASTER_INITIALS: { x: ROOT_GAME_OBJECT.POSITION.x, y: ROOT_GAME_OBJECT.POSITION.y }, UPDATE: function() {}, }; this.EFFECTS = { FADE: { IN: function(sec) { var TIMER = setTimeout(function() { ROOT_GAME_OBJECT.globalAlpha += 0.02; if(ROOT_GAME_OBJECT.globalAlpha < 1) { ROOT_GAME_OBJECT.EFFECTS.FADE.IN(); } else { ROOT_GAME_OBJECT.globalAlpha = 1; } }, sec); }, OUT: function(sec) { var TIMER = setTimeout(function() { ROOT_GAME_OBJECT.globalAlpha -= 0.02; if(ROOT_GAME_OBJECT.globalAlpha > 0) { ROOT_GAME_OBJECT.EFFECTS.FADE.OUT(); } else { ROOT_GAME_OBJECT.globalAlpha = 0; } }, sec); }, }, ZOOM: { STATUS_FOR_IN: false, STATUS_FOR_OUT: false, ZOOM_IN_FINISHED: function() { console.log("zoom in ----finished."); }, ZOOM_OUT_FINISHED: function() { console.log("zoom out ----finished."); }, VALUE: 0.5, IN: function(sec) { var sec = sec; this.STATUS_FOR_IN = true; var TIMER = setTimeout(function() { if(ROOT_GAME_OBJECT.zoom_scale < ROOT_GAME_OBJECT.EFFECTS.ZOOM.VALUE) { ROOT_GAME_OBJECT.zoom_scale += 0.01; ROOT_GAME_OBJECT.POSITION.SET_POSITION(ROOT_GAME_OBJECT.POSITION.x - ROOT_GAME_OBJECT.zoom_scale, ROOT_GAME_OBJECT.POSITION.y - ROOT_GAME_OBJECT.zoom_scale, "DIAMETRIC"); ROOT_GAME_OBJECT.DIMENSION.W = ROOT_GAME_OBJECT.DIMENSION.W + ROOT_GAME_OBJECT.zoom_scale * 2; ROOT_GAME_OBJECT.DIMENSION.H = ROOT_GAME_OBJECT.DIMENSION.H + ROOT_GAME_OBJECT.zoom_scale * 2; ROOT_GAME_OBJECT.EFFECTS.ZOOM.IN(sec); } else { ROOT_GAME_OBJECT.EFFECTS.ZOOM.ZOOM_IN_FINISHED(); ROOT_GAME_OBJECT.EFFECTS.ZOOM.STATUS_FOR_IN = false; } }, sec); }, OUT: function(sec) { var sec = sec; this.STATUS_FOR_OUT = true; var TIMER = setTimeout(function() { if(ROOT_GAME_OBJECT.POSITION.x < ROOT_GAME_OBJECT.GROUP.MASTER_INITIALS.x) { ROOT_GAME_OBJECT.zoom_scale -= 0.009; ROOT_GAME_OBJECT.POSITION.SET_POSITION(ROOT_GAME_OBJECT.POSITION.x + ROOT_GAME_OBJECT.zoom_scale, ROOT_GAME_OBJECT.POSITION.y + ROOT_GAME_OBJECT.zoom_scale, "DIAMETRIC"); ROOT_GAME_OBJECT.DIMENSION.W = ROOT_GAME_OBJECT.DIMENSION.W - ROOT_GAME_OBJECT.zoom_scale * 2; ROOT_GAME_OBJECT.DIMENSION.H = ROOT_GAME_OBJECT.DIMENSION.H - ROOT_GAME_OBJECT.zoom_scale * 2; ROOT_GAME_OBJECT.EFFECTS.ZOOM.OUT(sec); } else { ROOT_GAME_OBJECT.zoom_scale = 0; ROOT_GAME_OBJECT.EFFECTS.ZOOM.ZOOM_OUT_FINISHED(); ROOT_GAME_OBJECT.EFFECTS.ZOOM.STATUS_FOR_OUT = false; } }, sec); }, }, }; this.PARTICLE = null; this.CREATE_PARTICLE = function(type_) { // NEED to be created more particle system in future !!! ROOT_GAME_OBJECT.PARTICLE = new PARTICLE_FONTAN(ROOT_GAME_OBJECT); ROOT_GAME_OBJECT.TYPE_OF_GAME_OBJECT = "PATRICLE"; }; this.CUSTOM = function() {}; this.DESELECT_ALL = function() { var exec_local = "" + ROOT_GAME_OBJECT.PROGRAM_NAME.toString(); for(var z = 0;z < window[exec_local].ENGINE.MODULES.ACCESS(ROOT_GAME_OBJECT.PARENT).GAME_OBJECTS.length;z++) { window[exec_local].ENGINE.MODULES.ACCESS(ROOT_GAME_OBJECT.PARENT).GAME_OBJECTS[z].EDITOR.SELECTED = false; } }; // For user override this.TOUCH_DOWN = function() { SYS.DEBUG.LOG("No atached event . EVENT_TOUCH_DOWN"); }; this.TAP = function() { SYS.DEBUG.LOG("No atached event . EVENT_TAP : similar click"); }; this.TOUCH_UP = function() { SYS.DEBUG.LOG("No atached event . EVENT_TOUCH_UP"); }; this.TOUCH_MOVE = function() { // SYS.DEBUG.LOG("No atached event . EVENT_TOUCH_MOVE"); }; this.UPDATE_STATUS = { STOP: function() {}, }; this.ROTATE = { ANGLE: 0, //use for custum image drawing RADIANS: 0, // fiktive ROTATE_ARROUNT_CENTER: function() { ORBIT(50, 50, ROOT_GAME_OBJECT.ROTATE.ANGLE, ROOT_GAME_OBJECT.POSITION); }, }; this.DRAW = function(s) { if(ROOT_GAME_OBJECT.VISIBLE == true) { s.save(); s.globalAlpha = ROOT_GAME_OBJECT.globalAlpha; if(this.TYPE_OF_GAME_OBJECT == "ANIMATION") { this.ANIMATION.DRAW(); } else if(this.TYPE_OF_GAME_OBJECT == "TEXT_BOX") { this.TEXTBOX.DRAW(s); } else if(this.TYPE_OF_GAME_OBJECT == "TEXT_BOX_ANIMATION") { this.TEXTBOX.DRAW(s); this.ANIMATION.DRAW(); } else if(this.TYPE_OF_GAME_OBJECT == "PATRICLE") { this.PARTICLE.DRAW(s); } else if(this.TYPE_OF_GAME_OBJECT == "PATRICLE_ANIMATION") { this.PARTICLE.DRAW(s); this.ANIMATION.DRAW(); } else if(this.TYPE_OF_GAME_OBJECT == "ANIMATION_PATRICLE") { this.ANIMATION.DRAW(); this.PARTICLE.DRAW(s); } else if(this.TYPE_OF_GAME_OBJECT == "ANIMATION_TEXT_BOX") { this.ANIMATION.DRAW(); this.TEXTBOX.DRAW(s); } else if(this.TYPE_OF_GAME_OBJECT == "ANIMATION_PATRICLE") { this.ANIMATION.DRAW(); this.PARTICLE.DRAW(s); } else if(this.TYPE_OF_GAME_OBJECT == "WEBCAM") { if(ROOT_GAME_OBJECT.WEBCAM.DIMENSIONS_TYPE = "GAME_OBJECT") { s.drawImage(ROOT_GAME_OBJECT.WEBCAM.VIDEO, ROOT_GAME_OBJECT.POSITION.X(), ROOT_GAME_OBJECT.POSITION.Y(), ROOT_GAME_OBJECT.DIMENSION.WIDTH(), ROOT_GAME_OBJECT.DIMENSION.HEIGHT()); } else { s.drawImage(ROOT_GAME_OBJECT.WEBCAM.VIDEO, ROOT_GAME_OBJECT.POSITION.X(), ROOT_GAME_OBJECT.POSITION.Y(), ROOT_GAME_OBJECT.WEBCAM.VIDEO.width, ROOT_GAME_OBJECT.WEBCAM.VIDEO.height); } } else if(this.TYPE_OF_GAME_OBJECT == "WEBCAM_NUI") { if(ROOT_GAME_OBJECT.WEBCAM.DIMENSIONS_TYPE = "GAME_OBJECT") { s.drawImage(ROOT_GAME_OBJECT.WEBCAM.VIDEO, ROOT_GAME_OBJECT.POSITION.X(), ROOT_GAME_OBJECT.POSITION.Y(), ROOT_GAME_OBJECT.DIMENSION.WIDTH(), ROOT_GAME_OBJECT.DIMENSION.HEIGHT()); } else { s.drawImage(ROOT_GAME_OBJECT.WEBCAM.VIDEO, ROOT_GAME_OBJECT.POSITION.X(), ROOT_GAME_OBJECT.POSITION.Y(), ROOT_GAME_OBJECT.WEBCAM.VIDEO.width, ROOT_GAME_OBJECT.WEBCAM.VIDEO.height); } blend(ROOT_GAME_OBJECT, s); checkAreas(ROOT_GAME_OBJECT); ROOT_GAME_OBJECT.WEBCAM.DRAW(s, ROOT_GAME_OBJECT.WEBCAM); } else if(this.TYPE_OF_GAME_OBJECT == "CUSTOM") { ROOT_GAME_OBJECT.CUSTOM(s); } else if(this.TYPE_OF_GAME_OBJECT == "PENCIL") { ROOT_GAME_OBJECT.PENCIL.DRAW(); } else if(this.TYPE_OF_GAME_OBJECT == "NO_RENDER") { // nothing here } else if(this.TYPE_OF_GAME_OBJECT == "MAIN_PEER_OBJECT") { s.fillStyle = "#192837"; s.fillRect(this.POSITION.X(), this.POSITION.Y(), this.DIMENSION.WIDTH(), this.DIMENSION.HEIGHT()); s.fillStyle = "lime"; s.drawImage(image_system_8, this.POSITION.X() + this.DIMENSION.WIDTH() / 2, this.POSITION.Y() + 30, 90, 90); s.drawImage(image_system_conn, this.POSITION.X() + this.DIMENSION.WIDTH() / 1.4, this.POSITION.Y() + 30, 90, 90); s.fillText("Signaling IP Address : " + this.MAIN_PEER.ADDRESS, this.POSITION.X() + this.EDITOR.ACTORS_AREA_HEIGHT, this.POSITION.Y() + this.EDITOR.ACTORS_AREA_HEIGHT * 4); s.fillText("Name : " + this.MAIN_PEER.LOCAL_USER.GET(), this.POSITION.X() + this.EDITOR.ACTORS_AREA_HEIGHT, this.POSITION.Y() + this.EDITOR.ACTORS_AREA_HEIGHT * 5); s.fillText("Channel : " + this.MAIN_PEER.CHANNEL.GET(), this.POSITION.X() + this.EDITOR.ACTORS_AREA_HEIGHT, this.POSITION.Y() + this.EDITOR.ACTORS_AREA_HEIGHT * 6); s.fillText("peer logs : " + ROOT_GAME_OBJECT.MAIN_PEER.LOGS, this.POSITION.X() + this.EDITOR.ACTORS_AREA_HEIGHT, this.POSITION.Y() + this.EDITOR.ACTORS_AREA_HEIGHT * 7); //ROOT_GAME_OBJECT.MAIN_PEER.LOGS = 'logs!'; } s.restore(); } }; this.DRAW_ACTOR = function(s) { if(this.EDITOR.ACTORS_VISIBLE == true) { s.save(); s.font = "13px Arial"; s.fillRect(0, this.POSITION.Y(), VIEW.W(), 1); s.fillRect(this.POSITION.X(), 0, 1, VIEW.H()); s.globalAlpha = 0.5; s.fillRect(this.POSITION.X(), this.POSITION.Y(), this.DIMENSION.WIDTH(), this.DIMENSION.HEIGHT()); s.globalAlpha = 0.9; if(ROOT_GAME_OBJECT.EDITOR.SELECTED == true) { s.fillText("Name :" + this.NAME, this.POSITION.X() + this.EDITOR.ACTORS_AREA_HEIGHT, this.POSITION.Y() - this.EDITOR.ACTORS_AREA_HEIGHT * 4); s.fillText("Percent :" + CONVERTOR.PIX_TO_PER(this.POSITION.X().toString()).toFixed(2) + "% y:" + CONVERTOR.PIY_TO_PER(this.POSITION.Y()).toFixed(2), this.POSITION.X() + this.EDITOR.ACTORS_AREA_HEIGHT, this.POSITION.Y() - this.EDITOR.ACTORS_AREA_HEIGHT * 2.5); s.fillText("Actor- x:" + this.POSITION.X().toFixed(2).toString() + " y:" + this.POSITION.Y().toFixed(2), this.POSITION.X() + this.EDITOR.ACTORS_AREA_HEIGHT, this.POSITION.Y() - this.EDITOR.ACTORS_AREA_HEIGHT); } //CONVERTOR.PIX_TO_PER( h ); // actor rect for drag //ACTOR_DRAG_RECT s.strokeStyle = "blue"; s.strokeRect(this.EDITOR.ACTOR_DRAG_RECT_POS.X() + this.EDITOR.ACTORS_AREA_HEIGHT, this.EDITOR.ACTOR_DRAG_RECT_POS.Y() + this.EDITOR.ACTORS_AREA_HEIGHT, this.EDITOR.ACTOR_DRAG_RECT_DIM.WIDTH(), this.EDITOR.ACTOR_DRAG_RECT_DIM.HEIGHT()); if(this.EDITOR.ACTOR_BLUE_HOVER == true) { s.fillStyle = "lime"; } else { s.fillStyle = "blue"; } //BLU LINE ACTOR X-OSA s.fillRect(this.POSITION.X(), this.POSITION.Y(), this.EDITOR.ACTORS_AREA_HEIGHT * 15, this.EDITOR.ACTORS_AREA_HEIGHT); s.beginPath(); s.moveTo(this.POSITION.X() + this.EDITOR.ACTORS_AREA_HEIGHT * 10 * 1.5, this.POSITION.Y() - 0.5 * this.EDITOR.ACTORS_AREA_HEIGHT); s.lineTo(this.POSITION.X() + this.EDITOR.ACTORS_AREA_HEIGHT * 10 * 1.5, this.POSITION.Y() + 1.4 * this.EDITOR.ACTORS_AREA_HEIGHT); s.lineTo(this.POSITION.X() + this.EDITOR.ACTORS_AREA_HEIGHT * 12.5 * 1.5, this.POSITION.Y() + 1 / 2 * this.EDITOR.ACTORS_AREA_HEIGHT); s.closePath(); s.fill(); if(this.EDITOR.ACTOR_GREEN_HOVER == true) { s.fillStyle = "lime"; } else { s.fillStyle = "green"; } //BLU LINE ACTOR X-OSA s.fillRect(this.POSITION.X(), this.POSITION.Y(), this.EDITOR.ACTORS_AREA_HEIGHT, this.EDITOR.ACTORS_AREA_HEIGHT * 15); s.beginPath(); s.moveTo(this.POSITION.X() - 0.5 * this.EDITOR.ACTORS_AREA_HEIGHT, this.POSITION.Y() + this.EDITOR.ACTORS_AREA_HEIGHT * 10 * 1.5); s.lineTo(this.POSITION.X() + 1.4 * this.EDITOR.ACTORS_AREA_HEIGHT, this.POSITION.Y() + this.EDITOR.ACTORS_AREA_HEIGHT * 10 * 1.5); s.lineTo(this.POSITION.X() + 1 / 2 * this.EDITOR.ACTORS_AREA_HEIGHT, this.POSITION.Y() + this.EDITOR.ACTORS_AREA_HEIGHT * 12.5 * 1.5); s.closePath(); s.fill(); // fix color compositi near x i y s.fillStyle = "red"; s.beginPath(); //s.strokeStyle = "rgba( 222 , " + this.PULSAR_G.VALUE + " , " + this.PULSAR_B.VALUE + " , " + this.PULSAR_A.VALUE + ")"; s.arc(this.POSITION.X() + this.EDITOR.ACTORS_AREA_HEIGHT / 2, this.POSITION.Y() + this.EDITOR.ACTORS_AREA_HEIGHT / 2, this.EDITOR.ACTORS_AREA_HEIGHT / 2, (0) * Math.PI, (2) * Math.PI); s.fill(); s.closePath(); s.beginPath(); s.lineWidth = 1; s.strokeStyle = "white"; s.arc(this.POSITION.X() + this.EDITOR.ACTORS_AREA_HEIGHT / 2, this.POSITION.Y() + this.EDITOR.ACTORS_AREA_HEIGHT / 2, this.EDITOR.ACTORS_AREA_HEIGHT, (this.EDITOR.ACTOR_CENTER_OSCILATOR.UPDATE() + 0.1) * Math.PI, (this.EDITOR.ACTOR_CENTER_OSCILATOR.UPDATE() - 0.1) * Math.PI); s.stroke(); s.closePath(); s.restore(); } if(ROOT_GAME_OBJECT.EDITOR.GAME_OBJECT_MENU.VISIBLE == true) { for(var x = 0;x < ROOT_GAME_OBJECT.EDITOR.BUTTONS.length;x++) { s.save(); s.textBaseline = 'bottom'; s.globalAlpha = 1; if(ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].HOVER == false) { //if (ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].text == 'Set animation speed ' && ROOT_GAME_OBJECT.ANIMATION != null) { s.fillStyle = APPLICATION.SYSTEM.COLOR; // s.fillRect(ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].POSITION.X(), ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].POSITION.Y(), ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].DIMENSION.WIDTH(), ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].DIMENSION.HEIGHT()); s.fillRect(ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].POSITION.X(), ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].POSITION.Y(), ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].DIMENSION.WIDTH(), 20); s.fillStyle = APPLICATION.SYSTEM.TEXT_COLOR; s.fillText(ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].text, ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].POSITION.X(), ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].POSITION.Y() + 15, ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].DIMENSION.WIDTH()); //} } else { s.fillStyle = APPLICATION.SYSTEM.HOVER_COLOR; //s.fillRect(ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].POSITION.X(), ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].POSITION.Y(), ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].DIMENSION.WIDTH(), ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].DIMENSION.HEIGHT()); s.fillRect(ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].POSITION.X(), ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].POSITION.Y(), ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].DIMENSION.WIDTH(), 20); s.fillStyle = APPLICATION.SYSTEM.TEXT_COLOR; s.fillText(ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].text, ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].POSITION.X(), ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].POSITION.Y() + 15, ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].DIMENSION.WIDTH()); if(ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].icon == true) { try { s.drawImage(window["image_system_" + ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].IAM], ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].POSITION.X() + ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].DIMENSION.WIDTH() - 30, ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].POSITION.Y() - 5, 30, 30); } catch(e) { /* Not nessesery */ } } } s.restore(); if(ROOT_GAME_OBJECT.WEBCAM != null) { //s.drawImage( , ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].POSITION.X() , ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].POSITION.Y() + ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].DIMENSION.HEIGHT()/2 , ROOT_GAME_OBJECT.EDITOR.BUTTONS[x].DIMENSION.WIDTH()); } } } }; this.ON_UPDATE = function() {}; this.ON_UPDATE_SYS = function() {}; this.UPDATE = function() { if(this.AUTO_UPDATE == true) { ROOT_GAME_OBJECT.POSITION.UPDATE(); } if(ROOT_GAME_OBJECT.EDITOR.ENABLE == false) { if(ROOT_GAME_OBJECT.DESTROY_AFTER != null) { if(ROOT_GAME_OBJECT.DESTROY_AFTER > 0) { ROOT_GAME_OBJECT.DESTROY_AFTER--; } } } if(ROOT_GAME_OBJECT.GROUP.GROUP.length > 0) { for(var s = 0;s < ROOT_GAME_OBJECT.GROUP.GROUP.length;s++) { window[ROOT_GAME_OBJECT.PROGRAM_NAME].ENGINE.MODULES.ACCESS(ROOT_GAME_OBJECT.PARENT).GAME_OBJECTS.ACCESS(ROOT_GAME_OBJECT.GROUP.GROUP[s]).POSITION.x = ROOT_GAME_OBJECT.POSITION.x - ROOT_GAME_OBJECT.GROUP.GROUP_INITIALS[s].x; window[ROOT_GAME_OBJECT.PROGRAM_NAME].ENGINE.MODULES.ACCESS(ROOT_GAME_OBJECT.PARENT).GAME_OBJECTS.ACCESS(ROOT_GAME_OBJECT.GROUP.GROUP[s]).POSITION.y = ROOT_GAME_OBJECT.POSITION.y - ROOT_GAME_OBJECT.GROUP.GROUP_INITIALS[s].y; } } if(ROOT_GAME_OBJECT.DESTROY_ON_GAMEMAP_EXIT == true && ROOT_GAME_OBJECT.POSITION.Y() < window[ROOT_GAME_OBJECT.PROGRAM_NAME].MAP.UP()) { //alert("DESTROYED " + ROOT_GAME_OBJECT.NAME) window[ROOT_GAME_OBJECT.PROGRAM_NAME].ENGINE.MODULES.ACCESS_MODULE(ROOT_GAME_OBJECT.PARENT).DESTROY_OBJECT(ROOT_GAME_OBJECT.NAME); } ROOT_GAME_OBJECT.ON_UPDATE(); ROOT_GAME_OBJECT.ON_UPDATE_SYS(); }; this.GAME_OBJECT_READY = function() { SYS.DEBUG.LOG("ready : " + ROOT_GAME_OBJECT.NAME); /* if (OVERRIDE_DRAW_FOR_NETWORK == null){ //ALLWAYS OVERRIDE_DRAW_FOR_NETWORK = ROOT_GAME_OBJECT.DRAW; OVERRIDE_UPDATE_FOR_NETWORK = ROOT_GAME_OBJECT.UPDATE; OVERRIDE_POSITION_X = ROOT_GAME_OBJECT.POSITION.X; OVERRIDE_POSITION_Y = ROOT_GAME_OBJECT.POSITION.Y; OVERRIDE_DIMENSION_WIDTH = ROOT_GAME_OBJECT.DIMENSION.WIDTH; OVERRIDE_DIMENSION_HEIGHT = ROOT_GAME_OBJECT.DIMENSION.HEIGHT; } if (OVERRIDE_ANIMATION_DRAW == null) { //NOT ALWAYS OVERRIDE_ANIMATION_DRAW = ROOT_GAME_OBJECT.ANIMATION.DRAW; OVERRIDE_ANIMATION_X = ROOT_GAME_OBJECT.ANIMATION.X; OVERRIDE_ANIMATION_Y = ROOT_GAME_OBJECT.ANIMATION.Y; OVERRIDE_ANIMATION_W = ROOT_GAME_OBJECT.ANIMATION.W; OVERRIDE_ANIMATION_H = ROOT_GAME_OBJECT.ANIMATION.H; } */ }; setTimeout(ROOT_GAME_OBJECT.GAME_OBJECT_READY, 15); }