cyross-ruby-miyako 2.0.0 → 2.0.5.1.0

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.
Files changed (102) hide show
  1. data/README +106 -154
  2. data/defines.h +144 -0
  3. data/{miyako_no_katana/extconf.rb → extconf.rb} +10 -0
  4. data/extern.h +29 -0
  5. data/install_miyako.rb +26 -14
  6. data/lib/Miyako/API/audio.rb +2 -2
  7. data/lib/Miyako/API/basic_data.rb +183 -41
  8. data/lib/Miyako/API/bitmap.rb +474 -2
  9. data/lib/Miyako/API/choices.rb +215 -48
  10. data/lib/Miyako/API/collision.rb +267 -251
  11. data/lib/Miyako/API/diagram.rb +58 -70
  12. data/lib/Miyako/API/drawing.rb +93 -52
  13. data/lib/Miyako/API/fixedmap.rb +233 -120
  14. data/lib/Miyako/API/font.rb +59 -40
  15. data/lib/Miyako/API/input.rb +34 -27
  16. data/lib/Miyako/API/layout.rb +154 -172
  17. data/lib/Miyako/API/map.rb +285 -159
  18. data/lib/Miyako/API/map_event.rb +4 -4
  19. data/lib/Miyako/API/modules.rb +1 -1
  20. data/lib/Miyako/API/movie.rb +8 -5
  21. data/lib/Miyako/API/parts.rb +44 -9
  22. data/lib/Miyako/API/plane.rb +37 -2
  23. data/lib/Miyako/API/screen.rb +90 -22
  24. data/lib/Miyako/API/shape.rb +118 -37
  25. data/lib/Miyako/API/sprite.rb +475 -61
  26. data/lib/Miyako/API/sprite_animation.rb +83 -63
  27. data/lib/Miyako/API/spriteunit.rb +47 -13
  28. data/lib/Miyako/API/story.rb +123 -47
  29. data/lib/Miyako/API/textbox.rb +361 -132
  30. data/lib/Miyako/API/utility.rb +388 -0
  31. data/lib/Miyako/API/viewport.rb +54 -349
  32. data/lib/Miyako/API/yuki.rb +570 -353
  33. data/lib/Miyako/EXT/miyako_cairo.rb +5 -3
  34. data/lib/Miyako/EXT/slides.rb +22 -1
  35. data/lib/Miyako/miyako.rb +12 -13
  36. data/logo/EGSR_logo.png +0 -0
  37. data/logo/EGSR_logo_bg.png +0 -0
  38. data/logo/EGSR_logo_fg.png +0 -0
  39. data/logo/EGSR_title_banner.png +0 -0
  40. data/logo/EGSR_title_logo.png +0 -0
  41. data/logo/miyako.png +0 -0
  42. data/logo/miyako_banner.png +0 -0
  43. data/logo/space.png +0 -0
  44. data/miyako_basicdata.c +590 -0
  45. data/miyako_bitmap.c +1225 -0
  46. data/miyako_collision.c +403 -0
  47. data/miyako_drawing.c +187 -0
  48. data/miyako_font.c +334 -0
  49. data/miyako_hsv.c +830 -0
  50. data/miyako_layout.c +191 -0
  51. data/miyako_no_katana.c +1074 -0
  52. data/miyako_transform.c +438 -0
  53. data/miyako_utility.c +288 -0
  54. data/sample/Animation1/m1ku.rb +10 -31
  55. data/sample/Animation1/readme.txt +6 -6
  56. data/sample/Animation2/lex.rb +1 -0
  57. data/sample/Animation2/readme.txt +6 -6
  58. data/sample/Diagram_sample/diagram_sample_yuki2.rb +152 -48
  59. data/sample/Diagram_sample/readme.txt +9 -6
  60. data/sample/Room3/blue.rb +234 -187
  61. data/sample/Room3/ending.rb +68 -63
  62. data/sample/Room3/green.rb +159 -124
  63. data/sample/Room3/main.rb +50 -32
  64. data/sample/Room3/main_component.rb +3 -2
  65. data/sample/Room3/readme.txt +6 -6
  66. data/sample/Room3/red.rb +161 -134
  67. data/sample/Room3/room3.rb +1 -0
  68. data/sample/Room3/title.rb +75 -62
  69. data/sample/ball_action_sample.rb +204 -0
  70. data/sample/blit_rop.rb +70 -0
  71. data/sample/cairo_sample.rb +25 -0
  72. data/sample/circle_collision_test.rb +66 -0
  73. data/sample/collision_test.rb +33 -0
  74. data/sample/collision_test2.rb +108 -0
  75. data/sample/fixed_map_test/fixed_map_sample.rb +23 -32
  76. data/sample/fixed_map_test/readme.txt +38 -38
  77. data/sample/map_test/chara.rb +17 -9
  78. data/sample/map_test/main_parts.rb +30 -9
  79. data/sample/map_test/main_scene.rb +57 -41
  80. data/sample/map_test/map_manager.rb +13 -30
  81. data/sample/map_test/map_test.rb +2 -2
  82. data/sample/map_test/oasis.rb +17 -11
  83. data/sample/map_test/readme.txt +50 -48
  84. data/sample/map_test/route.rb +46 -33
  85. data/sample/map_test/town.rb +19 -13
  86. data/sample/polygon_test.rb +35 -0
  87. data/sample/rasterscroll.rb +25 -0
  88. data/sample/takahashi.rb +42 -0
  89. data/sample/text.png +0 -0
  90. data/sample/textbox_sample.rb +190 -0
  91. data/sample/transform.rb +54 -0
  92. data/sample/utility_test.rb +73 -0
  93. data/sample/utility_test2.rb +61 -0
  94. data/sample/utility_test3.rb +64 -0
  95. data/sample/utility_test4.rb +73 -0
  96. data/uninstall_miyako.rb +19 -0
  97. data/win/miyako_no_katana.so +0 -0
  98. metadata +165 -148
  99. data/miyako.png +0 -0
  100. data/miyako_banner.png +0 -0
  101. data/miyako_no_katana/miyako_no_katana.c +0 -3301
  102. data/sample/fixed_map_test/map_sample.rb +0 -121
