ruby-miyako 2.1.0 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README +275 -20
- data/extern.h +21 -1
- data/install_miyako.rb +5 -3
- data/lib/Miyako/API/audio.rb +11 -6
- data/lib/Miyako/API/basic_data.rb +0 -985
- data/lib/Miyako/API/bitmap.rb +19 -22
- data/lib/Miyako/API/choices.rb +203 -69
- data/lib/Miyako/API/collision.rb +451 -9
- data/lib/Miyako/API/color.rb +177 -0
- data/lib/Miyako/API/diagram.rb +18 -20
- data/lib/Miyako/API/fixedmap.rb +207 -73
- data/lib/Miyako/API/font.rb +111 -18
- data/lib/Miyako/API/i_yuki.rb +1201 -0
- data/lib/Miyako/API/input.rb +65 -0
- data/lib/Miyako/API/layout.rb +41 -29
- data/lib/Miyako/API/map.rb +202 -157
- data/lib/Miyako/API/map_event.rb +86 -19
- data/lib/Miyako/API/map_struct.rb +268 -0
- data/lib/Miyako/API/modules.rb +136 -37
- data/lib/Miyako/API/movie.rb +8 -8
- data/lib/Miyako/API/parts.rb +63 -20
- data/lib/Miyako/API/plane.rb +4 -4
- data/lib/Miyako/API/screen.rb +16 -8
- data/lib/Miyako/API/sprite.rb +290 -23
- data/lib/Miyako/API/sprite_animation.rb +23 -11
- data/lib/Miyako/API/sprite_list.rb +406 -183
- data/lib/Miyako/API/story.rb +4 -65
- data/lib/Miyako/API/struct_point.rb +157 -0
- data/lib/Miyako/API/struct_rect.rb +233 -0
- data/lib/Miyako/API/struct_segment.rb +641 -0
- data/lib/Miyako/API/struct_size.rb +158 -0
- data/lib/Miyako/API/struct_square.rb +253 -0
- data/lib/Miyako/API/textbox.rb +49 -35
- data/lib/Miyako/API/viewport.rb +5 -5
- data/lib/Miyako/API/wait_counter.rb +350 -0
- data/lib/Miyako/API/yuki.rb +95 -60
- data/lib/Miyako/EXT/raster_scroll.rb +30 -8
- data/lib/Miyako/EXT/slides.rb +6 -6
- data/lib/Miyako/miyako.rb +25 -11
- data/lib/miyako.rb +28 -0
- data/lib/miyako_require_only.rb +35 -0
- data/miyako_basicdata.c +201 -17
- data/miyako_collision.c +315 -6
- data/miyako_diagram.c +331 -0
- data/miyako_drawing.c +26 -7
- data/miyako_font.c +259 -129
- data/miyako_input_audio.c +24 -14
- data/miyako_layout.c +106 -8
- data/miyako_no_katana.c +398 -171
- data/miyako_sprite2.c +275 -38
- data/miyako_transform.c +113 -107
- data/miyako_utility.c +34 -48
- data/miyako_yuki.c +241 -0
- data/sample/Diagram_sample/diagram_sample_yuki2.rb +30 -30
- data/sample/Room3/blue.rb +19 -19
- data/sample/Room3/green.rb +9 -9
- data/sample/Room3/main.rb +12 -12
- data/sample/Room3/red.rb +12 -12
- data/sample/Room3/title.rb +15 -10
- data/sample/collision_test2.rb +2 -1
- data/sample/fixed_map_test/fixed_map_sample.rb +7 -6
- data/sample/map_test/main_scene.rb +12 -10
- data/sample/map_test/map_manager.rb +14 -13
- data/sample/rasterscroll.rb +5 -5
- data/sample/takahashi.rb +3 -3
- data/sample/textbox_sample.rb +7 -6
- data/sample/transform.rb +2 -1
- data/uninstall_miyako.rb +4 -1
- data/win/miyako_no_katana.so +0 -0
- metadata +15 -4
- data/lib/Miyako/EXT/miyako_cairo.rb +0 -62
- data/sample/cairo_sample.rb +0 -25
data/lib/Miyako/API/input.rb
CHANGED
@@ -70,6 +70,10 @@ module Miyako
|
|
70
70
|
@@num2bsym = [:btn1, :btn2, :btn3, :btn4, :btn5, :btn6,
|
71
71
|
:btn7, :btn8, :btn9, :btn10, :btn11, :btn12]
|
72
72
|
|
73
|
+
@@enable_keyboard = true
|
74
|
+
@@enable_joypad = true
|
75
|
+
@@enable_mouse = true
|
76
|
+
|
73
77
|
def Input::create_btns #:nodoc:
|
74
78
|
return {:btn1 => 0, :btn2 => 0, :btn3 => 0,
|
75
79
|
:btn4 => 0, :btn5 => 0, :btn6 => 0,
|
@@ -116,21 +120,69 @@ module Miyako
|
|
116
120
|
@@initialized = true
|
117
121
|
end
|
118
122
|
|
123
|
+
#===キーボードを使用可能にする
|
124
|
+
def Input.keyboard_enable
|
125
|
+
@@enable_keyboard = true
|
126
|
+
end
|
127
|
+
|
128
|
+
#===キーボードを使用不可にする
|
129
|
+
def Input.keyboard_disable
|
130
|
+
@@enable_keyboard = false
|
131
|
+
end
|
132
|
+
|
133
|
+
#===キーボードを使用可能かどうか問い合わせる
|
134
|
+
def Input.keyboad_enable?
|
135
|
+
@@enable_keyboard
|
136
|
+
end
|
137
|
+
|
138
|
+
#===ゲームパッドを使用可能にする
|
139
|
+
def Input.joypad_enable
|
140
|
+
@@enable_joypad= true
|
141
|
+
end
|
142
|
+
|
143
|
+
#===ゲームパッドを使用不可にする
|
144
|
+
def Input.joypad_disable
|
145
|
+
@@enable_joypad = false
|
146
|
+
end
|
147
|
+
|
148
|
+
#===ゲームパッドを使用可能かどうか問い合わせる
|
149
|
+
def Input.joypad_enable?
|
150
|
+
@@enable_joypad
|
151
|
+
end
|
152
|
+
|
153
|
+
#===マウスを使用可能にする
|
154
|
+
def Input.mouse_enable
|
155
|
+
@@enable_mouse = true
|
156
|
+
end
|
157
|
+
|
158
|
+
#===マウスを使用不可にする
|
159
|
+
def Input.mouse_disable
|
160
|
+
@@enable_mouse = false
|
161
|
+
end
|
162
|
+
|
163
|
+
#===マウスを使用可能かどうか問い合わせる
|
164
|
+
def Input.mouse_enable?
|
165
|
+
@@enable_mouse
|
166
|
+
end
|
167
|
+
|
119
168
|
def Input::process_quit(e) #:nodoc:
|
120
169
|
@@quit = true
|
121
170
|
end
|
122
171
|
|
123
172
|
def Input::process_keydown(e) #:nodoc:
|
173
|
+
return unless @@enable_keyboard
|
124
174
|
set_btn(@@btn2sym[e.sym]) if @@btn2sym.include?(e.sym)
|
125
175
|
@@mods.each{|m| set_btn(@@btn2sym[m]) if e.mod & m == m}
|
126
176
|
end
|
127
177
|
|
128
178
|
def Input::process_keyup(e) #:nodoc:
|
179
|
+
return unless @@enable_keyboard
|
129
180
|
reset_btn(@@btn2sym[e.sym]) if @@btn2sym.include?(e.sym)
|
130
181
|
@@mods.each{|m| reset_btn(@@btn2sym[m]) if e.mod & m == m}
|
131
182
|
end
|
132
183
|
|
133
184
|
def Input::process_joyaxis(e) #:nodoc:
|
185
|
+
return unless @@enable_joypad
|
134
186
|
if e.axis == 0
|
135
187
|
if e.value >= 16384
|
136
188
|
set_btn(:right)
|
@@ -153,14 +205,17 @@ module Miyako
|
|
153
205
|
end
|
154
206
|
|
155
207
|
def Input::process_joybuttondown(e) #:nodoc:
|
208
|
+
return unless @@enable_joypad
|
156
209
|
set_btn(@@num2bsym[e.button]) if e.button < BTNS
|
157
210
|
end
|
158
211
|
|
159
212
|
def Input::process_joybuttonup(e) #:nodoc:
|
213
|
+
return unless @@enable_joypad
|
160
214
|
reset_btn(@@num2bsym[e.button]) if e.button < BTNS
|
161
215
|
end
|
162
216
|
|
163
217
|
def Input::process_mousemotion(e) #:nodoc:
|
218
|
+
return unless @@enable_mouse
|
164
219
|
@@mouse[:pos][:x] = e.x
|
165
220
|
@@mouse[:pos][:y] = e.y
|
166
221
|
@@mouse[:pos][:dx] = e.xrel
|
@@ -168,6 +223,7 @@ module Miyako
|
|
168
223
|
end
|
169
224
|
|
170
225
|
def Input::process_mousebuttondown(e) #:nodoc:
|
226
|
+
return unless @@enable_mouse
|
171
227
|
set_mouse_button(:trigger, e.button)
|
172
228
|
return unless @@mouse[:inner]
|
173
229
|
click_mouse_button(:click, e.button)
|
@@ -178,6 +234,7 @@ module Miyako
|
|
178
234
|
end
|
179
235
|
|
180
236
|
def Input::process_mousebuttonup(e) #:nodoc:
|
237
|
+
return unless @@enable_mouse
|
181
238
|
reset_mouse_button(:trigger, e.button)
|
182
239
|
click_interval = SDL.getTicks - @@click_start_tick
|
183
240
|
if click_interval < @@mouse[:click][:interval]
|
@@ -192,6 +249,7 @@ module Miyako
|
|
192
249
|
end
|
193
250
|
|
194
251
|
def Input::process_active(e) #:nodoc:
|
252
|
+
return unless @@enable_mouse
|
195
253
|
@@mouse[:inner] = e.gain if e.state == 1
|
196
254
|
end
|
197
255
|
|
@@ -352,6 +410,7 @@ module Miyako
|
|
352
410
|
#原点は、画面領域の左上を{:x=>0,:y=>0}とする
|
353
411
|
#返却値:: マウスカーソルの位置を示すPoint構造体
|
354
412
|
def Input::get_mouse_position
|
413
|
+
return Point.new(-1,-1) unless @@enable_mouse
|
355
414
|
return Point.new(@@mouse[:pos][:x],@@mouse[:pos][:y])
|
356
415
|
end
|
357
416
|
|
@@ -360,6 +419,7 @@ module Miyako
|
|
360
419
|
#移動量は、右下方向を正とする
|
361
420
|
#返却値:: マウスカーソルの移動量を示すSize構造体
|
362
421
|
def Input::get_mouse_amount
|
422
|
+
return Size.new(0,0) unless @@enable_mouse
|
363
423
|
return Size.new(@@mouse[:pos][:dx],@@mouse[:pos][:dy])
|
364
424
|
end
|
365
425
|
|
@@ -375,6 +435,7 @@ module Miyako
|
|
375
435
|
#_btn_:: 問い合わせるボタンを示すシンボル(可変個)
|
376
436
|
#返却値:: ボタンが押されていれば true を返す
|
377
437
|
def Input::click?(btn)
|
438
|
+
return false unless @@enable_mouse
|
378
439
|
btns = (btn == :any ? [:left, :middle, :right] : [btn])
|
379
440
|
ret = btns.inject(false){|r, f| r |= @@mouse[:click][f]}
|
380
441
|
return ret
|
@@ -391,6 +452,7 @@ module Miyako
|
|
391
452
|
#_btn_:: 問い合わせるボタンを示すシンボル(可変個)
|
392
453
|
#返却値:: ボタンが押されていれば true を返す
|
393
454
|
def Input::mouse_trigger?(btn)
|
455
|
+
return false unless @@enable_mouse
|
394
456
|
return btn == :any ? (@@mouse[:trigger][:left] || @@mouse[:trigger][:middle] || @@mouse[:trigger][:right]) : @@mouse[:trigger][btn]
|
395
457
|
end
|
396
458
|
|
@@ -406,6 +468,7 @@ module Miyako
|
|
406
468
|
#_btn_:: 問い合わせるボタンを示すシンボル(可変個)
|
407
469
|
#返却値:: ドラッグアンドドロップが成功していれば、true を返す
|
408
470
|
def Input::drag_and_drop?(btn)
|
471
|
+
return false unless @@enable_mouse
|
409
472
|
return @@mouse[:drop][:succeed] && (btn == :any ? (@@mouse[:drop][:left] || @@mouse[:drop][:middle] || @@mouse[:drop][:right]) : @@mouse[:click][btn])
|
410
473
|
end
|
411
474
|
|
@@ -414,6 +477,7 @@ module Miyako
|
|
414
477
|
#{:drag_x => ドラッグが行われた x 座標, :drag_y => ドラッグが行われた y 座標, :drop_x => ドロップが行われた x 座業, :drop_y => ドロップが行われた y 座標}
|
415
478
|
#返却値:: ドラッグアンドドロップが成功していれば、移動範囲を示すハッシュ、失敗していれば nil を返す
|
416
479
|
def Input::get_drag_and_drop_range
|
480
|
+
return nil unless @@enable_mouse
|
417
481
|
return @@mouse[:drop][:succeed] ? {:drag_x => @@mouse[:drag][:x], :drag_y => @@mouse[:drag][:y], :drop_x => @@mouse[:pos][:x], :drop_y => @@mouse[:pos][:y]} : nil
|
418
482
|
end
|
419
483
|
|
@@ -434,6 +498,7 @@ module Miyako
|
|
434
498
|
#===マウスカーソルが画面の内側に有るかどうかを問い合わせる
|
435
499
|
#返却値:: マウスカーソルが画面内ならtrueを返す
|
436
500
|
def Input::mouse_cursor_inner?
|
501
|
+
return false unless @@enable_mouse
|
437
502
|
return @@mouse[:inner]
|
438
503
|
end
|
439
504
|
|
data/lib/Miyako/API/layout.rb
CHANGED
@@ -275,7 +275,7 @@ module Miyako
|
|
275
275
|
middle!
|
276
276
|
return self
|
277
277
|
end
|
278
|
-
|
278
|
+
|
279
279
|
#===mixinしたインスタンスの位置を左端(x軸)に移動させたときの位置を返す
|
280
280
|
#但し、移動したときの位置を返すだけで、自身の位置は変わらない
|
281
281
|
#基準となる空間の内側に設置されたとして算出する
|
@@ -445,27 +445,21 @@ module Miyako
|
|
445
445
|
#=== mixin されたインスタンスの位置情報(x,yの値)を取得する
|
446
446
|
#返却値:: インスタンスの位置情報(@layout[:pos]の値)
|
447
447
|
def pos
|
448
|
-
return @layout.pos
|
448
|
+
return @layout.pos
|
449
449
|
end
|
450
|
-
|
450
|
+
|
451
|
+
#alias: layout_pos: posメソッドの別名。mixinのときに、posメソッドが再定義された場合に使う
|
452
|
+
alias :layout_pos :pos
|
453
|
+
|
451
454
|
#=== mixin されたインスタンスのサイズ情報(w,hの値)を取得する
|
452
455
|
#返却値:: インスタンスのサイズ情報(@layout[:size]の値)
|
453
456
|
def size
|
454
|
-
return @layout.size
|
455
|
-
end
|
456
|
-
|
457
|
-
#=== mixin されたインスタンスの表示上の幅を取得する
|
458
|
-
#返却値:: インスタンスの幅(@layout[:size][0]の値)
|
459
|
-
def ow
|
460
|
-
return @layout.size[0]
|
461
|
-
end
|
462
|
-
|
463
|
-
#=== mixin されたインスタンスの表示上の高さを取得する
|
464
|
-
#返却値:: インスタンスの高さ(@layout[:size][0]の値)
|
465
|
-
def oh
|
466
|
-
return @layout.size[1]
|
457
|
+
return @layout.size
|
467
458
|
end
|
468
459
|
|
460
|
+
#alias: layout_size: sizeメソッドの別名。mixinのときに、sizeメソッドが再定義された場合に使う
|
461
|
+
alias :layout_size :size
|
462
|
+
|
469
463
|
#===インスタンスのサイズをレイアウト情報に反映させる
|
470
464
|
#このメソッドが呼び出されると、スナップ先のインスタンスの位置情報がリセットされることに注意
|
471
465
|
#_w_:: インスタンスの幅(たとえば、Sprite#ow の値)
|
@@ -492,6 +486,12 @@ module Miyako
|
|
492
486
|
return Rect.new(@layout.pos[0], @layout.pos[1], @layout.size[0], @layout.size[1])
|
493
487
|
end
|
494
488
|
|
489
|
+
#===領域の最大矩形を取得するメソッドのテンプレート
|
490
|
+
#返却値:: Rect構造体インスタンス(デフォルトはnil)
|
491
|
+
def broad_rect
|
492
|
+
return self.rect
|
493
|
+
end
|
494
|
+
|
495
495
|
#===インスタンスのレイアウトを指定の別のインスタンスに依存(スナップ)させる
|
496
496
|
#引数 spr で指定したインスタンスのレイアウト情報は、レシーバのレイアウト情報に依存した位置情報を算出される
|
497
497
|
#デフォルトでは、画面にスナップされている状態になっている
|
@@ -506,7 +506,7 @@ module Miyako
|
|
506
506
|
@layout.base = @layout.snap.sprite || Screen
|
507
507
|
return self
|
508
508
|
end
|
509
|
-
|
509
|
+
|
510
510
|
#===すべてのインスタンスとの依存関係を解消する
|
511
511
|
#このメソッドが呼び出されると、スナップ先のインスタンスの位置情報がリセットされることに注意
|
512
512
|
#返却値:: 自分自身を返す
|
@@ -516,24 +516,24 @@ module Miyako
|
|
516
516
|
@layout.snap.children = Array.new
|
517
517
|
return self
|
518
518
|
end
|
519
|
-
|
519
|
+
|
520
520
|
#===すでに指定したスプライトがスナップ元として登録されているかどうか確認する
|
521
521
|
#返却値:: スナップ元として登録されていればtrue、登録されていなければfalse
|
522
522
|
def include_snap_child?(spr)
|
523
523
|
@layout.snap.children.include?(spr)
|
524
524
|
return self
|
525
525
|
end
|
526
|
-
|
526
|
+
|
527
527
|
def add_snap_child(spr) #:nodoc:
|
528
528
|
@layout.snap.children << spr unless @layout.snap.children.include?(spr)
|
529
529
|
return self
|
530
530
|
end
|
531
|
-
|
531
|
+
|
532
532
|
def delete_snap_child(spr) #:nodoc:
|
533
533
|
spr.each{|s| @layout.snap.children.delete(s) }
|
534
534
|
return self
|
535
535
|
end
|
536
|
-
|
536
|
+
|
537
537
|
def get_snap_children #:nodoc:
|
538
538
|
return @layout.snap.children
|
539
539
|
end
|
@@ -572,6 +572,14 @@ module Miyako
|
|
572
572
|
def move_to!(x, y, &block)
|
573
573
|
end
|
574
574
|
|
575
|
+
#===相対座標でインスタンスを指定の位置に移動させる
|
576
|
+
#スナップ先の左上位置を[0,0]としたときの座標(相対座標)で、指定の位置に移動する
|
577
|
+
#_x_:: 移動後の x 座標の位置
|
578
|
+
#_y_:: 移動後の y 座標の位置
|
579
|
+
#返却値:: 自分自身を返す
|
580
|
+
def relative_move_to!(x, y)
|
581
|
+
end
|
582
|
+
|
575
583
|
#===インスタンスを指定の移動量で移動させた位置を返す
|
576
584
|
#引数で指定したぶん移動させたときの位置を新しくインスタンスを生成して返す
|
577
585
|
#自分自身の位置は変わらない
|
@@ -594,6 +602,17 @@ module Miyako
|
|
594
602
|
ret.move_to!(x,y)
|
595
603
|
end
|
596
604
|
|
605
|
+
#===相対座標でインスタンスを指定の位置に移動させた位置を返す
|
606
|
+
#スナップ先の左上位置を[0,0]としたときの座標(相対座標)で、指定の位置に移動したときの
|
607
|
+
#位置を新しくインスタンスを生成して返す
|
608
|
+
#_x_:: 移動後の x 座標の位置
|
609
|
+
#_y_:: 移動後の y 座標の位置
|
610
|
+
#返却値:: 更新後の位置を設定したインスタンス(Size構造体)
|
611
|
+
def relative_move_to(x, y)
|
612
|
+
bpos = @layout.base.pos
|
613
|
+
Point.new(bpos.x+x,bpos.y+y)
|
614
|
+
end
|
615
|
+
|
597
616
|
#===Segment構造体を生成する
|
598
617
|
# 生成される線分は、x方向が[pos.x,pos.x+ow-1]、y方向が[pos.y,pos.y+oh-1]となる
|
599
618
|
#返却値:: 生成したSegments構造体インスタンス
|
@@ -624,18 +643,11 @@ module Miyako
|
|
624
643
|
init_layout
|
625
644
|
set_layout_size(*(size.to_a))
|
626
645
|
end
|
627
|
-
|
646
|
+
|
628
647
|
def initialize_copy(obj) #:nodoc:
|
629
648
|
copy_layout
|
630
649
|
end
|
631
650
|
|
632
|
-
#===現在の画面の最大の大きさを矩形で取得する
|
633
|
-
#但し、LayoutSpaceの場合は最大の大きさ=スプライトの大きさなので、rectと同じ値が得られる
|
634
|
-
#返却値:: 生成された矩形(Rect構造体のインスタンス)
|
635
|
-
def broad_rect
|
636
|
-
return self.rect
|
637
|
-
end
|
638
|
-
|
639
651
|
#===インスタンスを解放させる
|
640
652
|
def dispose
|
641
653
|
layout_dispose
|