1 /*
2
3 This is the script which runs the hoot.html tool itself. Mostly, it just
4 contains a bunch of click handlers. But if you're not sure how anything is
5 being done, this is the place to start.
6
7 */
8
9
10
11 var grammar = getGrammar();
12
13
14 function clickTab(tab, tabContent){
15 $(".tabContent").hide();
16 $(".tab").removeClass("selected");
17 tab.addClass("selected");
18 tabContent.show();
19 }
20
21 function parseScript(){
22 return parser($("#source").val(), grammar);
23 }
24
25 function showError(results, where){
26 $(where+" .errorhell")
27 .html(getErrorMessage(results, $("#source").val()))
28 .show();
29 }
30
31
32 function showPrettyStructure(){
33
34 var results = parseScript();
35 if(!results.success){
36 $("#structurearea").html("");
37 showError(results, "#structure");
38 return;
39 }
40
41 var display = getPrettyStructure(results.tree);
42 $("#structure .errorhell").hide();
43 $("#structurearea").html(display);
44 }
45
46 function playGame(){
47 var results = parseScript();
48 if(!results.success){
49 $("#playarea").hide();
50 showError(results, "#play");
51 return;
52 }
53
54 // do play here
55 $("#play .errorhell").hide();
56 $("#playarea").show();
57 rungame(results.tree, $("#playarea"));
58 }
59
60 function buildGame(){
61 var results = parseScript();
62 if(!results.success){
63 $("#buildarea").hide();
64 $("#buildtest").hide();
65 showError(results, "#build");
66 return;
67 }
68
69 // do build here
70 $("#build .errorhell").hide();
71 $("#buildarea").show();
72 $("#buildtest").show();
73 var orig = JSON.stringify(results.tree);
74 global_compressed_game = hootCompress(orig);
75 $("#buildarea").val("var game=\""+global_compressed_game+"\";");
76 }
77
78 var global_compressed_game = "";
79
80
81
82 $(function(){
83
84 // On startup:
85
86
87 $('#tab_docs').click(function(){
88 clickTab($(this), $('#docs'));
89 return false;
90 });
91
92 // structure tab!
93 $('#tab_structure').click(function(){
94 clickTab($(this), $('#structure'));
95 showPrettyStructure();
96 return false;
97 });
98
99 // play tab!
100 $('#tab_play').click(function(){
101 clickTab($(this), $('#play'));
102 playGame();
103 return false;
104 });
105
106 // build tab!
107 $('#tab_build').click(function(){
108 clickTab($(this), $('#build'));
109 buildGame();
110 return false;
111 });
112
113 // build playtest link
114 $("#buildtest").click(function(){
115 $("#play").show();
116 $("#play .errorhell").hide();
117 $("#playarea").show();
118 rungame(JSON.parse(hootDecompress(global_compressed_game)), $("#playarea"));
119 return false;
120 });
121
122 // start with docs tab selected
123 $('#tab_docs').click();
124
125
126
127 $('#generate-script').click(function(){
128 $('#source').val(generateExampleScript());
129 return false;
130 });
131
132
133
134 });
135