@@ -1,24 +1,28 @@
1
+ # -*- encoding: utf-8 -*-
1
2
  #キャラクタ管理クラス
2
3
  class PChara # Player Character
3
4
  extend Forwardable
4
5
  attr_accessor :dir
5
- @@amt2dir = {[0,1]=>0,[-1,0]=>1,[1,0]=>2,[0,-1]=>3}
6
- @@amt2dir.default = -1
6
+ attr_reader :collision, :position
7
+ @@dir2dir = {[0,1]=>0,[-1,0]=>1,[1,0]=>2,[0,-1]=>3}
8
+ @@dir2dir.default = -1
7
9
 
8
- def initialize(fname, size, pw = 0.2)
9
- @size = size
10
+ def initialize(fname, pw = 0.2)
10
11
  # キャラクタスプライトを作成
11
- # コリジョンはスプライトのものを共有して使用
12
12
  @spr = Sprite.new({:filename => fname, :type => :color_key})
13
- raise MiyakoError, "Character Size is not aligned by Map Chip Size!" unless (@spr.w % @size[0] == 0 && @spr.h % @size[1] == 0)
14
- @spr.ow = @size[0]
15
- @spr.oh = @size[1]
13
+ @spr.ow = 32
14
+ @spr.oh = 32
16
15
  param = Hash.new
17
16
  param[:sprite] = @spr
18
17
  param[:wait] = pw
18
+ # コリジョン設定
19
+ @collision = Collision.new(@spr.rect)
20
+ # キャラクタ位置設定
21
+ @position = Point.new(0, 0)
19
22
  # キャラパターンを表示
20
23
  @anim = SpriteAnimation.new(param)
21
24
  @anim.centering
25
+ @dir = :down
22
26
  end
23
27
 
24
28
  # マップの表示座標と実座標とのマージンを設定
@@ -27,7 +31,7 @@ class PChara # Player Character
27
31
  end
28
32
 
29
33
  def turn(d)
30
- @anim.character(@@amt2dir[d])
34
+ @anim.character = @@dir2dir[d]
31
35
  end
32
36
 
33
37
  def start
@@ -46,5 +50,9 @@ class PChara # Player Character
46
50
  @anim.render
47
51
  end
48
52
 
53
+ def size
54
+ return Size.new(@spr.ow, @spr.oh)
55
+ end
56
+
49
57
  def_delegators(:@spr, :dispose, :rect, :ow, :oh, :x, :y)
50
58
  end
@@ -1,3 +1,4 @@
1
+ # -*- encoding: utf-8 -*-
1
2
  #共通パーツクラス
2
3
  class CommonParts
3
4
  include Singleton
@@ -13,18 +14,18 @@ class CommonParts
13
14
  cfont = Font.sans_serif
