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.
- data/README +106 -154
- data/defines.h +144 -0
- data/{miyako_no_katana/extconf.rb → extconf.rb} +10 -0
- data/extern.h +29 -0
- data/install_miyako.rb +26 -14
- data/lib/Miyako/API/audio.rb +2 -2
- data/lib/Miyako/API/basic_data.rb +183 -41
- data/lib/Miyako/API/bitmap.rb +474 -2
- data/lib/Miyako/API/choices.rb +215 -48
- data/lib/Miyako/API/collision.rb +267 -251
- data/lib/Miyako/API/diagram.rb +58 -70
- data/lib/Miyako/API/drawing.rb +93 -52
- data/lib/Miyako/API/fixedmap.rb +233 -120
- data/lib/Miyako/API/font.rb +59 -40
- data/lib/Miyako/API/input.rb +34 -27
- data/lib/Miyako/API/layout.rb +154 -172
- data/lib/Miyako/API/map.rb +285 -159
- data/lib/Miyako/API/map_event.rb +4 -4
- data/lib/Miyako/API/modules.rb +1 -1
- data/lib/Miyako/API/movie.rb +8 -5
- data/lib/Miyako/API/parts.rb +44 -9
- data/lib/Miyako/API/plane.rb +37 -2
- data/lib/Miyako/API/screen.rb +90 -22
- data/lib/Miyako/API/shape.rb +118 -37
- data/lib/Miyako/API/sprite.rb +475 -61
- data/lib/Miyako/API/sprite_animation.rb +83 -63
- data/lib/Miyako/API/spriteunit.rb +47 -13
- data/lib/Miyako/API/story.rb +123 -47
- data/lib/Miyako/API/textbox.rb +361 -132
- data/lib/Miyako/API/utility.rb +388 -0
- data/lib/Miyako/API/viewport.rb +54 -349
- data/lib/Miyako/API/yuki.rb +570 -353
- data/lib/Miyako/EXT/miyako_cairo.rb +5 -3
- data/lib/Miyako/EXT/slides.rb +22 -1
- data/lib/Miyako/miyako.rb +12 -13
- data/logo/EGSR_logo.png +0 -0
- data/logo/EGSR_logo_bg.png +0 -0
- data/logo/EGSR_logo_fg.png +0 -0
- data/logo/EGSR_title_banner.png +0 -0
- data/logo/EGSR_title_logo.png +0 -0
- data/logo/miyako.png +0 -0
- data/logo/miyako_banner.png +0 -0
- data/logo/space.png +0 -0
- data/miyako_basicdata.c +590 -0
- data/miyako_bitmap.c +1225 -0
- data/miyako_collision.c +403 -0
- data/miyako_drawing.c +187 -0
- data/miyako_font.c +334 -0
- data/miyako_hsv.c +830 -0
- data/miyako_layout.c +191 -0
- data/miyako_no_katana.c +1074 -0
- data/miyako_transform.c +438 -0
- data/miyako_utility.c +288 -0
- data/sample/Animation1/m1ku.rb +10 -31
- data/sample/Animation1/readme.txt +6 -6
- data/sample/Animation2/lex.rb +1 -0
- data/sample/Animation2/readme.txt +6 -6
- data/sample/Diagram_sample/diagram_sample_yuki2.rb +152 -48
- data/sample/Diagram_sample/readme.txt +9 -6
- data/sample/Room3/blue.rb +234 -187
- data/sample/Room3/ending.rb +68 -63
- data/sample/Room3/green.rb +159 -124
- data/sample/Room3/main.rb +50 -32
- data/sample/Room3/main_component.rb +3 -2
- data/sample/Room3/readme.txt +6 -6
- data/sample/Room3/red.rb +161 -134
- data/sample/Room3/room3.rb +1 -0
- data/sample/Room3/title.rb +75 -62
- data/sample/ball_action_sample.rb +204 -0
- data/sample/blit_rop.rb +70 -0
- data/sample/cairo_sample.rb +25 -0
- data/sample/circle_collision_test.rb +66 -0
- data/sample/collision_test.rb +33 -0
- data/sample/collision_test2.rb +108 -0
- data/sample/fixed_map_test/fixed_map_sample.rb +23 -32
- data/sample/fixed_map_test/readme.txt +38 -38
- data/sample/map_test/chara.rb +17 -9
- data/sample/map_test/main_parts.rb +30 -9
- data/sample/map_test/main_scene.rb +57 -41
- data/sample/map_test/map_manager.rb +13 -30
- data/sample/map_test/map_test.rb +2 -2
- data/sample/map_test/oasis.rb +17 -11
- data/sample/map_test/readme.txt +50 -48
- data/sample/map_test/route.rb +46 -33
- data/sample/map_test/town.rb +19 -13
- data/sample/polygon_test.rb +35 -0
- data/sample/rasterscroll.rb +25 -0
- data/sample/takahashi.rb +42 -0
- data/sample/text.png +0 -0
- data/sample/textbox_sample.rb +190 -0
- data/sample/transform.rb +54 -0
- data/sample/utility_test.rb +73 -0
- data/sample/utility_test2.rb +61 -0
- data/sample/utility_test3.rb +64 -0
- data/sample/utility_test4.rb +73 -0
- data/uninstall_miyako.rb +19 -0
- data/win/miyako_no_katana.so +0 -0
- metadata +165 -148
- data/miyako.png +0 -0
- data/miyako_banner.png +0 -0
- data/miyako_no_katana/miyako_no_katana.c +0 -3301
- data/sample/fixed_map_test/map_sample.rb +0 -121
data/sample/map_test/chara.rb
CHANGED
@@ -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
|
-
|
6
|
-
@@
|
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,
|
9
|
-
@size = size
|
10
|
+
def initialize(fname, pw = 0.2)
|
10
11
|
# キャラクタスプライトを作成
|
11
|
-
# コリジョンはスプライトのものを共有して使用
|
12
12
|
@spr = Sprite.new({:filename => fname, :type => :color_key})
|
13
|
-
|
14
|
-
@spr.
|
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
|
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
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
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.
|
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
|
-
@
|
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"
|
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.
|
21
|
-
@map.sync_margin
|
19
|
+
# キャラクタのグラフィックを真ん中に表示させるため、マージン分移動させる
|
20
|
+
@map.move(*@chr.margin)
|
22
21
|
# マップの実座標を設定する
|
23
|
-
@map.move(
|
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
|
-
|
52
|
+
if Input.pushed_any?(:btn1) || Input.click?(:left)
|
53
|
+
#1ボタンを押したとき、キャラの立ち位置が、イベントの位置にに重なっていればマップイベントを実行、
|
53
54
|
#外れていれば、コマンドウィンドウを開く
|
54
|
-
event_flags = @map.events.map{|e| e.met?(:collision
|
55
|
+
event_flags = @map.events[0].map{|e| e.met?(collision: @chr.collision, pos: @chr.position)}
|
55
56
|
if event_flags.none?
|
56
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
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
|
-
|
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
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
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
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
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
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
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 :
|
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
|
-
@
|
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(@
|
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, :
|
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
|
data/sample/map_test/map_test.rb
CHANGED
@@ -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
|
-
|
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)
|
data/sample/map_test/oasis.rb
CHANGED
@@ -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.
|
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]
|
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(
|
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
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
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
|