cyross-ruby-miyako 2.0.5.1 → 2.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 +1092 -929
- data/Rakefile +7 -7
- data/defines.h +144 -144
- data/extern.h +29 -29
- data/install_miyako.rb +87 -87
- data/lib/Miyako/API/audio.rb +572 -198
- data/lib/Miyako/API/basic_data.rb +825 -573
- data/lib/Miyako/API/bitmap.rb +534 -507
- data/lib/Miyako/API/choices.rb +481 -475
- data/lib/Miyako/API/collision.rb +486 -460
- data/lib/Miyako/API/diagram.rb +586 -561
- data/lib/Miyako/API/drawing.rb +151 -151
- data/lib/Miyako/API/exceptions.rb +105 -0
- data/lib/Miyako/API/fixedmap.rb +462 -428
- data/lib/Miyako/API/font.rb +430 -403
- data/lib/Miyako/API/input.rb +456 -447
- data/lib/Miyako/API/layout.rb +636 -433
- data/lib/Miyako/API/map.rb +583 -529
- data/lib/Miyako/API/map_event.rb +222 -198
- data/lib/Miyako/API/modules.rb +357 -109
- data/lib/Miyako/API/movie.rb +166 -154
- data/lib/Miyako/API/parts.rb +276 -189
- data/lib/Miyako/API/plane.rb +205 -166
- data/lib/Miyako/API/screen.rb +341 -325
- data/lib/Miyako/API/shape.rb +443 -443
- data/lib/Miyako/API/sprite.rb +771 -752
- data/lib/Miyako/API/sprite_animation.rb +490 -481
- data/lib/Miyako/API/sprite_list.rb +1135 -0
- data/lib/Miyako/API/spriteunit.rb +168 -147
- data/lib/Miyako/API/story.rb +350 -300
- data/lib/Miyako/API/textbox.rb +770 -725
- data/lib/Miyako/API/utility.rb +419 -388
- data/lib/Miyako/API/viewport.rb +189 -139
- data/lib/Miyako/API/yuki.rb +1226 -996
- data/lib/Miyako/EXT/miyako_cairo.rb +62 -62
- data/lib/Miyako/EXT/raster_scroll.rb +138 -138
- data/lib/Miyako/EXT/slides.rb +157 -157
- data/lib/Miyako/miyako.rb +201 -171
- data/lib/Miyako/miyako_require_only.rb +35 -0
- data/miyako_basicdata.c +590 -590
- data/miyako_bitmap.c +1225 -1225
- data/miyako_collision.c +403 -403
- data/miyako_drawing.c +187 -187
- data/miyako_font.c +334 -334
- data/miyako_hsv.c +830 -830
- data/miyako_input_audio.c +254 -0
- data/miyako_layout.c +191 -191
- data/miyako_no_katana.c +1078 -1074
- data/miyako_sprite2.c +431 -0
- data/miyako_transform.c +438 -438
- data/miyako_utility.c +288 -288
- data/sample/Animation1/m1ku.rb +68 -68
- data/sample/Animation2/lex.rb +96 -96
- data/sample/Diagram_sample/diagram_sample_yuki2.rb +328 -386
- data/sample/Room3/blue.rb +297 -297
- data/sample/Room3/ending.rb +180 -180
- data/sample/Room3/green.rb +220 -220
- data/sample/Room3/main.rb +119 -119
- data/sample/Room3/main_component.rb +59 -59
- data/sample/Room3/red.rb +227 -227
- data/sample/Room3/room3.rb +25 -27
- data/sample/Room3/title.rb +184 -184
- data/sample/ball_action_sample.rb +204 -204
- data/sample/blit_rop.rb +70 -70
- data/sample/cairo_sample.rb +25 -25
- data/sample/circle_collision_test.rb +66 -66
- data/sample/collision_test.rb +33 -33
- data/sample/collision_test2.rb +108 -108
- data/sample/fixed_map_test/fixed_map_sample.rb +140 -140
- data/sample/fixed_map_test/readme.txt +72 -72
- data/sample/map_test/chara.rb +58 -58
- data/sample/map_test/main_parts.rb +69 -69
- data/sample/map_test/main_scene.rb +153 -153
- data/sample/map_test/map_manager.rb +75 -75
- data/sample/map_test/map_test.rb +23 -23
- data/sample/map_test/oasis.rb +71 -71
- data/sample/map_test/readme.txt +89 -89
- data/sample/map_test/route.rb +157 -157
- data/sample/map_test/town.rb +74 -74
- data/sample/polygon_test.rb +35 -35
- data/sample/rasterscroll.rb +24 -24
- data/sample/takahashi.rb +42 -42
- data/sample/textbox_sample.rb +189 -189
- data/sample/transform.rb +54 -54
- data/sample/utility_test.rb +73 -73
- data/sample/utility_test2.rb +61 -61
- data/sample/utility_test3.rb +64 -64
- data/sample/utility_test4.rb +73 -73
- data/uninstall_miyako.rb +19 -19
- data/win/miyako_no_katana.so +0 -0
- metadata +7 -2
@@ -1,69 +1,69 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
#共通パーツクラス
|
3
|
-
class CommonParts
|
4
|
-
include Singleton
|
5
|
-
|
6
|
-
attr_reader :box, :cbox
|
7
|
-
attr_accessor :executing
|
8
|
-
|
9
|
-
def initialize
|
10
|
-
# create window
|
11
|
-
font = Font.sans_serif
|
12
|
-
font.size = 24
|
13
|
-
|
14
|
-
cfont = Font.sans_serif
|
15
|
-
cfont.size = 16
|
16
|
-
|
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
|
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]})
|
24
|
-
tb = TextBox.new({:size => [20, 4], :font => font, :wait_cursor => wc, :select_cursor => sc})
|
25
|
-
tb.set_wait_cursor_position{|wc, tbox| wc.right
|
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]})
|
29
|
-
cb = TextBox.new({:size => [8, 8], :font => cfont, :wait_cursor => wc, :select_cursor => sc})
|
30
|
-
|
31
|
-
bg = Sprite.new({:size=>tb.size, :type=>:ac})
|
32
|
-
bg.fill([0,0,255,64])
|
33
|
-
|
34
|
-
cbg = Sprite.new({:size=>cb.size, :type=>:ac})
|
35
|
-
cbg.fill([0,255,0,64])
|
36
|
-
|
37
|
-
@box = Parts.new(bg.size)
|
38
|
-
@box[:bg] = bg
|
39
|
-
@box[:box] = tb
|
40
|
-
@box.center
|
41
|
-
|
42
|
-
@cbox = Parts.new(cbg.size)
|
43
|
-
@cbox[:bg] = cbg
|
44
|
-
@cbox[:box] = cb
|
45
|
-
@cbox.right{|body| 2.percent(body) }.top{|body| 2.percent(body) }
|
46
|
-
|
47
|
-
@executing = false
|
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
|
69
|
-
end
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
#共通パーツクラス
|
3
|
+
class CommonParts
|
4
|
+
include Singleton
|
5
|
+
|
6
|
+
attr_reader :box, :cbox
|
7
|
+
attr_accessor :executing
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
# create window
|
11
|
+
font = Font.sans_serif
|
12
|
+
font.size = 24
|
13
|
+
|
14
|
+
cfont = Font.sans_serif
|
15
|
+
cfont.size = 16
|
16
|
+
|
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
|
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]})
|
24
|
+
tb = TextBox.new({:size => [20, 4], :font => font, :wait_cursor => wc, :select_cursor => sc})
|
25
|
+
tb.set_wait_cursor_position{|wc, tbox| wc.right!.bottom! }
|
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]})
|
29
|
+
cb = TextBox.new({:size => [8, 8], :font => cfont, :wait_cursor => wc, :select_cursor => sc})
|
30
|
+
|
31
|
+
bg = Sprite.new({:size=>tb.size, :type=>:ac})
|
32
|
+
bg.fill([0,0,255,64])
|
33
|
+
|
34
|
+
cbg = Sprite.new({:size=>cb.size, :type=>:ac})
|
35
|
+
cbg.fill([0,255,0,64])
|
36
|
+
|
37
|
+
@box = Parts.new(bg.size)
|
38
|
+
@box[:bg] = bg
|
39
|
+
@box[:box] = tb
|
40
|
+
@box.center!.bottom!{|body| wc.oh }
|
41
|
+
|
42
|
+
@cbox = Parts.new(cbg.size)
|
43
|
+
@cbox[:bg] = cbg
|
44
|
+
@cbox[:box] = cb
|
45
|
+
@cbox.right!{|body| 2.percent(body) }.top!{|body| 2.percent(body) }
|
46
|
+
|
47
|
+
@executing = false
|
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
|
69
|
+
end
|
@@ -1,153 +1,153 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
class MainScene
|
3
|
-
include Story::Scene
|
4
|
-
|
5
|
-
def init
|
6
|
-
@cnt = 0
|
7
|
-
@amt = 4
|
8
|
-
@a = [0,0]
|
9
|
-
@d = [0,1]
|
10
|
-
|
11
|
-
@map = MapManager.new
|
12
|
-
@executing_flags = Array.new(@map.events[0].length){|n| false}
|
13
|
-
|
14
|
-
# キャラクタの初期位置を指定([10,10]に位置)
|
15
|
-
@chr = PChara.new("./chr1.png")
|
16
|
-
@chr.position.move(@chr.size[0]*10, @chr.size[1]*10)
|
17
|
-
|
18
|
-
# マップの表示開始位置を移動させる
|
19
|
-
# キャラクタのグラフィックを真ん中に表示させるため、マージン分移動させる
|
20
|
-
@map.move(*@chr.margin)
|
21
|
-
# マップの実座標を設定する
|
22
|
-
@map.move(*@chr.position)
|
23
|
-
|
24
|
-
@parts = CommonParts.instance
|
25
|
-
#Yukiの初期化
|
26
|
-
@yuki = Yuki.new
|
27
|
-
@yuki.select_textbox(@parts.box[:box])
|
28
|
-
@yuki.select_commandbox(@parts.cbox[:box])
|
29
|
-
end
|
30
|
-
|
31
|
-
def setup
|
32
|
-
@map.start
|
33
|
-
@chr.start
|
34
|
-
@parts.start
|
35
|
-
end
|
36
|
-
|
37
|
-
def update
|
38
|
-
return nil if Input.quit_or_escape?
|
39
|
-
|
40
|
-
@parts.update_animation
|
41
|
-
@map.update
|
42
|
-
@chr.update
|
43
|
-
|
44
|
-
# 移動量が残っているときは移動を優先
|
45
|
-
if @cnt > 0
|
46
|
-
# 移動後のマップの実座標を計算
|
47
|
-
@map.move(*@a)
|
48
|
-
@cnt = @cnt - @amt
|
49
|
-
elsif @yuki.executing?
|
50
|
-
@yuki.update
|
51
|
-
elsif @executing_flags.none?
|
52
|
-
if Input.pushed_any?(:btn1) || Input.click?(:left)
|
53
|
-
#1ボタンを押したとき、キャラの立ち位置が、イベントの位置にに重なっていればマップイベントを実行、
|
54
|
-
#外れていれば、コマンドウィンドウを開く
|
55
|
-
event_flags = @map.events[0].map{|e| e.met?(collision: @chr.collision, pos: @chr.position)}
|
56
|
-
if event_flags.none?
|
57
|
-
#標準のコマンドを表示
|
58
|
-
@yuki.vars[:now] = @now
|
59
|
-
@yuki.vars[:talk] = talk
|
60
|
-
@yuki.vars[:check] = check
|
61
|
-
@yuki.start_plot(command_plot)
|
62
|
-
else
|
63
|
-
#キャラの立ち位置が重なっているイベントを起動
|
64
|
-
@map.events[0].zip(event_flags){|ef| ef[0].start(@parts) if ef[1]}
|
65
|
-
end
|
66
|
-
elsif Input::trigger_any?(:down, :up, :left, :right)
|
67
|
-
# 0:down 1:left 2:right 3:up
|
68
|
-
@d = Input::trigger_amount
|
69
|
-
@d[1] = 0 if @d[0] != 0 && @d[1] != 0 # 移動を横方向優先に
|
70
|
-
#キャラクタの向きを変更
|
71
|
-
@chr.turn(@d)
|
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
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
# イベントの終了チェック
|
85
|
-
@map.events[0].zip(@executing_flags){|ef|
|
86
|
-
if ef[1]
|
87
|
-
# 2ボタンを押したときにイベントを中止する
|
88
|
-
if Input.pushed_any?(:btn2)
|
89
|
-
ef[0].stop
|
90
|
-
else
|
91
|
-
ef[0].update(nil, nil, nil)
|
92
|
-
end
|
93
|
-
end
|
94
|
-
}
|
95
|
-
@executing_flags = @map.events[0].map{|e| e.executing? }
|
96
|
-
|
97
|
-
#コマンド選択の結果、イベントが実行されたときは、結果として@nowを返す
|
98
|
-
return @now unless @yuki.is_scene?(@yuki.result)
|
99
|
-
return @yuki.result || @now
|
100
|
-
end
|
101
|
-
|
102
|
-
def render
|
103
|
-
@map.render
|
104
|
-
@map.render_event
|
105
|
-
@chr.render
|
106
|
-
@map.render_event_box
|
107
|
-
if @yuki.executing?
|
108
|
-
@parts.box.render
|
109
|
-
@parts.cbox.render if @yuki.selecting?
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
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
|
120
|
-
end
|
121
|
-
#コマンドウィンドウの「調べる」を選んだときの処理
|
122
|
-
def check
|
123
|
-
yuki_plot do
|
124
|
-
text "あなたは、足下を調べた。"
|
125
|
-
pause
|
126
|
-
text "しかし、何も無かった。"
|
127
|
-
pause
|
128
|
-
clear
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
|
-
#コマンドウィンドウの「話す」を選んだときの処理
|
133
|
-
def talk
|
134
|
-
yuki_plot do
|
135
|
-
text "話をしようとしたが"
|
136
|
-
cr
|
137
|
-
text "あなたの周りには誰もいない。"
|
138
|
-
pause
|
139
|
-
clear
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
def final
|
144
|
-
@parts.stop
|
145
|
-
@map.stop
|
146
|
-
@chr.stop
|
147
|
-
end
|
148
|
-
|
149
|
-
def dispose
|
150
|
-
@map.dispose
|
151
|
-
@chr.dispose
|
152
|
-
end
|
153
|
-
end
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
class MainScene
|
3
|
+
include Story::Scene
|
4
|
+
|
5
|
+
def init
|
6
|
+
@cnt = 0
|
7
|
+
@amt = 4
|
8
|
+
@a = [0,0]
|
9
|
+
@d = [0,1]
|
10
|
+
|
11
|
+
@map = MapManager.new
|
12
|
+
@executing_flags = Array.new(@map.events[0].length){|n| false}
|
13
|
+
|
14
|
+
# キャラクタの初期位置を指定([10,10]に位置)
|
15
|
+
@chr = PChara.new("./chr1.png")
|
16
|
+
@chr.position.move!(@chr.size[0]*10, @chr.size[1]*10)
|
17
|
+
|
18
|
+
# マップの表示開始位置を移動させる
|
19
|
+
# キャラクタのグラフィックを真ん中に表示させるため、マージン分移動させる
|
20
|
+
@map.move!(*@chr.margin)
|
21
|
+
# マップの実座標を設定する
|
22
|
+
@map.move!(*@chr.position)
|
23
|
+
|
24
|
+
@parts = CommonParts.instance
|
25
|
+
#Yukiの初期化
|
26
|
+
@yuki = Yuki.new
|
27
|
+
@yuki.select_textbox(@parts.box[:box])
|
28
|
+
@yuki.select_commandbox(@parts.cbox[:box])
|
29
|
+
end
|
30
|
+
|
31
|
+
def setup
|
32
|
+
@map.start
|
33
|
+
@chr.start
|
34
|
+
@parts.start
|
35
|
+
end
|
36
|
+
|
37
|
+
def update
|
38
|
+
return nil if Input.quit_or_escape?
|
39
|
+
|
40
|
+
@parts.update_animation
|
41
|
+
@map.update
|
42
|
+
@chr.update
|
43
|
+
|
44
|
+
# 移動量が残っているときは移動を優先
|
45
|
+
if @cnt > 0
|
46
|
+
# 移動後のマップの実座標を計算
|
47
|
+
@map.move!(*@a)
|
48
|
+
@cnt = @cnt - @amt
|
49
|
+
elsif @yuki.executing?
|
50
|
+
@yuki.update
|
51
|
+
elsif @executing_flags.none?
|
52
|
+
if Input.pushed_any?(:btn1) || Input.click?(:left)
|
53
|
+
#1ボタンを押したとき、キャラの立ち位置が、イベントの位置にに重なっていればマップイベントを実行、
|
54
|
+
#外れていれば、コマンドウィンドウを開く
|
55
|
+
event_flags = @map.events[0].map{|e| e.met?(collision: @chr.collision, pos: @chr.position)}
|
56
|
+
if event_flags.none?
|
57
|
+
#標準のコマンドを表示
|
58
|
+
@yuki.vars[:now] = @now
|
59
|
+
@yuki.vars[:talk] = talk
|
60
|
+
@yuki.vars[:check] = check
|
61
|
+
@yuki.start_plot(command_plot)
|
62
|
+
else
|
63
|
+
#キャラの立ち位置が重なっているイベントを起動
|
64
|
+
@map.events[0].zip(event_flags){|ef| ef[0].start(@parts) if ef[1]}
|
65
|
+
end
|
66
|
+
elsif Input::trigger_any?(:down, :up, :left, :right)
|
67
|
+
# 0:down 1:left 2:right 3:up
|
68
|
+
@d = Input::trigger_amount
|
69
|
+
@d[1] = 0 if @d[0] != 0 && @d[1] != 0 # 移動を横方向優先に
|
70
|
+
#キャラクタの向きを変更
|
71
|
+
@chr.turn(@d)
|
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
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
# イベントの終了チェック
|
85
|
+
@map.events[0].zip(@executing_flags){|ef|
|
86
|
+
if ef[1]
|
87
|
+
# 2ボタンを押したときにイベントを中止する
|
88
|
+
if Input.pushed_any?(:btn2)
|
89
|
+
ef[0].stop
|
90
|
+
else
|
91
|
+
ef[0].update(nil, nil, nil)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
}
|
95
|
+
@executing_flags = @map.events[0].map{|e| e.executing? }
|
96
|
+
|
97
|
+
#コマンド選択の結果、イベントが実行されたときは、結果として@nowを返す
|
98
|
+
return @now unless @yuki.is_scene?(@yuki.result)
|
99
|
+
return @yuki.result || @now
|
100
|
+
end
|
101
|
+
|
102
|
+
def render
|
103
|
+
@map.render
|
104
|
+
@map.render_event
|
105
|
+
@chr.render
|
106
|
+
@map.render_event_box
|
107
|
+
if @yuki.executing?
|
108
|
+
@parts.box.render
|
109
|
+
@parts.cbox.render if @yuki.selecting?
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
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
|
120
|
+
end
|
121
|
+
#コマンドウィンドウの「調べる」を選んだときの処理
|
122
|
+
def check
|
123
|
+
yuki_plot do
|
124
|
+
text "あなたは、足下を調べた。"
|
125
|
+
pause
|
126
|
+
text "しかし、何も無かった。"
|
127
|
+
pause
|
128
|
+
clear
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
#コマンドウィンドウの「話す」を選んだときの処理
|
133
|
+
def talk
|
134
|
+
yuki_plot do
|
135
|
+
text "話をしようとしたが"
|
136
|
+
cr
|
137
|
+
text "あなたの周りには誰もいない。"
|
138
|
+
pause
|
139
|
+
clear
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
def final
|
144
|
+
@parts.stop
|
145
|
+
@map.stop
|
146
|
+
@chr.stop
|
147
|
+
end
|
148
|
+
|
149
|
+
def dispose
|
150
|
+
@map.dispose
|
151
|
+
@chr.dispose
|
152
|
+
end
|
153
|
+
end
|
@@ -1,75 +1,75 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
#�}�b�v�Ǘ��N���X
|
3
|
-
class MapManager
|
4
|
-
extend Forwardable
|
5
|
-
|
6
|
-
attr_reader :mapchip
|
7
|
-
|
8
|
-
def initialize
|
9
|
-
@moving = false
|
10
|
-
|
11
|
-
#�}�b�v�`�b�v�C���X�^���X�̍쐬
|
12
|
-
@mapchip = MapChipFactory.load("./mapchip.csv")
|
13
|
-
|
14
|
-
#�C�x���g��o�^
|
15
|
-
em = MapEventManager.new
|
16
|
-
em.add(3, EventRouteMarker).
|
17
|
-
add(7, EventRouteMarker2).
|
18
|
-
add(8, EventTown).
|
19
|
-
add(16, EventOasis)
|
20
|
-
|
21
|
-
#�}�b�v�̍쐬
|
22
|
-
@map = Map.new(@mapchip, "./map_layer.csv", em)
|
23
|
-
|
24
|
-
#�C�̃}�b�v�`�b�v��g���A�j���[�V��������摜�ɒu������
|
25
|
-
@sp = Sprite.new(:file=>"sea.png", :type=>:as)
|
26
|
-
@sp.oh = @sp.w
|
27
|
-
@ar = SpriteAnimation.new(:sprite=>@sp, :wait=>0.4)
|
28
|
-
@map.set_mapchip_base(0, 3, @ar)
|
29
|
-
end
|
30
|
-
|
31
|
-
def move(dx, dy)
|
32
|
-
@map.move(dx, dy)
|
33
|
-
@map.events[0].each{|e| e.move(dx, dy) }
|
34
|
-
end
|
35
|
-
|
36
|
-
def move_to(x, y)
|
37
|
-
@map.events[0].each{|e| e.move(x-@map.pos.x, y-@map.pos.y) }
|
38
|
-
@map.move_to(x, y)
|
39
|
-
end
|
40
|
-
|
41
|
-
def start
|
42
|
-
@ar.start
|
43
|
-
end
|
44
|
-
|
45
|
-
def update
|
46
|
-
@ar.update_animation
|
47
|
-
@map.events[0].each{|e| e.update(@map, @map.events, nil) }
|
48
|
-
end
|
49
|
-
|
50
|
-
def render
|
51
|
-
@map.render
|
52
|
-
end
|
53
|
-
|
54
|
-
def render_event
|
55
|
-
@map.events[0].each{|e| e.render }
|
56
|
-
end
|
57
|
-
|
58
|
-
def render_event_box
|
59
|
-
@map.events[0].each{|e| e.render_box }
|
60
|
-
end
|
61
|
-
|
62
|
-
def stop
|
63
|
-
@ar.stop
|
64
|
-
end
|
65
|
-
|
66
|
-
def dispose
|
67
|
-
@map.dispose
|
68
|
-
@ar.dispose
|
69
|
-
@sp.dispose
|
70
|
-
end
|
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)
|
75
|
-
end
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
#�}�b�v�Ǘ��N���X
|
3
|
+
class MapManager
|
4
|
+
extend Forwardable
|
5
|
+
|
6
|
+
attr_reader :mapchip
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@moving = false
|
10
|
+
|
11
|
+
#�}�b�v�`�b�v�C���X�^���X�̍쐬
|
12
|
+
@mapchip = MapChipFactory.load("./mapchip.csv")
|
13
|
+
|
14
|
+
#�C�x���g��o�^
|
15
|
+
em = MapEventManager.new
|
16
|
+
em.add(3, EventRouteMarker).
|
17
|
+
add(7, EventRouteMarker2).
|
18
|
+
add(8, EventTown).
|
19
|
+
add(16, EventOasis)
|
20
|
+
|
21
|
+
#�}�b�v�̍쐬
|
22
|
+
@map = Map.new(@mapchip, "./map_layer.csv", em)
|
23
|
+
|
24
|
+
#�C�̃}�b�v�`�b�v��g���A�j���[�V��������摜�ɒu������
|
25
|
+
@sp = Sprite.new(:file=>"sea.png", :type=>:as)
|
26
|
+
@sp.oh = @sp.w
|
27
|
+
@ar = SpriteAnimation.new(:sprite=>@sp, :wait=>0.4)
|
28
|
+
@map.set_mapchip_base(0, 3, @ar)
|
29
|
+
end
|
30
|
+
|
31
|
+
def move!(dx, dy)
|
32
|
+
@map.move!(dx, dy)
|
33
|
+
@map.events[0].each{|e| e.move!(dx, dy) }
|
34
|
+
end
|
35
|
+
|
36
|
+
def move_to!(x, y)
|
37
|
+
@map.events[0].each{|e| e.move!(x-@map.pos.x, y-@map.pos.y) }
|
38
|
+
@map.move_to!(x, y)
|
39
|
+
end
|
40
|
+
|
41
|
+
def start
|
42
|
+
@ar.start
|
43
|
+
end
|
44
|
+
|
45
|
+
def update
|
46
|
+
@ar.update_animation
|
47
|
+
@map.events[0].each{|e| e.update(@map, @map.events, nil) }
|
48
|
+
end
|
49
|
+
|
50
|
+
def render
|
51
|
+
@map.render
|
52
|
+
end
|
53
|
+
|
54
|
+
def render_event
|
55
|
+
@map.events[0].each{|e| e.render }
|
56
|
+
end
|
57
|
+
|
58
|
+
def render_event_box
|
59
|
+
@map.events[0].each{|e| e.render_box }
|
60
|
+
end
|
61
|
+
|
62
|
+
def stop
|
63
|
+
@ar.stop
|
64
|
+
end
|
65
|
+
|
66
|
+
def dispose
|
67
|
+
@map.dispose
|
68
|
+
@ar.dispose
|
69
|
+
@sp.dispose
|
70
|
+
end
|
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)
|
75
|
+
end
|