14
15
  cfont.size = 16
15
16
 
16
- wc = Sprite.new({:file => "wait_cursor.png", :type => :ac})
17
- wc.oh = wc.w
18
-
19
- wc = SpriteAnimation.new({:sprite => wc, :wait => 0.2, :pattern_list => [0, 1, 2, 3, 2, 1]})
20
- sc = Sprite.new({:file => "cursor.png", :type => :ac})
21
- sc.oh = sc.w
22
-
23
- sc = SpriteAnimation.new({:sprite => sc, :wait => 0.2, :pattern_list => [0, 1, 2, 3, 2, 1]})
17
+ wcs = Sprite.new({:file => "wait_cursor.png", :type => :ac})
18
+ wcs.oh = wcs.w
19
+ scs = Sprite.new({:file => "cursor.png", :type => :ac})
20
+ scs.oh = scs.w
24
21
 
22
+ wc = SpriteAnimation.new({:sprite => wcs, :wait => 0.2, :pattern_list => [0, 1, 2, 3, 2, 1]})
23
+ sc = SpriteAnimation.new({:sprite => scs, :wait => 0.2, :pattern_list => [0, 1, 2, 3, 2, 1]})
25
24
  tb = TextBox.new({:size => [20, 4], :font => font, :wait_cursor => wc, :select_cursor => sc})
26
- tb.pause_type = :out
25
+ tb.set_wait_cursor_position{|wc, tbox| wc.right.bottom }
27
26
 
27
+ wc = SpriteAnimation.new({:sprite => wcs, :wait => 0.2, :pattern_list => [0, 1, 2, 3, 2, 1]})
28
+ sc = SpriteAnimation.new({:sprite => scs, :wait => 0.2, :pattern_list => [0, 1, 2, 3, 2, 1]})
28
29
  cb = TextBox.new({:size => [8, 8], :font => cfont, :wait_cursor => wc, :select_cursor => sc})
29
30
 
30
31
  bg = Sprite.new({:size=>tb.size, :type=>:ac})
@@ -45,4 +46,24 @@ class CommonParts
45
46
 
46
47
  @executing = false
47
48
  end
49
+
50
+ def start
51
+ @box.start
52
+ @cbox.start
53
+ end
54
+
55
+ def stop
56
+ @box.stop
57
+ @cbox.stop
58
+ end
59
+
60
+ def reset
61
+ @box.reset
62
+ @cbox.reset
63
+ end
64
+
65
+ def update_animation
66
+ @box.update_animation
67
+ @cbox.update_animation
68
+ end
48
69
  end
@@ -1,3 +1,4 @@
1
+ # -*- encoding: utf-8 -*-
1
2
  class MainScene
2
3
  include Story::Scene
3
4
 
@@ -8,19 +9,17 @@ class MainScene
8
9
  @d = [0,1]
9
10
 
10
11
  @map = MapManager.new
11
- @size = @map.size
12
- @map.collision.amount = Size.new(@amt, @amt)
13
- @executing_flags = Array.new(@map.events.length){|n| false}
12
+ @executing_flags = Array.new(@map.events[0].length){|n| false}
14
13
 
15
14
  # キャラクタの初期位置を指定([10,10]に位置)
16
- @chr = PChara.new("./chr1.png", @size)
15
+ @chr = PChara.new("./chr1.png")
16
+ @chr.position.move(@chr.size[0]*10, @chr.size[1]*10)
17
17
 
18
18
  # マップの表示開始位置を移動させる
19
- # キャラクタのグラフィックを真ん中に表示させるため
20
- @map.margin.resize(*@chr.margin)
21
- @map.sync_margin
19
+ # キャラクタのグラフィックを真ん中に表示させるため、マージン分移動させる
20
+ @map.move(*@chr.margin)
22
21
  # マップの実座標を設定する
23
- @map.move(@size[0] * 10, @size[1] * 10)
22
+ @map.move(*@chr.position)
24
23
 
25
24
  @parts = CommonParts.instance
26
25
  #Yukiの初期化
@@ -32,11 +31,13 @@ class MainScene
32
31
  def setup
33
32
  @map.start
34
33
  @chr.start
34
+ @parts.start
35
35
  end
36
36
 
37
37
  def update
38
38
  return nil if Input.quit_or_escape?
39
39
 
40
+ @parts.update_animation
40
41
  @map.update
41
42
  @chr.update
42
43
 
@@ -48,34 +49,42 @@ class MainScene
48
49
  elsif @yuki.executing?
