From 7ad8ccc39badb2aeacc40a73d4f37d5fe243bcbf Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Sat, 26 Mar 2016 10:41:58 +0100 Subject: [PATCH] Preparing for crazy autoloading expermiment --- UI/Input/InputManager.js | 16 +++++++++-- autoloader.js | 59 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 3 deletions(-) diff --git a/UI/Input/InputManager.js b/UI/Input/InputManager.js index 5fca112..7b2b9ab 100644 --- a/UI/Input/InputManager.js +++ b/UI/Input/InputManager.js @@ -1,5 +1,15 @@ (function (jsOMS, undefined) { - jsOMS.InputManager = function () - { - }; + jsOMS.Autoloader.defineNamespace('jsOMS.UI.Input'); + + jsOMS.Autoloader.include(['jsOMS/UI/Input/Keyboard/KeyBoardManager.js'], function() { + jsOMS.UI.Input.InputManager = function () + { + this.keyBoardManager = new jsOMS.UI.Input.Keyboard.KeyBoardManager(); + }; + + jsOMS.UI.Input.InputManager.prototype.getKeyboardManager = function() + { + return this.keyBoardManager; + }; + }); }(window.jsOMS = window.jsOMS || {})); diff --git a/autoloader.js b/autoloader.js index d83798f..e434864 100644 --- a/autoloader.js +++ b/autoloader.js @@ -1,4 +1,5 @@ (function (jsOMS, undefined) { + jsOMS.Autoloader = {}; jsOMS.Account = {}; jsOMS.Asset = {}; jsOMS.Auth = {}; @@ -32,4 +33,62 @@ jsOMS.Utils = {}; jsOMS.Validation = {}; jsOMS.Views = {}; + + jsOMS.Autoloader.loaded = []; + jsOMS.Autoloader.namespaced = []; + + jsOMS.Autoloader.defineNamespace = function(namespace) + { + if(jsOMS.Autoloader.namespaced.indexOf(namespace) === -1) { + let paths = namespace.split('.'); + paths.splice(0, 1); + + let length = paths.length, + current = jsOMS; + + for(let i = 0; i < length; i++) { + if(current[paths[i]] === 'undefined') { + current[paths[i]] = {}; + } + + current = current[paths[i]]; + } + + jsOMS.Autoloader.namespaced.push(namespace); + } + }; + + jsOMS.Autoloader.initPreloaded = function() + { + let scripts = document.getElementsByTagName('script'), + length = scripts.length; + + for(let i = 0; i < length; i++) { + scripts[i].src.replace(URL + '/', ''); + + if(jsOMS.Autoloader.loaded.indexOf(scripts[i].src) === -1) { + jsOMS.Autoloader.loaded.push(scripts[i].src); + } + } + }; + + jsOMS.Autoloader.setPreloaded = function(file) + { + if(jsOMS.Autoloader.loaded.indexOf(file) === -1) { + jsOMS.Autoloader.loaded.push(file); + } + }; + + jsOMS.Autoloader.include = function(file, callback) + { + let length = file.length; + + for(let i = 0; i < length; i++) { + if(jsOMS.Autoloader.loaded.indexOf(file) === -1) { + // todo: implement asset loading and pass callback + + jsOMS.Autoloader.loaded.push(file); + } + } + }; }(window.jsOMS = window.jsOMS || {})); \ No newline at end of file