Mercurial > web-gnusto
annotate engine-runner.js @ 43:e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Thu, 15 May 2008 23:42:23 -0700 |
parents | 696fef276111 |
children | 1effb310d6ee |
rev | line source |
---|---|
6
aeb4289c141f
Added a test runner class w/ simple test suite.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
1 function Zui() { |
aeb4289c141f
Added a test runner class w/ simple test suite.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
2 } |
aeb4289c141f
Added a test runner class w/ simple test suite.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
3 |
aeb4289c141f
Added a test runner class w/ simple test suite.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
4 Zui.prototype = { |
36
afa332a44721
The zui now has a getSize() method which returns the size of the screen in characters. This is communicated to the z-machine.
Atul Varma <varmaa@toolness.com>
parents:
35
diff
changeset
|
5 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
6 // Returns a 2-element list containing the width and height of the |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
7 // screen, in characters. The width may be 255, which means |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
8 // "infinite". |
36
afa332a44721
The zui now has a getSize() method which returns the size of the screen in characters. This is communicated to the z-machine.
Atul Varma <varmaa@toolness.com>
parents:
35
diff
changeset
|
9 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
10 getSize: function() { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
11 }, |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
12 onLineInput: function(callback) { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
13 }, |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
14 onCharacterInput: function(callback) { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
15 }, |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
16 onSave: function(callback) { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
17 }, |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
18 onRestore: function(callback) { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
19 }, |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
20 onQuit: function() { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
21 }, |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
22 onRestart: function(callback) { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
23 }, |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
24 onWimpOut: function(callback) { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
25 }, |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
26 onBreakpoint: function(callback) { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
27 }, |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
28 onSetStyle: function(textStyle, foreground, background) { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
29 }, |
35
be2a410b8518
Added docs for onEraseWindow(), changed implementation to match.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
30 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
31 // From the Z-Machine spec for split_window: Splits the screen so |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
32 // that the upper window has the given number of lines: or, if |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
33 // this is zero, unsplits the screen again. |
37
9e7a743ccac5
Added very, very buggy support for the top window.
Atul Varma <varmaa@toolness.com>
parents:
36
diff
changeset
|
34 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
35 onSplitWindow: function(numLines) { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
36 }, |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
37 onSetWindow: function(window) { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
38 }, |
37
9e7a743ccac5
Added very, very buggy support for the top window.
Atul Varma <varmaa@toolness.com>
parents:
36
diff
changeset
|
39 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
40 // From the Z-Machine spec for erase_window: Erases window with |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
41 // given number (to background colour); or if -1 it unsplits the |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
42 // screen and clears the lot; or if -2 it clears the screen |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
43 // without unsplitting it. |
35
be2a410b8518
Added docs for onEraseWindow(), changed implementation to match.
Atul Varma <varmaa@toolness.com>
parents:
34
diff
changeset
|
44 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
45 onEraseWindow: function(window) { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
46 }, |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
47 onEraseLine: function() { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
48 }, |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
49 onSetCursor: function(x, y) { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
50 }, |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
51 onSetBufferMode: function() { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
52 }, |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
53 onSetInputStream: function() { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
54 }, |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
55 onGetCursor: function() { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
56 }, |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
57 onPrint: function(output) { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
58 }, |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
59 onPrintTable: function(lines) { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
60 }, |
6
aeb4289c141f
Added a test runner class w/ simple test suite.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
61 }; |
aeb4289c141f
Added a test runner class w/ simple test suite.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
62 |
34
cf2303c41d8c
Added logging functionality to engine-runner.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
63 function EngineRunner(engine, zui, logfunc) { |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
64 this._engine = engine; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
65 this._zui = zui; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
66 this._isRunning = false; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
67 this._isInLoop = false; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
68 this._isWaitingForCallback = false; |
6
aeb4289c141f
Added a test runner class w/ simple test suite.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
69 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
70 if (logfunc) { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
71 this._log = logfunc; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
72 } else { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
73 this._log = function() {}; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
74 } |
34
cf2303c41d8c
Added logging functionality to engine-runner.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
75 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
76 var self = this; |
6
aeb4289c141f
Added a test runner class w/ simple test suite.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
77 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
78 this.__proto__ = { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
79 stop: function() { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
80 self._isRunning = false; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
81 }, |
6
aeb4289c141f
Added a test runner class w/ simple test suite.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
82 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
83 run: function() { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
84 var size = self._zui.getSize(); |
36
afa332a44721
The zui now has a getSize() method which returns the size of the screen in characters. This is communicated to the z-machine.
Atul Varma <varmaa@toolness.com>
parents:
35
diff
changeset
|
85 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
86 self._isRunning = true; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
87 self._engine.m_memory[0x20] = size[1]; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
88 self._engine.m_memory[0x21] = size[0]; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
89 self._continueRunning(); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
90 }, |
6
aeb4289c141f
Added a test runner class w/ simple test suite.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
91 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
92 _continueRunning: function() { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
93 while (self._isRunning && !self._isWaitingForCallback) { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
94 self._loop(); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
95 } |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
96 }, |
6
aeb4289c141f
Added a test runner class w/ simple test suite.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
97 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
98 _receiveLineInput: function(input) { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
99 self._isWaitingForCallback = false; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
100 self._engine.answer(1, input); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
101 if (!self._isInLoop) { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
102 self._continueRunning(); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
103 } else { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
104 /* We're still inside _loop(), so just return. */ |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
105 } |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
106 }, |
6
aeb4289c141f
Added a test runner class w/ simple test suite.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
107 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
108 _receiveCharacterInput: function(input) { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
109 self._isWaitingForCallback = false; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
110 self._engine.answer(0, input); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
111 if (!self._isInLoop) { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
112 self._continueRunning(); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
113 } else { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
114 /* We're still inside _loop(), so just return. */ |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
115 } |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
116 }, |
32
3a85b5915ea6
Added bad implementation of character input. The 'info' command in Troll no longer crashes the Z-Machine, but because we don't currently support multiple windows and the the 'info' command uses the top window as an interface, it still looks like it's hanging.
Atul Varma <varmaa@toolness.com>
parents:
31
diff
changeset
|
117 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
118 _loop: function() { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
119 if (self._isInLoop) |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
120 throw Error("Already in loop!"); |
6
aeb4289c141f
Added a test runner class w/ simple test suite.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
121 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
122 self._isInLoop = true; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
123 var engine = self._engine; |
6
aeb4289c141f
Added a test runner class w/ simple test suite.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
124 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
125 engine.run(); |
38
696fef276111
Top window output is less buggy now.
Atul Varma <varmaa@toolness.com>
parents:
37
diff
changeset
|
126 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
127 var text = engine.consoleText(); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
128 if (text) |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
129 self._zui.onPrint(text); |
38
696fef276111
Top window output is less buggy now.
Atul Varma <varmaa@toolness.com>
parents:
37
diff
changeset
|
130 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
131 var effect = '"' + engine.effect(0) + '"'; |
6
aeb4289c141f
Added a test runner class w/ simple test suite.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
132 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
133 var logString = "[ " + engine.effect(0); |
34
cf2303c41d8c
Added logging functionality to engine-runner.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
134 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
135 for (var i = 1; engine.effect(i) != undefined; i++) { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
136 var value = engine.effect(i); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
137 if (typeof value == "string") |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
138 value = value.quote(); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
139 logString += ", " + value; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
140 } |
34
cf2303c41d8c
Added logging functionality to engine-runner.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
141 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
142 self._log(logString + " ]"); |
34
cf2303c41d8c
Added logging functionality to engine-runner.
Atul Varma <varmaa@toolness.com>
parents:
32
diff
changeset
|
143 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
144 switch (effect) { |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
145 case GNUSTO_EFFECT_INPUT: |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
146 self._isWaitingForCallback = true; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
147 self._zui.onLineInput(self._receiveLineInput); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
148 break; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
149 case GNUSTO_EFFECT_INPUT_CHAR: |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
150 self._isWaitingForCallback = true; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
151 self._zui.onCharacterInput(self._receiveCharacterInput); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
152 break; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
153 case GNUSTO_EFFECT_SAVE: |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
154 case GNUSTO_EFFECT_RESTORE: |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
155 throw Error("Unimplemented effect: " + effect); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
156 case GNUSTO_EFFECT_QUIT: |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
157 self.stop(); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
158 self._zui.onQuit(); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
159 break; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
160 case GNUSTO_EFFECT_RESTART: |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
161 case GNUSTO_EFFECT_WIMP_OUT: |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
162 case GNUSTO_EFFECT_BREAKPOINT: |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
163 case GNUSTO_EFFECT_FLAGS_CHANGED: |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
164 case GNUSTO_EFFECT_PIRACY: |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
165 throw Error("Unimplemented effect: " + effect); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
166 case GNUSTO_EFFECT_STYLE: |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
167 self._zui.onSetStyle(engine.effect(1), |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
168 engine.effect(2), |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
169 engine.effect(3)); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
170 break; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
171 case GNUSTO_EFFECT_SOUND: |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
172 throw Error("Unimplemented effect: " + effect); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
173 case GNUSTO_EFFECT_SPLITWINDOW: |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
174 self._zui.onSplitWindow(engine.effect(1)); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
175 break; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
176 case GNUSTO_EFFECT_SETWINDOW: |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
177 self._zui.onSetWindow(engine.effect(1)); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
178 break; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
179 case GNUSTO_EFFECT_ERASEWINDOW: |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
180 self._zui.onEraseWindow(engine.effect(1)); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
181 break; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
182 case GNUSTO_EFFECT_ERASELINE: |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
183 throw Error("Unimplemented effect: " + effect); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
184 case GNUSTO_EFFECT_SETCURSOR: |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
185 self._zui.onSetCursor(engine.effect(2), |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
186 engine.effect(1)); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
187 break; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
188 case GNUSTO_EFFECT_SETBUFFERMODE: |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
189 case GNUSTO_EFFECT_SETINPUTSTREAM: |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
190 case GNUSTO_EFFECT_GETCURSOR: |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
191 case GNUSTO_EFFECT_PRINTTABLE: |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
192 throw Error("Unimplemented effect: " + effect); |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
193 } |
6
aeb4289c141f
Added a test runner class w/ simple test suite.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
194 |
43
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
195 self._isInLoop = false; |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
196 } |
e45b81cdb4d0
Modified indentation to be 2 spaces instead of 4, as per Mozilla's JS style guidelines.
Atul Varma <varmaa@toolness.com>
parents:
38
diff
changeset
|
197 }; |
6
aeb4289c141f
Added a test runner class w/ simple test suite.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
198 } |