49
50
  @yuki.update
50
51
  elsif @executing_flags.none?
51
- if Input.pushed_any?(:btn1)
52
- #1ボタンを押したとき、イベントに重なっていればマップイベントを実行、
52
+ if Input.pushed_any?(:btn1) || Input.click?(:left)
53
+ #1ボタンを押したとき、キャラの立ち位置が、イベントの位置にに重なっていればマップイベントを実行、
53
54
  #外れていれば、コマンドウィンドウを開く
54
- event_flags = @map.events.map{|e| e.met?(:collision => @map.collision)}
55
+ event_flags = @map.events[0].map{|e| e.met?(collision: @chr.collision, pos: @chr.position)}
55
56
  if event_flags.none?
56
- @yuki.start_plot(@yuki.to_plot(self, :command_plot))
57
+ #標準のコマンドを表示
58
+ @yuki.vars[:now] = @now
59
+ @yuki.vars[:talk] = talk
60
+ @yuki.vars[:check] = check
61
+ @yuki.start_plot(command_plot)
57
62
  else
58
- @map.events.zip(event_flags){|ef| ef[0].start(@parts) if ef[1]}
63
+ #キャラの立ち位置が重なっているイベントを起動
64
+ @map.events[0].zip(event_flags){|ef| ef[0].start(@parts) if ef[1]}
59
65
  end
60
66
  elsif Input::trigger_any?(:down, :up, :left, :right)
61
- # 0:down 1:left 2:right 3:up
67
+ # 0:down 1:left 2:right 3:up
62
68
  @d = Input::trigger_amount
63
69
  @d[1] = 0 if @d[0] != 0 && @d[1] != 0 # 移動を横方向優先に
64
- # コリジョンの移動量を設定
65
- @map.collision.direction = @d
66
70
  #キャラクタの向きを変更
67
71
  @chr.turn(@d)
68
- #マップの移動量を求める
69
- @a = @map.get_amount(0, @map.size, @map.collision).amount.to_a
70
- # 方向ボタンを押したときは、1チップサイズ単位で移動する
71
- # @cntはその移動量(幅と高さでサイズが違う場合アリ)
72
- @cnt = @a[0] > 0 ? @size[0] : @size[1]
72
+ #動けるかどうか判定
73
+ #(現在の位置から移動したときに、そこが移動可能なマップチップかどうか判別する)
74
+ if @map[0].can_access?(0, :in, @chr.position, @d[0]*@chr.size.w, @d[1]*@chr.size.h)
75
+ #移動可能なら、移動量を設定する
76
+ @a = @d.map{|d| d * @amt}
77
+ @chr.position.move(@d[0]*@map[0].mapchip.chip_size.w, @d[1]*@map[0].mapchip.chip_size.h)
78
+ #1フレームごとに一定ピクセル移動する(移動中は操作不可)
79
+ @cnt = @d[0] != 0 ? @map[0].mapchip.chip_size.w : @map[0].mapchip.chip_size.h
80
+ end
73
81
  end
74
- else
75
82
  end
76
83
 
