nadesiko3 3.7.13 → 3.7.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/batch/command.txt +473 -473
- package/batch/jsplugin2text.nako3 +2 -0
- package/core/package.json +1 -1
- package/core/src/nako3.mjs +0 -4
- package/core/src/nako3.mts +55 -55
- package/core/src/nako_ast.mjs +0 -1
- package/core/src/nako_ast.mts +1 -1
- package/core/src/nako_colors.mjs +0 -1
- package/core/src/nako_colors.mts +1 -1
- package/core/src/nako_core_version.mjs +2 -2
- package/core/src/nako_core_version.mts +2 -2
- package/core/src/nako_csv.mjs +0 -1
- package/core/src/nako_csv.mts +9 -9
- package/core/src/nako_errors.mts +8 -8
- package/core/src/nako_from_dncl.mts +5 -5
- package/core/src/nako_from_dncl2.mjs +0 -1
- package/core/src/nako_from_dncl2.mts +5 -5
- package/core/src/nako_gen.mjs +13 -15
- package/core/src/nako_gen.mts +224 -220
- package/core/src/nako_global.mts +11 -11
- package/core/src/nako_indent.mts +92 -92
- package/core/src/nako_indent_chars.mts +1 -1
- package/core/src/nako_indent_inline.mjs +11 -11
- package/core/src/nako_indent_inline.mts +20 -20
- package/core/src/nako_lex_rules.mjs +0 -1
- package/core/src/nako_lex_rules.mts +8 -8
- package/core/src/nako_lexer.mjs +0 -1
- package/core/src/nako_lexer.mts +23 -23
- package/core/src/nako_logger.mjs +1 -1
- package/core/src/nako_logger.mts +38 -38
- package/core/src/nako_parser3.mjs +4 -5
- package/core/src/nako_parser3.mts +79 -79
- package/core/src/nako_parser_base.mjs +1 -1
- package/core/src/nako_parser_base.mts +68 -68
- package/core/src/nako_parser_const.mjs +0 -1
- package/core/src/nako_parser_const.mts +1 -1
- package/core/src/nako_prepare.mts +12 -12
- package/core/src/nako_source_mapping.mts +9 -9
- package/core/src/nako_token.mjs +0 -1
- package/core/src/nako_token.mts +2 -2
- package/core/src/nako_tools.mjs +0 -1
- package/core/src/nako_tools.mts +4 -4
- package/core/src/nako_types.mjs +0 -1
- package/core/src/nako_types.mts +3 -3
- package/core/src/plugin_api.mjs +0 -1
- package/core/src/plugin_api.mts +1 -1
- package/core/src/plugin_csv.mjs +0 -1
- package/core/src/plugin_csv.mts +7 -7
- package/core/src/plugin_math.mjs +0 -1
- package/core/src/plugin_math.mts +39 -40
- package/core/src/plugin_promise.mjs +1 -1
- package/core/src/plugin_promise.mts +9 -9
- package/core/src/plugin_system.mjs +1 -10
- package/core/src/plugin_system.mts +319 -321
- package/core/src/plugin_test.mjs +0 -2
- package/core/src/plugin_test.mts +6 -6
- package/core/src/plugin_toml.mjs +1 -1
- package/core/src/plugin_toml.mts +4 -4
- package/core/test/flow_test.mjs +22 -0
- package/package.json +31 -34
- package/release/_hash.txt +24 -24
- package/release/_script-tags.txt +16 -16
- package/release/command_cnako3.json +1 -1
- package/release/edit_main.js +33 -21
- package/release/edit_main.js.map +4 -4
- package/release/editor.js +33 -21
- package/release/plugin_keigo.js.map +2 -2
- package/release/plugin_turtle.js.map +2 -2
- package/release/plugin_weykturtle3d.js.map +2 -2
- package/release/version.js +29 -17
- package/release/version_main.js +29 -17
- package/release/version_main.js.map +4 -4
- package/release/wnako3.js +51 -44
- package/release/wnako3.js.map +3 -3
- package/release/wnako3webworker.js +45 -38
- package/release/wnako3webworker.js.map +2 -2
- package/src/cnako3.mts +1 -1
- package/src/cnako3mod.mjs +4 -7
- package/src/cnako3mod.mts +24 -24
- package/src/commander_ja.mts +8 -8
- package/src/deno_wrapper.mjs +0 -1
- package/src/deno_wrapper.mts +5 -5
- package/src/nako_version.mjs +2 -2
- package/src/nako_version.mts +2 -2
- package/src/plugin_browser.mjs +21 -29
- package/src/plugin_browser.mts +30 -35
- package/src/plugin_browser_ajax.mts +27 -27
- package/src/plugin_browser_audio.mjs +0 -1
- package/src/plugin_browser_audio.mts +11 -11
- package/src/plugin_browser_camera.mts +8 -8
- package/src/plugin_browser_canvas.mjs +0 -2
- package/src/plugin_browser_canvas.mts +34 -34
- package/src/plugin_browser_chart.mjs +0 -1
- package/src/plugin_browser_chart.mts +13 -13
- package/src/plugin_browser_color.mts +2 -2
- package/src/plugin_browser_crypto.mts +5 -5
- package/src/plugin_browser_dialog.mts +4 -4
- package/src/plugin_browser_dom_basic.mts +42 -42
- package/src/plugin_browser_dom_event.mjs +0 -1
- package/src/plugin_browser_dom_event.mts +27 -28
- package/src/plugin_browser_dom_parts.mjs +0 -2
- package/src/plugin_browser_dom_parts.mts +31 -31
- package/src/plugin_browser_geolocation.mts +3 -3
- package/src/plugin_browser_hotkey.mts +3 -3
- package/src/plugin_browser_html.mts +4 -4
- package/src/plugin_browser_in_worker.mts +1 -1
- package/src/plugin_browser_location.mts +2 -2
- package/src/plugin_browser_speech.mts +7 -7
- package/src/plugin_browser_storage.mts +11 -11
- package/src/plugin_browser_system.mts +2 -2
- package/src/plugin_browser_websocket.mts +6 -6
- package/src/plugin_httpserver.mts +17 -17
- package/src/plugin_keigo.mts +5 -5
- package/src/plugin_node.mjs +7 -48
- package/src/plugin_node.mts +114 -145
- package/src/plugin_turtle.mts +143 -143
- package/src/plugin_weykturtle3d.mjs +0 -3
- package/src/plugin_weykturtle3d.mts +135 -135
- package/src/plugin_weykturtle3d_three.mjs +0 -1
- package/src/plugin_weykturtle3d_three.mts +1 -1
- package/src/plugin_weykturtle3d_threeutil.mts +3 -3
- package/src/wnako3.mjs +0 -1
- package/src/wnako3.mts +1 -1
- package/src/wnako3_editor.mjs +0 -2
- package/src/wnako3_editor.mts +132 -132
- package/src/wnako3mod.mjs +0 -5
- package/src/wnako3mod.mts +19 -19
package/src/plugin_turtle.mts
CHANGED
|
@@ -26,7 +26,7 @@ class NakoTurtle {
|
|
|
26
26
|
mlist: any[]
|
|
27
27
|
sys: NakoSystem
|
|
28
28
|
|
|
29
|
-
constructor
|
|
29
|
+
constructor(sys: NakoSystem, id: number) {
|
|
30
30
|
this.sys = sys
|
|
31
31
|
this.id = id
|
|
32
32
|
this.img = null
|
|
@@ -47,12 +47,12 @@ class NakoTurtle {
|
|
|
47
47
|
this.mlist = []
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
clear
|
|
50
|
+
clear() {
|
|
51
51
|
this.mlist = [] // ジョブをクリア
|
|
52
52
|
document.body.removeChild(this.canvas)
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
loadImage
|
|
55
|
+
loadImage(url: string, callback: any) {
|
|
56
56
|
this.canvas = document.createElement('canvas')
|
|
57
57
|
this.ctx = this.canvas.getContext('2d')
|
|
58
58
|
this.canvas.id = this.id
|
|
@@ -91,9 +91,9 @@ class NakoTurtleSystem {
|
|
|
91
91
|
sys: NakoSystem
|
|
92
92
|
instanceCount: number
|
|
93
93
|
// Singleton
|
|
94
|
-
|
|
94
|
+
|
|
95
95
|
static instance: NakoTurtleSystem
|
|
96
|
-
static getInstance
|
|
96
|
+
static getInstance(sys: NakoSystem) {
|
|
97
97
|
if (NakoTurtleSystem.instance === undefined) {
|
|
98
98
|
NakoTurtleSystem.instance = new NakoTurtleSystem(sys)
|
|
99
99
|
}
|
|
@@ -102,7 +102,7 @@ class NakoTurtleSystem {
|
|
|
102
102
|
return NakoTurtleSystem.instance
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
constructor
|
|
105
|
+
constructor(sys: NakoSystem) {
|
|
106
106
|
this.sys = sys
|
|
107
107
|
this.turtles = [] // カメの一覧
|
|
108
108
|
this.target = -1
|
|
@@ -114,7 +114,7 @@ class NakoTurtleSystem {
|
|
|
114
114
|
this.timerId = null
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
-
clearAll
|
|
117
|
+
clearAll() {
|
|
118
118
|
// console.log('カメ全消去 turtles=', this.turtles)
|
|
119
119
|
for (let i = 0; i < this.turtles.length; i++) {
|
|
120
120
|
const tt = this.turtles[i]
|
|
@@ -130,7 +130,7 @@ class NakoTurtleSystem {
|
|
|
130
130
|
this.flagSetTimer = false
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
drawTurtle
|
|
133
|
+
drawTurtle(id: number) {
|
|
134
134
|
const tt = this.turtles[id]
|
|
135
135
|
if (!tt) { return }
|
|
136
136
|
const cr = this.canvas_r
|
|
@@ -156,12 +156,12 @@ class NakoTurtleSystem {
|
|
|
156
156
|
} else { tt.ctx.drawImage(tt.img, 0, 0) }
|
|
157
157
|
}
|
|
158
158
|
|
|
159
|
-
getCur
|
|
159
|
+
getCur() {
|
|
160
160
|
if (this.turtles.length === 0) { throw Error('最初に『カメ作成』命令を呼び出してください。') }
|
|
161
161
|
return this.turtles[this.target]
|
|
162
162
|
}
|
|
163
163
|
|
|
164
|
-
setTimer
|
|
164
|
+
setTimer() {
|
|
165
165
|
// コマンド設定後、1度だけこの関数を呼び出す
|
|
166
166
|
if (this.flagSetTimer) { return }
|
|
167
167
|
this.flagSetTimer = true
|
|
@@ -173,7 +173,7 @@ class NakoTurtleSystem {
|
|
|
173
173
|
}, 1)
|
|
174
174
|
}
|
|
175
175
|
|
|
176
|
-
line
|
|
176
|
+
line(tt: NakoTurtle, x1: number, y1: number, x2: number, y2: number) {
|
|
177
177
|
/* istanbul ignore else */
|
|
178
178
|
if (tt) { if (!tt.flagDown) { return } }
|
|
179
179
|
|
|
@@ -190,13 +190,13 @@ class NakoTurtleSystem {
|
|
|
190
190
|
}
|
|
191
191
|
}
|
|
192
192
|
|
|
193
|
-
addMacro
|
|
193
|
+
addMacro(args: Array<any>) {
|
|
194
194
|
const tt: NakoTurtle = this.getCur()
|
|
195
195
|
tt.mlist.push(args)
|
|
196
196
|
this.setTimer()
|
|
197
197
|
}
|
|
198
198
|
|
|
199
|
-
doMacro
|
|
199
|
+
doMacro(tt: NakoTurtle, wait: number) {
|
|
200
200
|
if (!tt.flagLoaded && wait > 0) {
|
|
201
201
|
// console.log('[TURTLE] waiting ...')
|
|
202
202
|
return true
|
|
@@ -205,111 +205,111 @@ class NakoTurtleSystem {
|
|
|
205
205
|
const cmd = (m !== undefined) ? m[0] : ''
|
|
206
206
|
// console.log('@@@doMacro', cmd, m, tt.x, tt.y, ': dir=', tt.dir)
|
|
207
207
|
switch (cmd) {
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
208
|
+
case 'xy':
|
|
209
|
+
// 起点を移動する
|
|
210
|
+
tt.x = m[1]
|
|
211
|
+
tt.y = m[2]
|
|
212
|
+
break
|
|
213
|
+
case 'begin':
|
|
214
|
+
// 描画を明示的に開始する
|
|
215
|
+
this.ctx.beginPath()
|
|
216
|
+
this.ctx.moveTo(tt.x, tt.y)
|
|
217
|
+
tt.flagBegeinPath = true
|
|
218
|
+
break
|
|
219
|
+
case 'close':
|
|
220
|
+
// パスを閉じる
|
|
221
|
+
this.ctx.closePath()
|
|
222
|
+
tt.flagBegeinPath = false
|
|
223
|
+
break
|
|
224
|
+
case 'fill':
|
|
225
|
+
if (tt.flagBegeinPath) {
|
|
221
226
|
this.ctx.closePath()
|
|
222
227
|
tt.flagBegeinPath = false
|
|
223
|
-
break
|
|
224
|
-
case 'fill':
|
|
225
|
-
if (tt.flagBegeinPath) {
|
|
226
|
-
this.ctx.closePath()
|
|
227
|
-
tt.flagBegeinPath = false
|
|
228
|
-
}
|
|
229
|
-
this.ctx.fill()
|
|
230
|
-
break
|
|
231
|
-
case 'stroke':
|
|
232
|
-
if (tt.flagBegeinPath) {
|
|
233
|
-
this.ctx.closePath()
|
|
234
|
-
tt.flagBegeinPath = false
|
|
235
|
-
}
|
|
236
|
-
this.ctx.stroke()
|
|
237
|
-
break
|
|
238
|
-
case 'text':
|
|
239
|
-
this.ctx.fillText(m[1], tt.x, tt.y)
|
|
240
|
-
break
|
|
241
|
-
case 'textset':
|
|
242
|
-
this.ctx.font = m[1]
|
|
243
|
-
break
|
|
244
|
-
case 'fillStyle':
|
|
245
|
-
this.ctx.fillStyle = m[1]
|
|
246
|
-
break
|
|
247
|
-
case 'mv': {
|
|
248
|
-
// 線を引く
|
|
249
|
-
this.line(tt, tt.x, tt.y, m[1], m[2])
|
|
250
|
-
// カメの角度を変更
|
|
251
|
-
const mvRad = Math.atan2(m[2] - tt.y, m[1] - tt.x)
|
|
252
|
-
tt.dir = mvRad * 57.29577951308232
|
|
253
|
-
tt.f_update = true
|
|
254
|
-
// 実際に位置を移動
|
|
255
|
-
tt.x = m[1]
|
|
256
|
-
tt.y = m[2]
|
|
257
|
-
break
|
|
258
228
|
}
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
tt.x = x2
|
|
266
|
-
tt.y = y2
|
|
267
|
-
// console.log('@@@fd', m, tt.x, tt.y, ': dir=', tt.dir)
|
|
268
|
-
break
|
|
269
|
-
}
|
|
270
|
-
case 'angle': {
|
|
271
|
-
const angle = m[1]
|
|
272
|
-
tt.dir = ((angle - 90 + 360) % 360)
|
|
273
|
-
tt.f_update = true
|
|
274
|
-
break
|
|
275
|
-
}
|
|
276
|
-
case 'rotr': {
|
|
277
|
-
const rv = m[1]
|
|
278
|
-
tt.dir = (tt.dir + rv) % 360
|
|
279
|
-
tt.f_update = true
|
|
280
|
-
break
|
|
281
|
-
}
|
|
282
|
-
case 'rotl': {
|
|
283
|
-
const lv = m[1]
|
|
284
|
-
tt.dir = (tt.dir - lv + 360) % 360
|
|
285
|
-
tt.f_update = true
|
|
286
|
-
break
|
|
229
|
+
this.ctx.fill()
|
|
230
|
+
break
|
|
231
|
+
case 'stroke':
|
|
232
|
+
if (tt.flagBegeinPath) {
|
|
233
|
+
this.ctx.closePath()
|
|
234
|
+
tt.flagBegeinPath = false
|
|
287
235
|
}
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
236
|
+
this.ctx.stroke()
|
|
237
|
+
break
|
|
238
|
+
case 'text':
|
|
239
|
+
this.ctx.fillText(m[1], tt.x, tt.y)
|
|
240
|
+
break
|
|
241
|
+
case 'textset':
|
|
242
|
+
this.ctx.font = m[1]
|
|
243
|
+
break
|
|
244
|
+
case 'fillStyle':
|
|
245
|
+
this.ctx.fillStyle = m[1]
|
|
246
|
+
break
|
|
247
|
+
case 'mv': {
|
|
248
|
+
// 線を引く
|
|
249
|
+
this.line(tt, tt.x, tt.y, m[1], m[2])
|
|
250
|
+
// カメの角度を変更
|
|
251
|
+
const mvRad = Math.atan2(m[2] - tt.y, m[1] - tt.x)
|
|
252
|
+
tt.dir = mvRad * 57.29577951308232
|
|
253
|
+
tt.f_update = true
|
|
254
|
+
// 実際に位置を移動
|
|
255
|
+
tt.x = m[1]
|
|
256
|
+
tt.y = m[2]
|
|
257
|
+
break
|
|
258
|
+
}
|
|
259
|
+
case 'fd': {
|
|
260
|
+
const fdv = m[1] * m[2]
|
|
261
|
+
const rad = tt.dir * 0.017453292519943295
|
|
262
|
+
const x2 = tt.x + Math.cos(rad) * fdv
|
|
263
|
+
const y2 = tt.y + Math.sin(rad) * fdv
|
|
264
|
+
this.line(tt, tt.x, tt.y, x2, y2)
|
|
265
|
+
tt.x = x2
|
|
266
|
+
tt.y = y2
|
|
267
|
+
// console.log('@@@fd', m, tt.x, tt.y, ': dir=', tt.dir)
|
|
268
|
+
break
|
|
269
|
+
}
|
|
270
|
+
case 'angle': {
|
|
271
|
+
const angle = m[1]
|
|
272
|
+
tt.dir = ((angle - 90 + 360) % 360)
|
|
273
|
+
tt.f_update = true
|
|
274
|
+
break
|
|
275
|
+
}
|
|
276
|
+
case 'rotr': {
|
|
277
|
+
const rv = m[1]
|
|
278
|
+
tt.dir = (tt.dir + rv) % 360
|
|
279
|
+
tt.f_update = true
|
|
280
|
+
break
|
|
281
|
+
}
|
|
282
|
+
case 'rotl': {
|
|
283
|
+
const lv = m[1]
|
|
284
|
+
tt.dir = (tt.dir - lv + 360) % 360
|
|
285
|
+
tt.f_update = true
|
|
286
|
+
break
|
|
287
|
+
}
|
|
288
|
+
case 'color':
|
|
289
|
+
tt.color = m[1]
|
|
290
|
+
this.ctx.strokeStyle = tt.color
|
|
291
|
+
break
|
|
292
|
+
case 'size':
|
|
293
|
+
tt.lineWidth = m[1]
|
|
294
|
+
this.ctx.lineWidth = tt.lineWidth
|
|
295
|
+
break
|
|
296
|
+
case 'penOn':
|
|
297
|
+
tt.flagDown = m[1]
|
|
298
|
+
break
|
|
299
|
+
case 'visible':
|
|
300
|
+
tt.f_visible = m[1]
|
|
301
|
+
tt.f_update = true
|
|
302
|
+
break
|
|
303
|
+
case 'changeImage':
|
|
304
|
+
tt.flagLoaded = false
|
|
305
|
+
tt.img.src = m[1]
|
|
306
|
+
break
|
|
307
307
|
}
|
|
308
308
|
if (tt.flagLoaded) { this.drawTurtle(tt.id) }
|
|
309
309
|
return (tt.mlist.length > 0)
|
|
310
310
|
}
|
|
311
311
|
|
|
312
|
-
doMacroAll
|
|
312
|
+
doMacroAll(wait: number) {
|
|
313
313
|
let hasNext = false
|
|
314
314
|
for (let i = 0; i < this.turtles.length; i++) {
|
|
315
315
|
const tt = this.turtles[i]
|
|
@@ -318,7 +318,7 @@ class NakoTurtleSystem {
|
|
|
318
318
|
return hasNext
|
|
319
319
|
}
|
|
320
320
|
|
|
321
|
-
play
|
|
321
|
+
play() {
|
|
322
322
|
const wait = this.sys.__getSysVar('カメ速度')
|
|
323
323
|
let hasNext = this.doMacroAll(wait)
|
|
324
324
|
if (wait <= 0) {
|
|
@@ -334,7 +334,7 @@ class NakoTurtleSystem {
|
|
|
334
334
|
this.flagSetTimer = false
|
|
335
335
|
}
|
|
336
336
|
|
|
337
|
-
setupCanvas
|
|
337
|
+
setupCanvas() {
|
|
338
338
|
// 描画先をセットする
|
|
339
339
|
let canvasId = this.sys.__getSysVar('カメ描画先')
|
|
340
340
|
if (typeof canvasId === 'string') {
|
|
@@ -354,7 +354,7 @@ class NakoTurtleSystem {
|
|
|
354
354
|
this.resizeCanvas()
|
|
355
355
|
}
|
|
356
356
|
|
|
357
|
-
resizeCanvas
|
|
357
|
+
resizeCanvas() {
|
|
358
358
|
const cv = this.canvas
|
|
359
359
|
const rect = cv.getBoundingClientRect()
|
|
360
360
|
const rx = rect.left + window.scrollX
|
|
@@ -367,7 +367,7 @@ class NakoTurtleSystem {
|
|
|
367
367
|
}
|
|
368
368
|
}
|
|
369
369
|
|
|
370
|
-
createTurtle
|
|
370
|
+
createTurtle(imageUrl: string) {
|
|
371
371
|
// キャンバス情報は毎回参照する (#734)
|
|
372
372
|
this.setupCanvas()
|
|
373
373
|
// カメの情報をリストに追加
|
|
@@ -403,7 +403,7 @@ const PluginTurtle = {
|
|
|
403
403
|
type: 'func',
|
|
404
404
|
josi: [],
|
|
405
405
|
pure: true,
|
|
406
|
-
fn: function
|
|
406
|
+
fn: function(sys: NakoSystem) {
|
|
407
407
|
const turtleSystem: NakoTurtleSystem = NakoTurtleSystem.getInstance(sys)
|
|
408
408
|
sys.tags.turtles = turtleSystem
|
|
409
409
|
}
|
|
@@ -413,7 +413,7 @@ const PluginTurtle = {
|
|
|
413
413
|
type: 'func',
|
|
414
414
|
josi: [],
|
|
415
415
|
pure: true,
|
|
416
|
-
fn: function
|
|
416
|
+
fn: function(sys: NakoSystem) {
|
|
417
417
|
// console.log('tutle::!クリア')
|
|
418
418
|
sys.tags.turtles.clearAll()
|
|
419
419
|
}
|
|
@@ -424,7 +424,7 @@ const PluginTurtle = {
|
|
|
424
424
|
type: 'func',
|
|
425
425
|
josi: [],
|
|
426
426
|
pure: true,
|
|
427
|
-
fn: function
|
|
427
|
+
fn: function(sys: NakoSystem) {
|
|
428
428
|
const imageUrl = sys.__getSysVar('カメ画像URL')
|
|
429
429
|
return sys.tags.turtles.createTurtle(imageUrl)
|
|
430
430
|
}
|
|
@@ -433,7 +433,7 @@ const PluginTurtle = {
|
|
|
433
433
|
type: 'func',
|
|
434
434
|
josi: [],
|
|
435
435
|
pure: true,
|
|
436
|
-
fn: function
|
|
436
|
+
fn: function(sys: NakoSystem) {
|
|
437
437
|
const imageUrl = elephantImage
|
|
438
438
|
return sys.tags.turtles.createTurtle(imageUrl)
|
|
439
439
|
}
|
|
@@ -442,7 +442,7 @@ const PluginTurtle = {
|
|
|
442
442
|
type: 'func',
|
|
443
443
|
josi: [],
|
|
444
444
|
pure: true,
|
|
445
|
-
fn: function
|
|
445
|
+
fn: function(sys: NakoSystem) {
|
|
446
446
|
const imageUrl = pandaImage
|
|
447
447
|
return sys.tags.turtles.createTurtle(imageUrl)
|
|
448
448
|
}
|
|
@@ -451,7 +451,7 @@ const PluginTurtle = {
|
|
|
451
451
|
type: 'func',
|
|
452
452
|
josi: [['に', 'へ', 'の']],
|
|
453
453
|
pure: true,
|
|
454
|
-
fn: function
|
|
454
|
+
fn: function(id: number, sys: NakoSystem) {
|
|
455
455
|
sys.tags.turtles.target = id
|
|
456
456
|
},
|
|
457
457
|
return_none: true
|
|
@@ -462,7 +462,7 @@ const PluginTurtle = {
|
|
|
462
462
|
type: 'func',
|
|
463
463
|
josi: [['に', 'へ']],
|
|
464
464
|
pure: true,
|
|
465
|
-
fn: function
|
|
465
|
+
fn: function(url: string, sys: NakoSystem) {
|
|
466
466
|
const turtles: NakoTurtleSystem = sys.tags.turtles
|
|
467
467
|
turtles.addMacro(['changeImage', url])
|
|
468
468
|
},
|
|
@@ -473,7 +473,7 @@ const PluginTurtle = {
|
|
|
473
473
|
type: 'func',
|
|
474
474
|
josi: [['に', 'へ']],
|
|
475
475
|
pure: true,
|
|
476
|
-
fn: function
|
|
476
|
+
fn: function(v: number, sys: NakoSystem) {
|
|
477
477
|
sys.__setSysVar('カメ速度', v)
|
|
478
478
|
}
|
|
479
479
|
},
|
|
@@ -481,7 +481,7 @@ const PluginTurtle = {
|
|
|
481
481
|
type: 'func',
|
|
482
482
|
josi: [['に', 'へ']],
|
|
483
483
|
pure: true,
|
|
484
|
-
fn: function
|
|
484
|
+
fn: function(xy: number[], sys: NakoSystem) {
|
|
485
485
|
const turtles: NakoTurtleSystem = sys.tags.turtles
|
|
486
486
|
turtles.addMacro(['mv', xy[0], xy[1]])
|
|
487
487
|
},
|
|
@@ -491,7 +491,7 @@ const PluginTurtle = {
|
|
|
491
491
|
type: 'func',
|
|
492
492
|
josi: [['に', 'へ']],
|
|
493
493
|
pure: true,
|
|
494
|
-
fn: function
|
|
494
|
+
fn: function(xy: number[], sys: NakoSystem) {
|
|
495
495
|
const turtles: NakoTurtleSystem = sys.tags.turtles
|
|
496
496
|
turtles.addMacro(['xy', xy[0], xy[1]])
|
|
497
497
|
},
|
|
@@ -501,7 +501,7 @@ const PluginTurtle = {
|
|
|
501
501
|
type: 'func',
|
|
502
502
|
josi: [['だけ']],
|
|
503
503
|
pure: true,
|
|
504
|
-
fn: function
|
|
504
|
+
fn: function(v: number, sys: NakoSystem) {
|
|
505
505
|
const turtles: NakoTurtleSystem = sys.tags.turtles
|
|
506
506
|
turtles.addMacro(['fd', v, 1])
|
|
507
507
|
},
|
|
@@ -511,7 +511,7 @@ const PluginTurtle = {
|
|
|
511
511
|
type: 'func',
|
|
512
512
|
josi: [['だけ']],
|
|
513
513
|
pure: true,
|
|
514
|
-
fn: function
|
|
514
|
+
fn: function(v: number, sys: NakoSystem) {
|
|
515
515
|
const turtles: NakoTurtleSystem = sys.tags.turtles
|
|
516
516
|
turtles.addMacro(['fd', v, -1])
|
|
517
517
|
},
|
|
@@ -521,7 +521,7 @@ const PluginTurtle = {
|
|
|
521
521
|
type: 'func',
|
|
522
522
|
josi: [['に', 'へ', 'の']],
|
|
523
523
|
pure: true,
|
|
524
|
-
fn: function
|
|
524
|
+
fn: function(v: number, sys: NakoSystem) {
|
|
525
525
|
const turtles: NakoTurtleSystem = sys.tags.turtles
|
|
526
526
|
turtles.addMacro(['angle', v])
|
|
527
527
|
},
|
|
@@ -531,7 +531,7 @@ const PluginTurtle = {
|
|
|
531
531
|
type: 'func',
|
|
532
532
|
josi: [['だけ']],
|
|
533
533
|
pure: true,
|
|
534
|
-
fn: function
|
|
534
|
+
fn: function(v: number, sys: NakoSystem) {
|
|
535
535
|
const turtles: NakoTurtleSystem = sys.tags.turtles
|
|
536
536
|
turtles.addMacro(['rotr', v])
|
|
537
537
|
},
|
|
@@ -541,7 +541,7 @@ const PluginTurtle = {
|
|
|
541
541
|
type: 'func',
|
|
542
542
|
josi: [['だけ']],
|
|
543
543
|
pure: true,
|
|
544
|
-
fn: function
|
|
544
|
+
fn: function(v: number, sys: NakoSystem) {
|
|
545
545
|
const turtles: NakoTurtleSystem = sys.tags.turtles
|
|
546
546
|
turtles.addMacro(['rotl', v])
|
|
547
547
|
},
|
|
@@ -551,7 +551,7 @@ const PluginTurtle = {
|
|
|
551
551
|
type: 'func',
|
|
552
552
|
josi: [['に', 'へ']],
|
|
553
553
|
pure: true,
|
|
554
|
-
fn: function
|
|
554
|
+
fn: function(c: string, sys: NakoSystem) {
|
|
555
555
|
const turtles: NakoTurtleSystem = sys.tags.turtles
|
|
556
556
|
turtles.addMacro(['color', c])
|
|
557
557
|
},
|
|
@@ -561,7 +561,7 @@ const PluginTurtle = {
|
|
|
561
561
|
type: 'func',
|
|
562
562
|
josi: [['に', 'へ']],
|
|
563
563
|
pure: true,
|
|
564
|
-
fn: function
|
|
564
|
+
fn: function(w: string, sys: NakoSystem) {
|
|
565
565
|
const turtles: NakoTurtleSystem = sys.tags.turtles
|
|
566
566
|
turtles.addMacro(['size', w])
|
|
567
567
|
}
|
|
@@ -570,7 +570,7 @@ const PluginTurtle = {
|
|
|
570
570
|
type: 'func',
|
|
571
571
|
josi: [['に', 'へ']],
|
|
572
572
|
pure: true,
|
|
573
|
-
fn: function
|
|
573
|
+
fn: function(w: string, sys: NakoSystem) {
|
|
574
574
|
const turtles: NakoTurtleSystem = sys.tags.turtles
|
|
575
575
|
turtles.addMacro(['penOn', w])
|
|
576
576
|
}
|
|
@@ -579,7 +579,7 @@ const PluginTurtle = {
|
|
|
579
579
|
type: 'func',
|
|
580
580
|
josi: [],
|
|
581
581
|
pure: true,
|
|
582
|
-
fn: function
|
|
582
|
+
fn: function(sys: NakoSystem) {
|
|
583
583
|
const turtles: NakoTurtleSystem = sys.tags.turtles
|
|
584
584
|
turtles.addMacro(['begin'])
|
|
585
585
|
}
|
|
@@ -588,7 +588,7 @@ const PluginTurtle = {
|
|
|
588
588
|
type: 'func',
|
|
589
589
|
josi: [],
|
|
590
590
|
pure: true,
|
|
591
|
-
fn: function
|
|
591
|
+
fn: function(sys: NakoSystem) {
|
|
592
592
|
const turtles: NakoTurtleSystem = sys.tags.turtles
|
|
593
593
|
turtles.addMacro(['close'])
|
|
594
594
|
}
|
|
@@ -597,7 +597,7 @@ const PluginTurtle = {
|
|
|
597
597
|
type: 'func',
|
|
598
598
|
josi: [],
|
|
599
599
|
pure: true,
|
|
600
|
-
fn: function
|
|
600
|
+
fn: function(sys: NakoSystem) {
|
|
601
601
|
const turtles: NakoTurtleSystem = sys.tags.turtles
|
|
602
602
|
turtles.addMacro(['stroke'])
|
|
603
603
|
}
|
|
@@ -606,7 +606,7 @@ const PluginTurtle = {
|
|
|
606
606
|
type: 'func',
|
|
607
607
|
josi: [],
|
|
608
608
|
pure: true,
|
|
609
|
-
fn: function
|
|
609
|
+
fn: function(sys: NakoSystem) {
|
|
610
610
|
const turtles: NakoTurtleSystem = sys.tags.turtles
|
|
611
611
|
turtles.addMacro(['fill'])
|
|
612
612
|
}
|
|
@@ -615,7 +615,7 @@ const PluginTurtle = {
|
|
|
615
615
|
type: 'func',
|
|
616
616
|
josi: [['を', 'と', 'の']],
|
|
617
617
|
pure: true,
|
|
618
|
-
fn: function
|
|
618
|
+
fn: function(s: string, sys: NakoSystem) {
|
|
619
619
|
const turtles: NakoTurtleSystem = sys.tags.turtles
|
|
620
620
|
turtles.addMacro(['text', s])
|
|
621
621
|
}
|
|
@@ -624,7 +624,7 @@ const PluginTurtle = {
|
|
|
624
624
|
type: 'func',
|
|
625
625
|
josi: [['に', 'へ', 'で']],
|
|
626
626
|
pure: true,
|
|
627
|
-
fn: function
|
|
627
|
+
fn: function(s: string, sys: NakoSystem) {
|
|
628
628
|
s = '' + s // 文字列に
|
|
629
629
|
if (s.match(/^\d+$/)) {
|
|
630
630
|
s = s + 'px serif'
|
|
@@ -639,7 +639,7 @@ const PluginTurtle = {
|
|
|
639
639
|
type: 'func',
|
|
640
640
|
josi: [['に', 'へ']],
|
|
641
641
|
pure: true,
|
|
642
|
-
fn: function
|
|
642
|
+
fn: function(c: string, sys: NakoSystem) {
|
|
643
643
|
const turtles: NakoTurtleSystem = sys.tags.turtles
|
|
644
644
|
turtles.addMacro(['fillStyle', c])
|
|
645
645
|
},
|
|
@@ -649,7 +649,7 @@ const PluginTurtle = {
|
|
|
649
649
|
type: 'func',
|
|
650
650
|
josi: [],
|
|
651
651
|
pure: true,
|
|
652
|
-
fn: function
|
|
652
|
+
fn: function(sys: NakoSystem) {
|
|
653
653
|
sys.tags.turtles.clearAll()
|
|
654
654
|
},
|
|
655
655
|
return_none: true
|
|
@@ -658,7 +658,7 @@ const PluginTurtle = {
|
|
|
658
658
|
type: 'func',
|
|
659
659
|
josi: [['の', 'を']],
|
|
660
660
|
pure: true,
|
|
661
|
-
fn: function
|
|
661
|
+
fn: function(cmd: string, sys: NakoSystem) {
|
|
662
662
|
const turtles: NakoTurtleSystem = sys.tags.turtles
|
|
663
663
|
const a = cmd.split(/(\n|;)/)
|
|
664
664
|
for (let i = 0; i < a.length; i++) {
|
|
@@ -675,7 +675,7 @@ const PluginTurtle = {
|
|
|
675
675
|
type: 'func',
|
|
676
676
|
josi: [],
|
|
677
677
|
pure: true,
|
|
678
|
-
fn: function
|
|
678
|
+
fn: function(sys: NakoSystem) {
|
|
679
679
|
const turtles: NakoTurtleSystem = sys.tags.turtles
|
|
680
680
|
turtles.addMacro(['visible', false])
|
|
681
681
|
},
|
|
@@ -685,7 +685,7 @@ const PluginTurtle = {
|
|
|
685
685
|
type: 'func',
|
|
686
686
|
josi: [],
|
|
687
687
|
pure: true,
|
|
688
|
-
fn: function
|
|
688
|
+
fn: function(sys: NakoSystem) {
|
|
689
689
|
const turtles: NakoTurtleSystem = sys.tags.turtles
|
|
690
690
|
turtles.addMacro(['visible', true])
|
|
691
691
|
},
|
|
@@ -695,7 +695,7 @@ const PluginTurtle = {
|
|
|
695
695
|
type: 'func',
|
|
696
696
|
josi: [['を']],
|
|
697
697
|
pure: false,
|
|
698
|
-
fn: function
|
|
698
|
+
fn: function(func: NakoCallback, sys: NakoSystem) {
|
|
699
699
|
func = sys.__findVar(func, null) // 文字列指定なら関数に変換
|
|
700
700
|
if (typeof func !== 'function') { return }
|
|
701
701
|
const tid = sys.tags.turtles.target
|
|
@@ -313,7 +313,6 @@ class Turtle3D extends TypedTurtle3DEventTarget {
|
|
|
313
313
|
else if (m instanceof CommandAngle) {
|
|
314
314
|
const euler = new this.three.Euler();
|
|
315
315
|
euler.fromArray(m.angle);
|
|
316
|
-
// eslint-disable-next-line no-unused-vars
|
|
317
316
|
const dir = new this.three.Quaternion();
|
|
318
317
|
this.obj.quaternion.setFromEuler(euler);
|
|
319
318
|
}
|
|
@@ -632,7 +631,6 @@ class WeykTurtle3DSystem {
|
|
|
632
631
|
renderer.setClearColor(0x000000, 1.0);
|
|
633
632
|
renderer.autoClear = false;
|
|
634
633
|
const scene = this.getScene();
|
|
635
|
-
// eslint-disable-next-line no-unused-vars
|
|
636
634
|
const camera = this.getCamera();
|
|
637
635
|
if (scene && this._lines) {
|
|
638
636
|
scene.add(this._lines);
|
|
@@ -715,7 +713,6 @@ class WeykTurtle3DSystem {
|
|
|
715
713
|
}
|
|
716
714
|
const renderer = this.getRenderer();
|
|
717
715
|
const camera = this.getCamera();
|
|
718
|
-
// eslint-disable-next-line new-cap
|
|
719
716
|
const controls = new controlConstrucor(camera, renderer.domElement);
|
|
720
717
|
controls.enabled = true;
|
|
721
718
|
this._controls = controls;
|