Lucas Kent e39465ad2f Changes to be committed:
new file:   Files/flashplayer_32_sa.exe
	new file:   favicon.ico
	new file:   globe.gif
	new file:   imgs/download.png
	new file:   imgs/zuck.jpg
	new file:   index.html
	new file:   other.ico
	new file:   script.js
	new file:   site.webmanifest
	new file:   sitemap.html
	new file:   styles/backround.css
	new file:   styles/border.css
	new file:   styles/fonts/Titillium_Web/OFL.txt
	new file:   styles/fonts/Titillium_Web/TitilliumWeb-Black.ttf
	new file:   styles/fonts/Titillium_Web/TitilliumWeb-Bold.ttf
	new file:   styles/fonts/Titillium_Web/TitilliumWeb-BoldItalic.ttf
	new file:   styles/fonts/Titillium_Web/TitilliumWeb-ExtraLight.ttf
	new file:   styles/fonts/Titillium_Web/TitilliumWeb-ExtraLightItalic.ttf
	new file:   styles/fonts/Titillium_Web/TitilliumWeb-Italic.ttf
	new file:   styles/fonts/Titillium_Web/TitilliumWeb-Light.ttf
	new file:   styles/fonts/Titillium_Web/TitilliumWeb-LightItalic.ttf
	new file:   styles/fonts/Titillium_Web/TitilliumWeb-Regular.ttf
	new file:   styles/fonts/Titillium_Web/TitilliumWeb-SemiBold.ttf
	new file:   styles/fonts/Titillium_Web/TitilliumWeb-SemiBoldItalic.ttf
	new file:   styles/fonts/webfontkit-20221027-163353/generator_config.txt
	new file:   styles/fonts/webfontkit-20221027-163353/specimen_files/grid_12-825-55-15.css
	new file:   styles/fonts/webfontkit-20221027-163353/specimen_files/specimen_stylesheet.css
	new file:   styles/fonts/webfontkit-20221027-163353/stylesheet.css
	new file:   styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-demo.html
	new file:   styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-webfont.woff
	new file:   styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-webfont.woff2
	new file:   styles/fonts/webfontkit-20221027-165950/generator_config.txt
	new file:   styles/fonts/webfontkit-20221027-165950/specimen_files/grid_12-825-55-15.css
	new file:   styles/fonts/webfontkit-20221027-165950/specimen_files/specimen_stylesheet.css
	new file:   styles/fonts/webfontkit-20221027-165950/stylesheet.css
	new file:   styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-demo.html
	new file:   styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-webfont.woff
	new file:   styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-webfont.woff2
	new file:   styles/style.css
	new file:   tools/2048/.gitignore
	new file:   tools/2048/.jshintrc
	new file:   tools/2048/CONTRIBUTING.md
	new file:   tools/2048/LICENSE.txt
	new file:   tools/2048/README.md
	new file:   tools/2048/Rakefile
	new file:   tools/2048/favicon.ico
	new file:   tools/2048/index.html
	new file:   tools/2048/js/animframe_polyfill.js
	new file:   tools/2048/js/application.js
	new file:   tools/2048/js/bind_polyfill.js
	new file:   tools/2048/js/classlist_polyfill.js
	new file:   tools/2048/js/game_manager.js
	new file:   tools/2048/js/grid.js
	new file:   tools/2048/js/html_actuator.js
	new file:   tools/2048/js/keyboard_input_manager.js
	new file:   tools/2048/js/local_storage_manager.js
	new file:   tools/2048/js/tile.js
    new file:   tools/2048/meta/apple-touch-icon.png
	new file:   tools/webretro/cores/neocd_libretro.js
	new file:   tools/webretro/cores/neocd_libretro.wasm
	new file:   tools/webretro/cores/nestopia_libretro.js
	new file:   tools/webretro/cores/nestopia_libretro.wasm
	new file:   tools/webretro/cores/o2em_libretro.js
	new file:   tools/webretro/cores/o2em_libretro.wasm
	new file:   tools/webretro/cores/opera_libretro.js
	new file:   tools/webretro/cores/opera_libretro.wasm
2022-11-02 08:40:01 -04:00

162 lines
2.8 KiB
JavaScript

var pgli = pgli || {};
pgli.Project = gamecore.Base.extend('Project',
{
patternRoot: /\/([a-z]+\.pmod)/ig,
patternPath: /([a-z\/]+\/)[a-z]+\.pmod/ig
},
{
appInstance: null,
modules: null,
activeFile: null,
files:null,
keys :[],
name: "default",
path: "/files/",
root: "default.pmod",
diagram: null,
loadingQueue: [],
onLoad: function() { console.log("Project loaded."); },
init : function(projectFile, onLoad)
{
this.onLoad = onLoad;
this.modules = new gamecore.Hashtable();
this.files = new gamecore.Hashtable();
this.path = pgli.Project.patternPath.exec(projectFile)[1];
this.root = pgli.Project.patternRoot.exec(projectFile)[1];
var self = this;
this.loadFile(projectFile,this.root,true,true);
},
loadFile: function(path,name,doDependencies,doDiagram)
{
trace("#Loading ["+name+"].");
var self = this;
var request = $.ajax({
url: path,
type: 'get',
dataType: "text",
})
.success(function(data)
{
self.files.put(name, data);
self.keys.push(name);
var object = pgli.lang.Parser.parseModule(data);
self.modules.put(name, object);
if(doDependencies == true)
self.loadDependencies(object);
if(doDiagram == true)
self.getAppInstance().addDiagramNode(name, object);
trace("#["+name+"] loaded");
self.onLoad();
})
.error(function()
{
throw "Unable to load file: " + path;
});
},
loadDependencies: function(object)
{
if(!("layers" in object))
return;
var layers = object.layers;
var self = this;
for (var i=0, len = layers.length; i<len ; i++)
{
if(!("use" in layers[i]) )
continue;
var layerName = layers[i].use;
trace("#Found dependency ["+layerName+"]");
(function(name,self)
{
self.loadFile(self.path+name,name,true,true);
})(layerName,self);
}
},
getModulesCount: function()
{
return this.keys.length;
},
getModule: function(key)
{
return this.modules.get(key);
},
getFile: function(key)
{
return this.files.get(key);
},
getModuleKey: function(index)
{
return this.keys[index];
},
getRootModule: function()
{
return this.modules.get(this.root);
},
isEmpty: function()
{
return (this.keys.length <= 0);
},
setAppInstance: function(app)
{
this.appInstance = app;
},
getAppInstance: function()
{
return this.appInstance;
},
setActiveFile: function(key)
{
this.activeFile = key;
},
rememberActiveFile: function()
{
if(!this.activeFile) return;
this.files.put(this.activeFile, this.getAppInstance().getEditorContent());
}
/*updateDiagram: function()
{
},
render: function(canvasRenderer)
{
//canvasRenderer.Render(modules, root, new Hashtable());
}*/
});