git @ Cat's Eye Technologies Gemooy / 3ee647f
Add gemooy-launcher.js. Chris Pressey 7 years ago
2 changed file(s) with 78 addition(s) and 60 deletion(s). Raw diff Collapse all Expand all
2626
2727 <h1>Gemooy</h1>
2828
29 <div id="control_panel"></div>
30
31 <div>
32 example source: <select id="select_source"></select>
33 </div>
34
35 <div id="canvas_viewport">
36 <canvas id="canvas" width="400" height="400">
37 Your browser doesn't support displaying an HTML5 canvas.
38 </canvas>
39 </div>
40
41 <textarea id="editor" rows="25" cols="40"></textarea>
29 <div id="container"></div>
4230
4331 </body>
44 <script src="../src/yoob/controller.js"></script>
45 <script src="../src/yoob/playfield.js"></script>
46 <script src="../src/yoob/playfield-canvas-view.js"></script>
47 <script src="../src/yoob/cursor.js"></script>
48 <script src="../src/yoob/preset-manager.js"></script>
49 <script src="../src/yoob/source-manager.js"></script>
50 <script src="../src/gemooy.js"></script>
32 <script src="../src/gemooy-launcher.js"></script>
5133 <script src="../eg/index.js"></script>
5234 <script>
53 var controlPanel = document.getElementById('control_panel');
54 var display = document.getElementById('canvas_viewport');
55
56 var v = new yoob.PlayfieldCanvasView;
57 v.init({
58 canvas: document.getElementById('canvas')
59 });
60 v.setCellDimensions(undefined, 20);
61
62 var c = (new GemooyController()).init({
63 panelContainer: controlPanel,
64 view: v
65 });
66
67 var sourceManager = (new yoob.SourceManager()).init({
68 panelContainer: controlPanel,
69 editor: document.getElementById('editor'),
70 hideDuringEdit: [display],
71 disableDuringEdit: [c.panel],
72 storageKey: 'gemooy.js',
73 onDone: function() {
74 c.performReset(this.getEditorText());
75 }
76 });
77
78 var presetManager = (new yoob.PresetManager()).init({
79 selectElem: document.getElementById('select_source'),
80 setPreset: function(id) {
81 sourceManager.loadSourceFromHTML(document.getElementById(id).innerHTML);
82 }
83 })
84 function makeCallback(sourceText) {
85 return function(id) {
86 sourceManager.loadSource(sourceText);
87 }
88 }
89 for (var i = 0; i < examplePrograms.length; i++) {
90 presetManager.add(examplePrograms[i][0], makeCallback(examplePrograms[i][1]));
91 }
92 presetManager.select('toggle-column.gemooy');
35 launch('../src/', 'container');
9336 </script>
0 function launch(prefix, container, config) {
1 if (typeof container === 'string') {
2 container = document.getElementById(container);
3 }
4 config = config || {};
5
6 function loadThese(deps, callback) {
7 var loaded = 0;
8 for (var i = 0; i < deps.length; i++) {
9 var elem = document.createElement('script');
10 elem.src = prefix + deps[i];
11 elem.onload = function() {
12 if (++loaded < deps.length) return;
13 callback();
14 }
15 document.body.appendChild(elem);
16 }
17 }
18
19 loadThese([
20 "yoob/controller.js",
21 "yoob/playfield.js",
22 "yoob/playfield-canvas-view.js",
23 "yoob/cursor.js",
24 "yoob/preset-manager.js",
25 "yoob/source-manager.js"
26 ], function() {
27 loadThese(["gemooy.js"], function() {
28 container.innerHTML =
29 '<div id="control_panel"></div>' +
30 '<div>example source: <select id="select_source"></select></div>' +
31 '<div id="canvas_viewport"><canvas id="canvas" width="400" height="400"></canvas></div>' +
32 '<textarea id="editor" rows="25" cols="40"></textarea>';
33
34 var controlPanel = document.getElementById('control_panel');
35 var display = document.getElementById('canvas_viewport');
36 var selectSource = document.getElementById('select_source');
37
38 var v = new yoob.PlayfieldCanvasView;
39 v.init({
40 canvas: document.getElementById('canvas')
41 });
42 v.setCellDimensions(undefined, 20);
43
44 var c = (new GemooyController()).init({
45 panelContainer: controlPanel,
46 view: v
47 });
48
49 var sourceManager = (new yoob.SourceManager()).init({
50 panelContainer: controlPanel,
51 editor: document.getElementById('editor'),
52 hideDuringEdit: [display],
53 disableDuringEdit: [c.panel],
54 storageKey: 'gemooy.js',
55 onDone: function() {
56 c.performReset(this.getEditorText());
57 }
58 });
59
60 var presetManager = (new yoob.PresetManager()).init({
61 selectElem: selectSource
62 });
63 function makeCallback(sourceText) {
64 return function(id) {
65 sourceManager.loadSource(sourceText);
66 }
67 }
68 for (var i = 0; i < examplePrograms.length; i++) {
69 presetManager.add(examplePrograms[i][0], makeCallback(examplePrograms[i][1]));
70 }
71 presetManager.select('toggle-column.gemooy');
72 });
73 });
74 }