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
data/sample/Animation1/m1ku.rb
CHANGED
@@ -1,68 +1,68 @@
|
|
1
|
-
#! /usr/bin/ruby
|
2
|
-
# M1ku sample for Miyako v2.0
|
3
|
-
# 2008.11.30 Cyross Makoto
|
4
|
-
|
5
|
-
require 'Miyako/miyako'
|
6
|
-
include Miyako
|
7
|
-
|
8
|
-
#Screen.fps_view = true
|
9
|
-
|
10
|
-
def create_arm(num)
|
11
|
-
spr = Sprite.new(:file=>sprintf("m1ku_arm_#{num}.png"), :type=>:ck)
|
12
|
-
spr.move_to(30, 70)
|
13
|
-
return spr
|
14
|
-
end
|
15
|
-
|
16
|
-
def create_eye(num)
|
17
|
-
spr = Sprite.new(:file=>sprintf("m1ku_eye_#{num}.png"), :type=>:ck)
|
18
|
-
spr.move_to(356, 114)
|
19
|
-
return spr
|
20
|
-
end
|
21
|
-
|
22
|
-
back = Sprite.new(:file=>"m1ku_back.jpg", :type=>:as)
|
23
|
-
backs = SpriteAnimation.new(:sprite=>Array.new(12){|n| back.to_sprite{|sprite| Bitmap.hue(sprite, sprite, 30 * n) }}, :wait => 0.1).start
|
24
|
-
|
25
|
-
body = Sprite.new(:file=>"m1ku_body.png", :type=>:ck)
|
26
|
-
body.move_to(200, 64)
|
27
|
-
|
28
|
-
hair_f = Sprite.new(:file=>"m1ku_hair_front.png", :type=>:ck)
|
29
|
-
hair_f.move_to(200, 24)
|
30
|
-
|
31
|
-
hair_r = Sprite.new(:file=>"m1ku_hair_rear.png", :type=>:ck)
|
32
|
-
hair_r.move_to(200, 24)
|
33
|
-
|
34
|
-
arms = Array.new
|
35
|
-
(0..3).each{|n| arms.push(create_arm(n)) }
|
36
|
-
arm_anim_param = {
|
37
|
-
:sprite=> arms,
|
38
|
-
:wait => 0.1,
|
39
|
-
:pattern_list => [0, 1, 2, 3, 2, 1]
|
40
|
-
}
|
41
|
-
arm_anim = SpriteAnimation.new(arm_anim_param)
|
42
|
-
arm_anim.start
|
43
|
-
|
44
|
-
eyes = Array.new
|
45
|
-
(0..3).each{|n| eyes.push(create_eye(n)) }
|
46
|
-
eye_anim_param = {
|
47
|
-
:sprite => eyes,
|
48
|
-
:wait => [4.5, 0.1, 0.1, 0.1, 0.1, 0.1],
|
49
|
-
:pattern_list => [0, 1, 2, 3, 2, 1]
|
50
|
-
}
|
51
|
-
eye_anim = SpriteAnimation.new(eye_anim_param)
|
52
|
-
eye_anim.start
|
53
|
-
|
54
|
-
damt = 30
|
55
|
-
|
56
|
-
# Main Routine
|
57
|
-
Miyako.main_loop do
|
58
|
-
break if Input.quit_or_escape?
|
59
|
-
backs.render
|
60
|
-
backs.update_animation
|
61
|
-
hair_r.render
|
62
|
-
arm_anim.update_animation
|
63
|
-
arm_anim.render
|
64
|
-
body.render
|
65
|
-
eye_anim.update_animation
|
66
|
-
eye_anim.render
|
67
|
-
hair_f.render
|
68
|
-
end
|
1
|
+
#! /usr/bin/ruby
|
2
|
+
# M1ku sample for Miyako v2.0
|
3
|
+
# 2008.11.30 Cyross Makoto
|
4
|
+
|
5
|
+
require 'Miyako/miyako'
|
6
|
+
include Miyako
|
7
|
+
|
8
|
+
#Screen.fps_view = true
|
9
|
+
|
10
|
+
def create_arm(num)
|
11
|
+
spr = Sprite.new(:file=>sprintf("m1ku_arm_#{num}.png"), :type=>:ck)
|
12
|
+
spr.move_to!(30, 70)
|
13
|
+
return spr
|
14
|
+
end
|
15
|
+
|
16
|
+
def create_eye(num)
|
17
|
+
spr = Sprite.new(:file=>sprintf("m1ku_eye_#{num}.png"), :type=>:ck)
|
18
|
+
spr.move_to!(356, 114)
|
19
|
+
return spr
|
20
|
+
end
|
21
|
+
|
22
|
+
back = Sprite.new(:file=>"m1ku_back.jpg", :type=>:as)
|
23
|
+
backs = SpriteAnimation.new(:sprite=>Array.new(12){|n| back.to_sprite{|sprite| Bitmap.hue(sprite, sprite, 30 * n) }}, :wait => 0.1).start
|
24
|
+
|
25
|
+
body = Sprite.new(:file=>"m1ku_body.png", :type=>:ck)
|
26
|
+
body.move_to!(200, 64)
|
27
|
+
|
28
|
+
hair_f = Sprite.new(:file=>"m1ku_hair_front.png", :type=>:ck)
|
29
|
+
hair_f.move_to!(200, 24)
|
30
|
+
|
31
|
+
hair_r = Sprite.new(:file=>"m1ku_hair_rear.png", :type=>:ck)
|
32
|
+
hair_r.move_to!(200, 24)
|
33
|
+
|
34
|
+
arms = Array.new
|
35
|
+
(0..3).each{|n| arms.push(create_arm(n)) }
|
36
|
+
arm_anim_param = {
|
37
|
+
:sprite=> arms,
|
38
|
+
:wait => 0.1,
|
39
|
+
:pattern_list => [0, 1, 2, 3, 2, 1]
|
40
|
+
}
|
41
|
+
arm_anim = SpriteAnimation.new(arm_anim_param)
|
42
|
+
arm_anim.start
|
43
|
+
|
44
|
+
eyes = Array.new
|
45
|
+
(0..3).each{|n| eyes.push(create_eye(n)) }
|
46
|
+
eye_anim_param = {
|
47
|
+
:sprite => eyes,
|
48
|
+
:wait => [4.5, 0.1, 0.1, 0.1, 0.1, 0.1],
|
49
|
+
:pattern_list => [0, 1, 2, 3, 2, 1]
|
50
|
+
}
|
51
|
+
eye_anim = SpriteAnimation.new(eye_anim_param)
|
52
|
+
eye_anim.start
|
53
|
+
|
54
|
+
damt = 30
|
55
|
+
|
56
|
+
# Main Routine
|
57
|
+
Miyako.main_loop do
|
58
|
+
break if Input.quit_or_escape?
|
59
|
+
backs.render
|
60
|
+
backs.update_animation
|
61
|
+
hair_r.render
|
62
|
+
arm_anim.update_animation
|
63
|
+
arm_anim.render
|
64
|
+
body.render
|
65
|
+
eye_anim.update_animation
|
66
|
+
eye_anim.render
|
67
|
+
hair_f.render
|
68
|
+
end
|
data/sample/Animation2/lex.rb
CHANGED
@@ -1,96 +1,96 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
#! /usr/bin/ruby
|
3
|
-
# Lex sample for Miyako v2.0
|
4
|
-
# 2008.11.24 Cyross Makoto
|
5
|
-
|
6
|
-
require 'Miyako/miyako'
|
7
|
-
|
8
|
-
include Miyako
|
9
|
-
|
10
|
-
def create_wheel(num)
|
11
|
-
spr = Sprite.new({:file=>sprintf("lex_wheel_#{num}.png"), :type=>:ck})
|
12
|
-
spr.move_to(317, 331)
|
13
|
-
return spr
|
14
|
-
end
|
15
|
-
|
16
|
-
|
17
|
-
back = Plane.new({:file=>sprintf("lex_back.png"), :type=>:as})
|
18
|
-
back_timer = WaitCounter.new(0.1)
|
19
|
-
|
20
|
-
title = Sprite.new({:file=>sprintf("song_title.png"), :type=>:ck})
|
21
|
-
pos = Screen.h
|
22
|
-
upper = 24
|
23
|
-
x = 24
|
24
|
-
title.move_to(x, pos)
|
25
|
-
title_timer = WaitCounter.new(2)
|
26
|
-
interval = 8
|
27
|
-
mode = 0
|
28
|
-
|
29
|
-
len_body = Sprite.new({:file=>sprintf("lex_body.png"), :type=>:ck})
|
30
|
-
len_body.move_to(425, 219)
|
31
|
-
|
32
|
-
len_anim_param = {
|
33
|
-
:sprite => len_body,
|
34
|
-
:wait => 0.1,
|
35
|
-
:move_offset => [[0,0], [0,-1], [0,0], [0,1]]
|
36
|
-
}
|
37
|
-
len_anim = SpriteAnimation.new(len_anim_param)
|
38
|
-
len_anim.start
|
39
|
-
|
40
|
-
road_roller = Sprite.new({:file=>sprintf("lex_roadroller.png"), :type=>:ck})
|
41
|
-
road_roller.move_to(310, 180)
|
42
|
-
|
43
|
-
rr_anim_param = {
|
44
|
-
:sprite => road_roller,
|
45
|
-
:wait => 0.1,
|
46
|
-
:move_offset => [[0,0], [0,1], [0,0], [0,-1]]
|
47
|
-
}
|
48
|
-
rr_anim = SpriteAnimation.new(rr_anim_param)
|
49
|
-
rr_anim.start
|
50
|
-
|
51
|
-
wheels = Array.new
|
52
|
-
(0..2).each{|n| wheels.push(create_wheel(n)) }
|
53
|
-
wheel_anim_param = {
|
54
|
-
:sprite => wheels,
|
55
|
-
:wait => 0.1,
|
56
|
-
:pattern_list => [0, 1, 2, 1]
|
57
|
-
}
|
58
|
-
wheel_anim = SpriteAnimation.new(wheel_anim_param)
|
59
|
-
wheel_anim.start
|
60
|
-
|
61
|
-
back_timer.start
|
62
|
-
title_timer.start
|
63
|
-
Miyako.main_loop do
|
64
|
-
break if Input.quit_or_escape?
|
65
|
-
len_anim.update_animation
|
66
|
-
rr_anim.update_animation
|
67
|
-
wheel_anim.update_animation
|
68
|
-
if back_timer.finish?
|
69
|
-
back.move(-2, 0)
|
70
|
-
back_timer.start
|
71
|
-
end
|
72
|
-
if title_timer.finish?
|
73
|
-
case mode
|
74
|
-
when 0
|
75
|
-
mode = 1
|
76
|
-
title_timer = WaitCounter.new(0.1)
|
77
|
-
title_timer.start
|
78
|
-
when 1
|
79
|
-
pos -= interval
|
80
|
-
if pos <= upper
|
81
|
-
pos = upper
|
82
|
-
mode = 2
|
83
|
-
else
|
84
|
-
title_timer.start
|
85
|
-
end
|
86
|
-
title.move_to(x, pos)
|
87
|
-
when 2
|
88
|
-
# no operation
|
89
|
-
end
|
90
|
-
end
|
91
|
-
back.render
|
92
|
-
wheel_anim.render
|
93
|
-
len_anim.render
|
94
|
-
rr_anim.render
|
95
|
-
title.render if mode > 0
|
96
|
-
end
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
#! /usr/bin/ruby
|
3
|
+
# Lex sample for Miyako v2.0
|
4
|
+
# 2008.11.24 Cyross Makoto
|
5
|
+
|
6
|
+
require 'Miyako/miyako'
|
7
|
+
|
8
|
+
include Miyako
|
9
|
+
|
10
|
+
def create_wheel(num)
|
11
|
+
spr = Sprite.new({:file=>sprintf("lex_wheel_#{num}.png"), :type=>:ck})
|
12
|
+
spr.move_to!(317, 331)
|
13
|
+
return spr
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
back = Plane.new({:file=>sprintf("lex_back.png"), :type=>:as})
|
18
|
+
back_timer = WaitCounter.new(0.1)
|
19
|
+
|
20
|
+
title = Sprite.new({:file=>sprintf("song_title.png"), :type=>:ck})
|
21
|
+
pos = Screen.h
|
22
|
+
upper = 24
|
23
|
+
x = 24
|
24
|
+
title.move_to!(x, pos)
|
25
|
+
title_timer = WaitCounter.new(2)
|
26
|
+
interval = 8
|
27
|
+
mode = 0
|
28
|
+
|
29
|
+
len_body = Sprite.new({:file=>sprintf("lex_body.png"), :type=>:ck})
|
30
|
+
len_body.move_to!(425, 219)
|
31
|
+
|
32
|
+
len_anim_param = {
|
33
|
+
:sprite => len_body,
|
34
|
+
:wait => 0.1,
|
35
|
+
:move_offset => [[0,0], [0,-1], [0,0], [0,1]]
|
36
|
+
}
|
37
|
+
len_anim = SpriteAnimation.new(len_anim_param)
|
38
|
+
len_anim.start
|
39
|
+
|
40
|
+
road_roller = Sprite.new({:file=>sprintf("lex_roadroller.png"), :type=>:ck})
|
41
|
+
road_roller.move_to!(310, 180)
|
42
|
+
|
43
|
+
rr_anim_param = {
|
44
|
+
:sprite => road_roller,
|
45
|
+
:wait => 0.1,
|
46
|
+
:move_offset => [[0,0], [0,1], [0,0], [0,-1]]
|
47
|
+
}
|
48
|
+
rr_anim = SpriteAnimation.new(rr_anim_param)
|
49
|
+
rr_anim.start
|
50
|
+
|
51
|
+
wheels = Array.new
|
52
|
+
(0..2).each{|n| wheels.push(create_wheel(n)) }
|
53
|
+
wheel_anim_param = {
|
54
|
+
:sprite => wheels,
|
55
|
+
:wait => 0.1,
|
56
|
+
:pattern_list => [0, 1, 2, 1]
|
57
|
+
}
|
58
|
+
wheel_anim = SpriteAnimation.new(wheel_anim_param)
|
59
|
+
wheel_anim.start
|
60
|
+
|
61
|
+
back_timer.start
|
62
|
+
title_timer.start
|
63
|
+
Miyako.main_loop do
|
64
|
+
break if Input.quit_or_escape?
|
65
|
+
len_anim.update_animation
|
66
|
+
rr_anim.update_animation
|
67
|
+
wheel_anim.update_animation
|
68
|
+
if back_timer.finish?
|
69
|
+
back.move!(-2, 0)
|
70
|
+
back_timer.start
|
71
|
+
end
|
72
|
+
if title_timer.finish?
|
73
|
+
case mode
|
74
|
+
when 0
|
75
|
+
mode = 1
|
76
|
+
title_timer = WaitCounter.new(0.1)
|
77
|
+
title_timer.start
|
78
|
+
when 1
|
79
|
+
pos -= interval
|
80
|
+
if pos <= upper
|
81
|
+
pos = upper
|
82
|
+
mode = 2
|
83
|
+
else
|
84
|
+
title_timer.start
|
85
|
+
end
|
86
|
+
title.move_to!(x, pos)
|
87
|
+
when 2
|
88
|
+
# no operation
|
89
|
+
end
|
90
|
+
end
|
91
|
+
back.render
|
92
|
+
wheel_anim.render
|
93
|
+
len_anim.render
|
94
|
+
rr_anim.render
|
95
|
+
title.render if mode > 0
|
96
|
+
end
|
@@ -1,387 +1,329 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
#! /usr/bin/ruby
|
3
|
-
# Diagram sample for Miyako v2.0
|
4
|
-
# 2009.1.16 Cyross Makoto
|
5
|
-
|
6
|
-
require 'Miyako/miyako'
|
7
|
-
|
8
|
-
include Miyako
|
9
|
-
|
10
|
-
# 移動が遅いスクロール
|
11
|
-
class MoveSlower
|
12
|
-
include Diagram::NodeBase
|
13
|
-
|
14
|
-
def initialize(spr)
|
15
|
-
@spr = spr
|
16
|
-
@finish = false # 終了フラグ
|
17
|
-
end
|
18
|
-
|
19
|
-
def start
|
20
|
-
@spr.move_to(640, @spr.y) # 画面を出たところまで移動
|
21
|
-
end
|
22
|
-
|
23
|
-
def update
|
24
|
-
@finish = (@spr.x <= 320) # 所定の位置までスクロールさせたら終了
|
25
|
-
return if @finish
|
26
|
-
@spr.move(-2,0)
|
27
|
-
end
|
28
|
-
|
29
|
-
def render
|
30
|
-
@spr.render
|
31
|
-
end
|
32
|
-
|
33
|
-
def finish?
|
34
|
-
return @finish
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
# 移動が速いスクロール
|
39
|
-
class MoveFaster
|
40
|
-
include Diagram::NodeBase
|
41
|
-
|
42
|
-
def initialize(spr)
|
43
|
-
@spr = spr
|
44
|
-
@finish = false # 終了フラグ
|
45
|
-
end
|
46
|
-
|
47
|
-
def start
|
48
|
-
@spr.move_to(640, @spr.y) # 画面を出たところまで移動
|
49
|
-
end
|
50
|
-
|
51
|
-
def update
|
52
|
-
@finish = (@spr.x <= 40) # 所定の位置までスクロールさせたら終了
|
53
|
-
return if @finish
|
54
|
-
@spr.move(-4,0)
|
55
|
-
end
|
56
|
-
|
57
|
-
def render
|
58
|
-
@spr.render
|
59
|
-
end
|
60
|
-
|
61
|
-
def finish?
|
62
|
-
return @finish
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
class WaitTrigger
|
67
|
-
include Diagram::TriggerBase
|
68
|
-
|
69
|
-
def initialize(wait=0.1)
|
70
|
-
@timer = WaitCounter.new(wait)
|
71
|
-
end
|
72
|
-
|
73
|
-
def pre_process
|
74
|
-
@timer.start
|
75
|
-
end
|
76
|
-
|
77
|
-
def update?
|
78
|
-
@timer.finish?
|
79
|
-
end
|
80
|
-
|
81
|
-
def post_update
|
82
|
-
@timer.start
|
83
|
-
end
|
84
|
-
|
85
|
-
def post_process
|
86
|
-
@timer.stop
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
# 移動アニメーションノード
|
91
|
-
class Moving
|
92
|
-
include Diagram::NodeBase
|
93
|
-
|
94
|
-
def initialize(parts, wait)
|
95
|
-
@parts = parts
|
96
|
-
@pr = {}
|
97
|
-
@pr[:fast] = Diagram::Processor.new{|dia|
|
98
|
-
dia.add :scroll, MoveFaster.new(@parts[:c1]), WaitTrigger.new(wait)
|
99
|
-
dia.add_arrow(:scroll, nil)
|
100
|
-
}
|
101
|
-
|
102
|
-
@pr[:slow] = Diagram::Processor.new{|dia|
|
103
|
-
dia.add :scroll, MoveSlower.new(@parts[:c2]), WaitTrigger.new(wait)
|
104
|
-
dia.add_arrow(:scroll, nil)
|
105
|
-
}
|
106
|
-
|
107
|
-
@finished = false
|
108
|
-
end
|
109
|
-
|
110
|
-
def start
|
111
|
-
@pr.keys.each{|k| @pr[k].start }
|
112
|
-
end
|
113
|
-
|
114
|
-
def update
|
115
|
-
@finished = @pr.keys.inject(true){|r, k|
|
116
|
-
@pr[k].update
|
117
|
-
r &= @pr[k].finish?
|
118
|
-
} # アニメーション処理が終了するまで繰り返し
|
119
|
-
end
|
120
|
-
|
121
|
-
def stop
|
122
|
-
@pr.keys.each{|k| @pr[k].stop }
|
123
|
-
end
|
124
|
-
|
125
|
-
def render
|
126
|
-
@parts[:bk].render
|
127
|
-
# 通常なら。@pr[:fast].render,@pr[:slow].renderが筋だが、
|
128
|
-
# @pr[:fast]が終了すると、renderを呼んでも描画されないため、元の画像を表示する
|
129
|
-
@parts[:c1].render
|
130
|
-
@parts[:c2].render
|
131
|
-
end
|
132
|
-
|
133
|
-
def finish?
|
134
|
-
return @finished
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
|
-
# Yukiプロット開始
|
139
|
-
class StartPlot
|
140
|
-
include Diagram::NodeBase
|
141
|
-
|
142
|
-
def initialize(manager, parts, imgs)
|
143
|
-
@manager = manager
|
144
|
-
@parts = parts
|
145
|
-
@imgs = imgs
|
146
|
-
@finished = false
|
147
|
-
end
|
148
|
-
|
149
|
-
def start
|
150
|
-
end
|
151
|
-
|
152
|
-
def update
|
153
|
-
@manager.start_plot
|
154
|
-
@parts.start
|
155
|
-
@finished = true
|
156
|
-
end
|
157
|
-
|
158
|
-
def stop
|
159
|
-
end
|
160
|
-
|
161
|
-
def render
|
162
|
-
@imgs[:bk].render
|
163
|
-
@imgs[:c1].render
|
164
|
-
@imgs[:c2].render
|
165
|
-
end
|
166
|
-
|
167
|
-
def finish?
|
168
|
-
return @finished
|
169
|
-
end
|
170
|
-
end
|
171
|
-
|
172
|
-
# Yukiプロット実行
|
173
|
-
class Plotting
|
174
|
-
include Diagram::NodeBase
|
175
|
-
|
176
|
-
def initialize(manager, parts, imgs, set_wait)
|
177
|
-
@manager = manager
|
178
|
-
@parts = parts
|
179
|
-
@imgs = imgs
|
180
|
-
@set = set_wait
|
181
|
-
@finished = false
|
182
|
-
end
|
183
|
-
|
184
|
-
def start
|
185
|
-
end
|
186
|
-
|
187
|
-
def update
|
188
|
-
@manager.update
|
189
|
-
@parts.update
|
190
|
-
@parts.update_animation
|
191
|
-
@finished = !(@manager.executing?)
|
192
|
-
end
|
193
|
-
|
194
|
-
def update_input
|
195
|
-
@set.call(0.0) if (Input.pushed_any?(:btn1) || Input.click?(:left)) # 1ボタンを押すor左クリックしたら、表示途中のメッセージをすべて表示
|
196
|
-
end
|
197
|
-
|
198
|
-
def render
|
199
|
-
@imgs[:bk].render
|
200
|
-
@imgs[:c1].render
|
201
|
-
@imgs[:c2].render
|
202
|
-
@manager.render
|
203
|
-
@parts.render
|
204
|
-
end
|
205
|
-
|
206
|
-
def stop
|
207
|
-
end
|
208
|
-
|
209
|
-
def finish?
|
210
|
-
return @finished
|
211
|
-
end
|
212
|
-
end
|
213
|
-
|
214
|
-
class MainScene
|
215
|
-
include Story::Scene
|
216
|
-
|
217
|
-
TEXTBOX_MARGIN = 16
|
218
|
-
TEXTBOX_BOTTOM = 24
|
219
|
-
|
220
|
-
def init
|
221
|
-
ws = Sprite.new(:file=>"wait_cursor.png", :type=>:ac)
|
222
|
-
ws.oh = ws.ow
|
223
|
-
ws = SpriteAnimation.new(:sprite=>ws, :wait=>0.2, :pattern_list=>[0,1,2,3,2,1])
|
224
|
-
@ws = ws
|
225
|
-
cs = Sprite.new(:file=>"cursor.png", :type=>:ac)
|
226
|
-
cs.oh = cs.ow
|
227
|
-
cs = SpriteAnimation.new(:sprite=>cs, :wait=>0.2, :pattern_list=>[0,1,2,3,2,1])
|
228
|
-
font = Font.sans_serif
|
229
|
-
font.color = Color[:white]
|
230
|
-
font.size = 24
|
231
|
-
@box = TextBox.new(:size=>[20,5], :wait_cursor => ws, :select_cursor => cs, :font => font)
|
232
|
-
@box_bg = Sprite.new(:size => @box.size.to_a.map{|v| v + TEXTBOX_MARGIN}, :type => :ac)
|
233
|
-
@box_bg.fill([0,0,255,128])
|
234
|
-
@parts = Parts.new(@box.size)
|
235
|
-
@parts[:box_bg] = @box_bg
|
236
|
-
@parts[:box] = @box
|
237
|
-
@parts[:box_bg].centering
|
238
|
-
@parts[:box].centering
|
239
|
-
@parts.center
|
240
|
-
|
241
|
-
@yuki = Yuki.new
|
242
|
-
@yuki.update_text = self.method(:update_text)
|
243
|
-
|
244
|
-
@imgs = {}
|
245
|
-
@imgs[:c1] = Sprite.new(:file=>"chr01.png", :type=>:ac).bottom
|
246
|
-
@imgs[:c2] = Sprite.new(:file=>"chr02.png", :type=>:ac).bottom
|
247
|
-
@imgs[:bk] = Sprite.new(:file=>"back.png", :type=>:as).centering
|
248
|
-
|
249
|
-
|
250
|
-
@pr = Diagram::Processor.new{|dia|
|
251
|
-
dia.add :move, Moving.new(@imgs, 0.01)
|
252
|
-
dia.add :start, StartPlot.new(@yuki, @parts, @imgs)
|
253
|
-
dia.add :plot, Plotting.new(@yuki, @parts, @imgs, lambda{|w| set_wait(w) })
|
254
|
-
dia.add_arrow(:move, :start){|from| from.finish? }
|
255
|
-
dia.add_arrow(:start, :plot){|from| from.finish? }
|
256
|
-
dia.add_arrow(:plot, nil){|from| from.finish? }
|
257
|
-
}
|
258
|
-
|
259
|
-
@base_wait = 0.1 # ウェイト基本値
|
260
|
-
@wait = @base_wait # ウェイト
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
@
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
@pr.stop
|
330
|
-
end
|
331
|
-
end
|
332
|
-
|
333
|
-
class OverScene
|
334
|
-
include Story::Scene
|
335
|
-
|
336
|
-
def OverScene.scene_type
|
337
|
-
:over_scene
|
338
|
-
end
|
339
|
-
|
340
|
-
def init
|
341
|
-
@spr = Shape.text(:font=>Font.serif){ text "あいうえお" }
|
342
|
-
@max_count = 2000
|
343
|
-
@count = 0
|
344
|
-
@exed = false
|
345
|
-
end
|
346
|
-
|
347
|
-
def update
|
348
|
-
unless @exed
|
349
|
-
@exed = true
|
350
|
-
return OverScene2
|
351
|
-
end
|
352
|
-
return nil if @count == @max_count
|
353
|
-
@count = @count.succ
|
354
|
-
return @now
|
355
|
-
end
|
356
|
-
|
357
|
-
def render
|
358
|
-
@spr.render
|
359
|
-
end
|
360
|
-
end
|
361
|
-
|
362
|
-
class OverScene2
|
363
|
-
include Story::Scene
|
364
|
-
|
365
|
-
def OverScene2.scene_type
|
366
|
-
:over_scene
|
367
|
-
end
|
368
|
-
|
369
|
-
def init
|
370
|
-
@spr = Shape.text(:font=>Font.serif){ text "かきくけこ" }
|
371
|
-
@max_count = 1000
|
372
|
-
@count = 0
|
373
|
-
end
|
374
|
-
|
375
|
-
def update
|
376
|
-
return nil if @count == @max_count
|
377
|
-
@count = @count.succ
|
378
|
-
return @now
|
379
|
-
end
|
380
|
-
|
381
|
-
def render
|
382
|
-
@spr.render
|
383
|
-
end
|
384
|
-
end
|
385
|
-
|
386
|
-
ds = Story.new
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
#! /usr/bin/ruby
|
3
|
+
# Diagram sample for Miyako v2.0
|
4
|
+
# 2009.1.16 Cyross Makoto
|
5
|
+
|
6
|
+
require 'Miyako/miyako'
|
7
|
+
|
8
|
+
include Miyako
|
9
|
+
|
10
|
+
# 移動が遅いスクロール
|
11
|
+
class MoveSlower
|
12
|
+
include Diagram::NodeBase
|
13
|
+
|
14
|
+
def initialize(spr)
|
15
|
+
@spr = spr
|
16
|
+
@finish = false # 終了フラグ
|
17
|
+
end
|
18
|
+
|
19
|
+
def start
|
20
|
+
@spr.move_to!(640, @spr.y) # 画面を出たところまで移動
|
21
|
+
end
|
22
|
+
|
23
|
+
def update
|
24
|
+
@finish = (@spr.x <= 320) # 所定の位置までスクロールさせたら終了
|
25
|
+
return if @finish
|
26
|
+
@spr.move!(-2,0)
|
27
|
+
end
|
28
|
+
|
29
|
+
def render
|
30
|
+
@spr.render
|
31
|
+
end
|
32
|
+
|
33
|
+
def finish?
|
34
|
+
return @finish
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# 移動が速いスクロール
|
39
|
+
class MoveFaster
|
40
|
+
include Diagram::NodeBase
|
41
|
+
|
42
|
+
def initialize(spr)
|
43
|
+
@spr = spr
|
44
|
+
@finish = false # 終了フラグ
|
45
|
+
end
|
46
|
+
|
47
|
+
def start
|
48
|
+
@spr.move_to!(640, @spr.y) # 画面を出たところまで移動
|
49
|
+
end
|
50
|
+
|
51
|
+
def update
|
52
|
+
@finish = (@spr.x <= 40) # 所定の位置までスクロールさせたら終了
|
53
|
+
return if @finish
|
54
|
+
@spr.move!(-4,0)
|
55
|
+
end
|
56
|
+
|
57
|
+
def render
|
58
|
+
@spr.render
|
59
|
+
end
|
60
|
+
|
61
|
+
def finish?
|
62
|
+
return @finish
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
class WaitTrigger
|
67
|
+
include Diagram::TriggerBase
|
68
|
+
|
69
|
+
def initialize(wait=0.1)
|
70
|
+
@timer = WaitCounter.new(wait)
|
71
|
+
end
|
72
|
+
|
73
|
+
def pre_process
|
74
|
+
@timer.start
|
75
|
+
end
|
76
|
+
|
77
|
+
def update?
|
78
|
+
@timer.finish?
|
79
|
+
end
|
80
|
+
|
81
|
+
def post_update
|
82
|
+
@timer.start
|
83
|
+
end
|
84
|
+
|
85
|
+
def post_process
|
86
|
+
@timer.stop
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
# 移動アニメーションノード
|
91
|
+
class Moving
|
92
|
+
include Diagram::NodeBase
|
93
|
+
|
94
|
+
def initialize(parts, wait)
|
95
|
+
@parts = parts
|
96
|
+
@pr = {}
|
97
|
+
@pr[:fast] = Diagram::Processor.new{|dia|
|
98
|
+
dia.add :scroll, MoveFaster.new(@parts[:c1]), WaitTrigger.new(wait)
|
99
|
+
dia.add_arrow(:scroll, nil)
|
100
|
+
}
|
101
|
+
|
102
|
+
@pr[:slow] = Diagram::Processor.new{|dia|
|
103
|
+
dia.add :scroll, MoveSlower.new(@parts[:c2]), WaitTrigger.new(wait)
|
104
|
+
dia.add_arrow(:scroll, nil)
|
105
|
+
}
|
106
|
+
|
107
|
+
@finished = false
|
108
|
+
end
|
109
|
+
|
110
|
+
def start
|
111
|
+
@pr.keys.each{|k| @pr[k].start }
|
112
|
+
end
|
113
|
+
|
114
|
+
def update
|
115
|
+
@finished = @pr.keys.inject(true){|r, k|
|
116
|
+
@pr[k].update
|
117
|
+
r &= @pr[k].finish?
|
118
|
+
} # アニメーション処理が終了するまで繰り返し
|
119
|
+
end
|
120
|
+
|
121
|
+
def stop
|
122
|
+
@pr.keys.each{|k| @pr[k].stop }
|
123
|
+
end
|
124
|
+
|
125
|
+
def render
|
126
|
+
@parts[:bk].render
|
127
|
+
# 通常なら。@pr[:fast].render,@pr[:slow].renderが筋だが、
|
128
|
+
# @pr[:fast]が終了すると、renderを呼んでも描画されないため、元の画像を表示する
|
129
|
+
@parts[:c1].render
|
130
|
+
@parts[:c2].render
|
131
|
+
end
|
132
|
+
|
133
|
+
def finish?
|
134
|
+
return @finished
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
# Yukiプロット開始
|
139
|
+
class StartPlot
|
140
|
+
include Diagram::NodeBase
|
141
|
+
|
142
|
+
def initialize(manager, parts, imgs)
|
143
|
+
@manager = manager
|
144
|
+
@parts = parts
|
145
|
+
@imgs = imgs
|
146
|
+
@finished = false
|
147
|
+
end
|
148
|
+
|
149
|
+
def start
|
150
|
+
end
|
151
|
+
|
152
|
+
def update
|
153
|
+
@manager.start_plot
|
154
|
+
@parts.start
|
155
|
+
@finished = true
|
156
|
+
end
|
157
|
+
|
158
|
+
def stop
|
159
|
+
end
|
160
|
+
|
161
|
+
def render
|
162
|
+
@imgs[:bk].render
|
163
|
+
@imgs[:c1].render
|
164
|
+
@imgs[:c2].render
|
165
|
+
end
|
166
|
+
|
167
|
+
def finish?
|
168
|
+
return @finished
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
# Yukiプロット実行
|
173
|
+
class Plotting
|
174
|
+
include Diagram::NodeBase
|
175
|
+
|
176
|
+
def initialize(manager, parts, imgs, set_wait)
|
177
|
+
@manager = manager
|
178
|
+
@parts = parts
|
179
|
+
@imgs = imgs
|
180
|
+
@set = set_wait
|
181
|
+
@finished = false
|
182
|
+
end
|
183
|
+
|
184
|
+
def start
|
185
|
+
end
|
186
|
+
|
187
|
+
def update
|
188
|
+
@manager.update
|
189
|
+
@parts.update
|
190
|
+
@parts.update_animation
|
191
|
+
@finished = !(@manager.executing?)
|
192
|
+
end
|
193
|
+
|
194
|
+
def update_input
|
195
|
+
@set.call(0.0) if (Input.pushed_any?(:btn1) || Input.click?(:left)) # 1ボタンを押すor左クリックしたら、表示途中のメッセージをすべて表示
|
196
|
+
end
|
197
|
+
|
198
|
+
def render
|
199
|
+
@imgs[:bk].render
|
200
|
+
@imgs[:c1].render
|
201
|
+
@imgs[:c2].render
|
202
|
+
@manager.render
|
203
|
+
@parts.render
|
204
|
+
end
|
205
|
+
|
206
|
+
def stop
|
207
|
+
end
|
208
|
+
|
209
|
+
def finish?
|
210
|
+
return @finished
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
class MainScene
|
215
|
+
include Story::Scene
|
216
|
+
|
217
|
+
TEXTBOX_MARGIN = 16
|
218
|
+
TEXTBOX_BOTTOM = 24
|
219
|
+
|
220
|
+
def init
|
221
|
+
ws = Sprite.new(:file=>"wait_cursor.png", :type=>:ac)
|
222
|
+
ws.oh = ws.ow
|
223
|
+
ws = SpriteAnimation.new(:sprite=>ws, :wait=>0.2, :pattern_list=>[0,1,2,3,2,1])
|
224
|
+
@ws = ws
|
225
|
+
cs = Sprite.new(:file=>"cursor.png", :type=>:ac)
|
226
|
+
cs.oh = cs.ow
|
227
|
+
cs = SpriteAnimation.new(:sprite=>cs, :wait=>0.2, :pattern_list=>[0,1,2,3,2,1])
|
228
|
+
font = Font.sans_serif
|
229
|
+
font.color = Color[:white]
|
230
|
+
font.size = 24
|
231
|
+
@box = TextBox.new(:size=>[20,5], :wait_cursor => ws, :select_cursor => cs, :font => font)
|
232
|
+
@box_bg = Sprite.new(:size => @box.size.to_a.map{|v| v + TEXTBOX_MARGIN}, :type => :ac)
|
233
|
+
@box_bg.fill([0,0,255,128])
|
234
|
+
@parts = Parts.new(@box.size)
|
235
|
+
@parts[:box_bg] = @box_bg
|
236
|
+
@parts[:box] = @box
|
237
|
+
@parts[:box_bg].centering!
|
238
|
+
@parts[:box].centering!
|
239
|
+
@parts.center!.bottom!{ TEXTBOX_BOTTOM }
|
240
|
+
|
241
|
+
@yuki = Yuki.new
|
242
|
+
@yuki.update_text = self.method(:update_text)
|
243
|
+
|
244
|
+
@imgs = {}
|
245
|
+
@imgs[:c1] = Sprite.new(:file=>"chr01.png", :type=>:ac).bottom!
|
246
|
+
@imgs[:c2] = Sprite.new(:file=>"chr02.png", :type=>:ac).bottom!
|
247
|
+
@imgs[:bk] = Sprite.new(:file=>"back.png", :type=>:as).centering!
|
248
|
+
|
249
|
+
|
250
|
+
@pr = Diagram::Processor.new{|dia|
|
251
|
+
dia.add :move, Moving.new(@imgs, 0.01)
|
252
|
+
dia.add :start, StartPlot.new(@yuki, @parts, @imgs)
|
253
|
+
dia.add :plot, Plotting.new(@yuki, @parts, @imgs, lambda{|w| set_wait(w) })
|
254
|
+
dia.add_arrow(:move, :start){|from| from.finish? }
|
255
|
+
dia.add_arrow(:start, :plot){|from| from.finish? }
|
256
|
+
dia.add_arrow(:plot, nil){|from| from.finish? }
|
257
|
+
}
|
258
|
+
|
259
|
+
@base_wait = 0.1 # ウェイト基本値
|
260
|
+
@wait = @base_wait # ウェイト
|
261
|
+
end
|
262
|
+
|
263
|
+
def setup
|
264
|
+
@pr.start
|
265
|
+
@yuki.setup(@box, plot){|box, pl|
|
266
|
+
select_textbox box
|
267
|
+
select_plot pl
|
268
|
+
select_first_page nil # nil, :page1, :page2が選択可能
|
269
|
+
}
|
270
|
+
end
|
271
|
+
|
272
|
+
def update
|
273
|
+
return nil if Input.quit_or_escape?
|
274
|
+
@pr.update_input
|
275
|
+
@pr.update
|
276
|
+
return nil if @pr.finish?
|
277
|
+
return @now
|
278
|
+
end
|
279
|
+
|
280
|
+
def render
|
281
|
+
@pr.render
|
282
|
+
end
|
283
|
+
|
284
|
+
def plot
|
285
|
+
yuki_plot{
|
286
|
+
text_method :string do
|
287
|
+
page :page1 do
|
288
|
+
text "「ねえ、あんたの担当のセリフ、ちゃんと覚えてるわよねぇ?"
|
289
|
+
cr
|
290
|
+
pause
|
291
|
+
text " まさか、忘れてたなんて言わないわよねぇ?」"
|
292
|
+
end
|
293
|
+
clear
|
294
|
+
page :page2 do
|
295
|
+
color :red do
|
296
|
+
size 32 do
|
297
|
+
size(24){ "「そんなこと" }
|
298
|
+
text "ない"
|
299
|
+
size(24){ "よぉ~" }
|
300
|
+
end
|
301
|
+
cr
|
302
|
+
pause
|
303
|
+
text " ちゃんと覚えてるよぉ~」"
|
304
|
+
cr
|
305
|
+
end
|
306
|
+
end
|
307
|
+
end
|
308
|
+
}
|
309
|
+
end
|
310
|
+
|
311
|
+
def update_text(yuki, ch)
|
312
|
+
yuki.wait @wait # 1文字ずつ表示させる
|
313
|
+
end
|
314
|
+
|
315
|
+
def set_wait(wait)
|
316
|
+
@wait = wait
|
317
|
+
end
|
318
|
+
|
319
|
+
def reset_wait
|
320
|
+
@wait = @base_wait
|
321
|
+
end
|
322
|
+
|
323
|
+
def final
|
324
|
+
@pr.stop
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
328
|
+
ds = Story.new
|
387
329
|
ds.run(MainScene)
|