77
- @map.events.zip(@executing_flags){|ef|
84
+ # イベントの終了チェック
85
+ @map.events[0].zip(@executing_flags){|ef|
78
86
  if ef[1]
87
+ # 2ボタンを押したときにイベントを中止する
79
88
  if Input.pushed_any?(:btn2)
80
89
  ef[0].stop
81
90
  else
@@ -83,7 +92,7 @@ class MainScene
83
92
  end
84
93
  end
85
94
  }
86
- @executing_flags = @map.events.map{|e| e.executing? }
95
+ @executing_flags = @map.events[0].map{|e| e.executing? }
87
96
 
88
97
  #コマンド選択の結果、イベントが実行されたときは、結果として@nowを返す
89
98
  return @now unless @yuki.is_scene?(@yuki.result)
@@ -101,31 +110,38 @@ class MainScene
101
110
  end
102
111
  end
103
112
 
104
- def command_plot(yuki)
105
- yuki.command([Yuki::Command.new("話す", "話す", nil, yuki.to_plot(self, :talk)),
106
- Yuki::Command.new("調べる", "調べる", nil, yuki.to_plot(self, :check))], @now)
107
- yuki.select_result.call(yuki) if yuki.is_scenario?(yuki.select_result)
108
- return @now
113
+ def command_plot
114
+ yuki_plot do
115
+ command([Yuki::Command.new("話す", "話す", nil, vars[:talk]),
116
+ Yuki::Command.new("調べる", "調べる", nil, vars[:check])], vars[:now])
117
+ call_plot(select_result) if is_scenario?(select_result)
118
+ vars[:now]
119
+ end
109
120
  end
110
121
  #コマンドウィンドウの「調べる」を選んだときの処理
111
- def check(yuki)
112
- yuki.text "あなたは、足下を調べた。\n"
113
- yuki.pause
114
- yuki.text "しかし、何も無かった。"
115
- yuki.pause
116
- yuki.clear
122
+ def check
123
+ yuki_plot do
124
+ text "あなたは、足下を調べた。"
125
+ pause
126
+ text "しかし、何も無かった。"
127
+ pause
128
+ clear
129
+ end
117
130
  end
118
131
 
119
132
  #コマンドウィンドウの「話す」を選んだときの処理
120
- def talk(yuki)
121
- yuki.text "話をしようとしたが"
122
- yuki.cr
123
- yuki.text "あなたの周りには誰もいない。"
124
- yuki.pause
125
- yuki.clear
133
+ def talk
134
+ yuki_plot do
135
+ text "話をしようとしたが"
136
+ cr
137
+ text "あなたの周りには誰もいない。"
138
+ pause
139
+ clear
140
+ end
126
141
  end
127
142
 
128
143
  def final
144
+ @parts.stop
129
145
  @map.stop
130
146
  @chr.stop
131
147
  end
@@ -1,14 +1,15 @@
1
+ # -*- encoding: utf-8 -*-
1
2
  #�}�b�v�Ǘ��N���X
2
3
  class MapManager
3
4
  extend Forwardable
4
5
 
5
- attr_reader :collision
6
+ attr_reader :mapchip
6
7
 
7
8
  def initialize
8
9
  @moving = false
9
10
 
10
11
  #�}�b�v�`�b�v�C���X�^���X�̍쐬
11
- @mp = MapChipFactory.load("./mapchip.csv")
12
+ @mapchip = MapChipFactory.load("./mapchip.csv")
12
13
 
13
14
  #�C�x���g��o�^
14
15
  em = MapEventManager.new
@@ -18,11 +19,7 @@ class MapManager
18
19
  add(16, EventOasis)
19
20
 
20
21
  #�}�b�v�̍쐬
21
- @map = Map.new(@mp, "./map_layer.csv", em)
22
-
23
- #�����W���R���W�����ݒ�
24
- @collision = Collision.new(Rect.new(0, 0, @mp.chip_size[0], @mp.chip_size[1]),
25
- Point.new(0, 0))
22
+ @map = Map.new(@mapchip, "./map_layer.csv", em)
26
23
 
27
24
  #�C�̃}�b�v�`�b�v��g���A�j���[�V��������摜�ɒu������
28
25
  @sp = Sprite.new(:file=>"sea.png", :type=>:as)
@@ -31,30 +28,15 @@ class MapManager
31
28
  @map.set_mapchip_base(0, 3, @ar)
32
29
  end
33
30
 
34
- def margin
35
- return @map.margin
36
- end
37
-
38
- def size
39
- return @mp.chip_size
40
- end
41
-
42
31
  def move(dx, dy)
43
32
  @map.move(dx, dy)
44
- @map.events.each{|e| e.move(dx, dy) }
45
- @collision.move(dx, dy)
33
+ @map.events[0].each{|e| e.move(dx, dy) }
46
34
  end
47
35
 
48
36
  def move_to(x, y)
49
- @map.events.each{|e| e.move(x-@map.pos.x, y-@map.pos.y) }
50
- @collision.move_to(x, y)
37
+ @map.events[0].each{|e| e.move(x-@map.pos.x, y-@map.pos.y) }
51
38
  @map.move_to(x, y)
52
39
  end
53
-
54
- def sync_margin
55
- @map.sync_margin
56
- @map.events.each{|e| e.margin.resize(*@map.margin) }
57
- end
58
40
 
59
41
  def start
60
42
  @ar.start
@@ -62,7 +44,7 @@ class MapManager
62
44
 
63
45
  def update
64
46
  @ar.update_animation
65
- @map.events.each{|e| e.update(@map, @map.events, nil) }
47
+ @map.events[0].each{|e| e.update(@map, @map.events, nil) }
66
48
  end
67
49
 
68
50
  def render
@@ -70,11 +52,11 @@ class MapManager
70
52
  end
71
53
 
72
54
  def render_event
73
- @map.events.each{|e| e.render }
55
+ @map.events[0].each{|e| e.render }
74
56
  end
75
57
 
76
58
  def render_event_box
77
- @map.events.each{|e| e.render_box }
59
+ @map.events[0].each{|e| e.render_box }
78
60
  end
79
61
 
80
62
  def stop
@@ -86,7 +68,8 @@ class MapManager
86
68
  @ar.dispose
87
69
  @sp.dispose
88
70
  end
89
-
90
- def_delegators(:@map, :w, :h, :get_code, :get_code_real)
91
- def_delegators(:@map, :get_amount, :events)
71
+
72
+ def_delegators(:@map, :w, :h, :get_code, :get_code_real, :margin, :mapchips, :[])
73
+ def_delegators(:@map, :collision?, :meet?, :cover?, :events)
74
+ def_delegators(:@mapchip, :collision_table, :access_table)
92
75
  end
@@ -1,3 +1,4 @@
1
+ # -*- encoding: utf-8 -*-
1
2
  #! /usr/bin/ruby
2
3
  # map_test
3
4
 
@@ -7,7 +8,7 @@ require 'Miyako/miyako'
7
8
 
8
9
  include Miyako
9
10
 
10
- #Screen.fps = 60
11
+ Screen.fps = 60
11
12
  #Screen.fps_view = true
12
13
 
13
14
  require 'main_parts'
@@ -18,6 +19,5 @@ require 'oasis'
18
19
  require 'town'
19
20
  require 'main_scene'
20
21
 
21
- #Screen.set_size(320, 240)
22
22
  mt = Story.new
23
23
  mt.run(MainScene)
@@ -1,3 +1,4 @@
1
+ # -*- encoding: utf-8 -*-
1
2
  #オアシスを表すイベントクラス
2
3
  class EventOasis
3
4
  include MapEvent
@@ -7,35 +8,38 @@ class EventOasis
7
8
  def init(map, x, y)
8
9
  # イベント用チップを取得
9
10
  @spr = Sprite.new({:filename => "map2.png", :type => :color_key})
10
- @spr.ow = @spr.oh = @spr.oy = 32
11
+ @spr.oy = @spr.ow = @spr.oh = 32
11
12
  @spr.move_to(x, y)
12
- @coll = Collision.new([0, 0, @spr.ow, @spr.oh], [@spr.x, @spr.y])
13
+ @coll = Collision.new([0, 0, @spr.ow, @spr.oh])
14
+ @pos = Point.new(x, y)
13
15
  @margin = Size.new(0, 0)
14
16
  @parts = CommonParts.instance
15
17
  @yuki = Yuki.new
16
18
  @yuki.select_textbox(@parts.box[:box])
17
19
  end
18
20
 
19
- # キャラとイベントが重なり合っているかの判別
21
+ # キャラの立ち位置とイベントの位置が重なり合っているかの判別
20
22
  def met?(param = nil)
21
- return @coll.collision?(param[:collision])
23
+ return @coll.collision?(@pos, param[:collision], param[:pos])
22
24
  end
23
25
 
24
26
  # イベントの実行
25
27
  def start(param = nil)
26
- @yuki.start_plot(self.method(:plot))
28
+ @yuki.start_plot(plot)
27
29
  end
28
30
 
29
31
  def executing?
30
32
  @yuki.executing?
31
33
  end
32
34
 
33
- def plot(yuki)
34
- yuki.text " ここは"
35
- yuki.color(:cyan){"オアシス"}
36
- yuki.text "のようだ。\n しかし、普通は砂漠にあるはずなのに・・・。"
37
- yuki.pause
38
- yuki.clear
35
+ def plot
36
+ yuki_plot do
37
+ text " ここは"
38
+ color(:cyan){"オアシス"}
39
+ text "のようだ。\n しかし、普通は砂漠にあるはずなのに・・・。"
40
+ pause
41
+ clear
42
+ end
39
43
  end
40
44
 
41
45
  def move(dx, dy)
@@ -53,12 +57,14 @@ class EventOasis
53
57
  end
54
58
  end
55
59
 
60
+ # イベントキャラクタの描画
56
61
  def render
57
62
  @spr.move(-@margin.w, -@margin.h)
58
63
  @spr.render
59
64
  @spr.move(@margin.w, @margin.h)
60
65
  end
61
66
 
67
+ #(Yuki起動時)メッセージボックスの表示
62
68
  def render_box
63
69
  @parts.box.render if @yuki.executing?
64
70
  end