Add gemooy-launcher.js.
Chris Pressey
7 years ago
26 | 26 | |
27 | 27 | <h1>Gemooy</h1> |
28 | 28 | |
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> | |
42 | 30 | |
43 | 31 | </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> | |
51 | 33 | <script src="../eg/index.js"></script> |
52 | 34 | <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'); | |
93 | 36 | </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 | } |