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/map_test/town.rb
CHANGED
@@ -1,74 +1,74 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
#街を表すイベントクラス
|
3
|
-
class EventTown
|
4
|
-
include MapEvent
|
5
|
-
|
6
|
-
attr_reader :margin
|
7
|
-
|
8
|
-
def init(map, x, y)
|
9
|
-
# イベント用チップを取得
|
10
|
-
@spr = Sprite.new({:filename => "map2.png", :type => :color_key})
|
11
|
-
@spr.ox = @spr.oy = @spr.ow = @spr.oh = 32
|
12
|
-
@spr.move_to(x, y)
|
13
|
-
@coll = Collision.new([0, 0, @spr.ow, @spr.oh])
|
14
|
-
@pos = Point.new(x, y)
|
15
|
-
@margin = Size.new(0, 0)
|
16
|
-
@parts = CommonParts.instance
|
17
|
-
@yuki = Yuki.new
|
18
|
-
@yuki.select_textbox(@parts.box[:box])
|
19
|
-
end
|
20
|
-
|
21
|
-
# キャラの立ち位置とイベントの位置が重なり合っているかの判別
|
22
|
-
def met?(param = nil)
|
23
|
-
return @coll.collision?(@pos, param[:collision], param[:pos])
|
24
|
-
end
|
25
|
-
|
26
|
-
# イベントの開始
|
27
|
-
def start(param = nil)
|
28
|
-
@yuki.start_plot(plot)
|
29
|
-
end
|
30
|
-
|
31
|
-
def executing?
|
32
|
-
@yuki.executing?
|
33
|
-
end
|
34
|
-
|
35
|
-
# イベントの実行
|
36
|
-
def plot
|
37
|
-
yuki_plot do
|
38
|
-
text " ここが"
|
39
|
-
color([255,200,200]){"グリージアの街"}
|
40
|
-
text "か・・・。"
|
41
|
-
cr
|
42
|
-
text " まぁ、入るつもりは無いが。"
|
43
|
-
pause
|
44
|
-
clear
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def move(dx, dy)
|
49
|
-
@spr.move(-dx, -dy)
|
50
|
-
end
|
51
|
-
|
52
|
-
def move_to(x, y)
|
53
|
-
@spr.move_to(x, y)
|
54
|
-
end
|
55
|
-
|
56
|
-
def update(map_obj, events, params)
|
57
|
-
if @yuki.executing?
|
58
|
-
@yuki.update
|
59
|
-
@parts.box.update_animation
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
# イベントキャラクタの描画
|
64
|
-
def render
|
65
|
-
@spr.move(-@margin.w, -@margin.h)
|
66
|
-
@spr.render
|
67
|
-
@spr.move(@margin.w, @margin.h)
|
68
|
-
end
|
69
|
-
|
70
|
-
#(Yuki起動時)メッセージボックスの表示
|
71
|
-
def render_box
|
72
|
-
@parts.box.render if @yuki.executing?
|
73
|
-
end
|
74
|
-
end
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
#街を表すイベントクラス
|
3
|
+
class EventTown
|
4
|
+
include MapEvent
|
5
|
+
|
6
|
+
attr_reader :margin
|
7
|
+
|
8
|
+
def init(map, x, y)
|
9
|
+
# イベント用チップを取得
|
10
|
+
@spr = Sprite.new({:filename => "map2.png", :type => :color_key})
|
11
|
+
@spr.ox = @spr.oy = @spr.ow = @spr.oh = 32
|
12
|
+
@spr.move_to!(x, y)
|
13
|
+
@coll = Collision.new([0, 0, @spr.ow, @spr.oh])
|
14
|
+
@pos = Point.new(x, y)
|
15
|
+
@margin = Size.new(0, 0)
|
16
|
+
@parts = CommonParts.instance
|
17
|
+
@yuki = Yuki.new
|
18
|
+
@yuki.select_textbox(@parts.box[:box])
|
19
|
+
end
|
20
|
+
|
21
|
+
# キャラの立ち位置とイベントの位置が重なり合っているかの判別
|
22
|
+
def met?(param = nil)
|
23
|
+
return @coll.collision?(@pos, param[:collision], param[:pos])
|
24
|
+
end
|
25
|
+
|
26
|
+
# イベントの開始
|
27
|
+
def start(param = nil)
|
28
|
+
@yuki.start_plot(plot)
|
29
|
+
end
|
30
|
+
|
31
|
+
def executing?
|
32
|
+
@yuki.executing?
|
33
|
+
end
|
34
|
+
|
35
|
+
# イベントの実行
|
36
|
+
def plot
|
37
|
+
yuki_plot do
|
38
|
+
text " ここが"
|
39
|
+
color([255,200,200]){"グリージアの街"}
|
40
|
+
text "か・・・。"
|
41
|
+
cr
|
42
|
+
text " まぁ、入るつもりは無いが。"
|
43
|
+
pause
|
44
|
+
clear
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def move!(dx, dy)
|
49
|
+
@spr.move!(-dx, -dy)
|
50
|
+
end
|
51
|
+
|
52
|
+
def move_to!(x, y)
|
53
|
+
@spr.move_to!(x, y)
|
54
|
+
end
|
55
|
+
|
56
|
+
def update(map_obj, events, params)
|
57
|
+
if @yuki.executing?
|
58
|
+
@yuki.update
|
59
|
+
@parts.box.update_animation
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
# イベントキャラクタの描画
|
64
|
+
def render
|
65
|
+
@spr.move!(-@margin.w, -@margin.h)
|
66
|
+
@spr.render
|
67
|
+
@spr.move!(@margin.w, @margin.h)
|
68
|
+
end
|
69
|
+
|
70
|
+
#(Yuki起動時)メッセージボックスの表示
|
71
|
+
def render_box
|
72
|
+
@parts.box.render if @yuki.executing?
|
73
|
+
end
|
74
|
+
end
|
data/sample/polygon_test.rb
CHANGED
@@ -1,35 +1,35 @@
|
|
1
|
-
# Drawing.polygonサンプル
|
2
|
-
# 2009.4.12 Cyross Makoto
|
3
|
-
|
4
|
-
require 'Miyako/miyako'
|
5
|
-
|
6
|
-
max_vertexes = 32 # 最大頂点数
|
7
|
-
|
8
|
-
# 設定配列(Enumerator)
|
9
|
-
flags = [[true, true], # 塗りつぶし、アンチエイリアス有り
|
10
|
-
[true], # 塗りつぶし
|
11
|
-
[false, true], # 線描、アンチエイリアス有り
|
12
|
-
[false] # 線描
|
13
|
-
].cycle
|
14
|
-
|
15
|
-
# 色配列(Enumerator)
|
16
|
-
colors = [[0,0,255], # 青色
|
17
|
-
[0,255,0], # 緑色
|
18
|
-
[0,255,255], # 水色
|
19
|
-
[255,0,0], # 赤色
|
20
|
-
[255,0,255], # 紫色
|
21
|
-
[255,255,0], # 黄色
|
22
|
-
[255,255,255] # 白色
|
23
|
-
].cycle
|
24
|
-
|
25
|
-
loop do
|
26
|
-
Miyako::Input.update
|
27
|
-
break if Miyako::Input.quit_or_escape?
|
28
|
-
# 3 ~ max_vertexes までのランダム個数の頂点を作成
|
29
|
-
pairs = Array.new(rand(max_vertexes - 3) + 3){
|
30
|
-
[rand(Miyako::Screen.w), rand(Miyako::Screen.h)]
|
31
|
-
}
|
32
|
-
# 多角形を描画
|
33
|
-
Miyako::Drawing.polygon(Miyako::Screen, pairs, colors.next, *(flags.next))
|
34
|
-
Miyako::Screen.render
|
35
|
-
end
|
1
|
+
# Drawing.polygonサンプル
|
2
|
+
# 2009.4.12 Cyross Makoto
|
3
|
+
|
4
|
+
require 'Miyako/miyako'
|
5
|
+
|
6
|
+
max_vertexes = 32 # 最大頂点数
|
7
|
+
|
8
|
+
# 設定配列(Enumerator)
|
9
|
+
flags = [[true, true], # 塗りつぶし、アンチエイリアス有り
|
10
|
+
[true], # 塗りつぶし
|
11
|
+
[false, true], # 線描、アンチエイリアス有り
|
12
|
+
[false] # 線描
|
13
|
+
].cycle
|
14
|
+
|
15
|
+
# 色配列(Enumerator)
|
16
|
+
colors = [[0,0,255], # 青色
|
17
|
+
[0,255,0], # 緑色
|
18
|
+
[0,255,255], # 水色
|
19
|
+
[255,0,0], # 赤色
|
20
|
+
[255,0,255], # 紫色
|
21
|
+
[255,255,0], # 黄色
|
22
|
+
[255,255,255] # 白色
|
23
|
+
].cycle
|
24
|
+
|
25
|
+
loop do
|
26
|
+
Miyako::Input.update
|
27
|
+
break if Miyako::Input.quit_or_escape?
|
28
|
+
# 3 ~ max_vertexes までのランダム個数の頂点を作成
|
29
|
+
pairs = Array.new(rand(max_vertexes - 3) + 3){
|
30
|
+
[rand(Miyako::Screen.w), rand(Miyako::Screen.h)]
|
31
|
+
}
|
32
|
+
# 多角形を描画
|
33
|
+
Miyako::Drawing.polygon(Miyako::Screen, pairs, colors.next, *(flags.next))
|
34
|
+
Miyako::Screen.render
|
35
|
+
end
|
data/sample/rasterscroll.rb
CHANGED
@@ -1,25 +1,25 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
# ���X�^�X�N���[���T���v��
|
3
|
-
# 2009.4.12 Cyross Makoto
|
4
|
-
|
5
|
-
require 'Miyako/miyako'
|
6
|
-
require 'Miyako/EXT/raster_scroll'
|
7
|
-
|
8
|
-
include Miyako
|
9
|
-
|
10
|
-
#1�b��Ƀ��X�^�X�N���[���̃t�F�[�h�A�E�g��ݒ肷��
|
11
|
-
wait = WaitCounter.new(1.0).start
|
12
|
-
# 0.05�b���ƂɁA2���C�����A8�s�N�Z���P�ʂ̃��X�^�X�N���[�����s��
|
13
|
-
sprite = Sprite.new(:file => "Animation2/lex_body.png", :type => :ck).centering
|
14
|
-
rs = RasterScroll.new(sprite).start({:lines => 2, :size => 8, :wait=>WaitCounter.new(0.05)})
|
15
|
-
fade = false
|
16
|
-
|
17
|
-
Miyako.main_loop do
|
18
|
-
break if Input.quit_or_escape?
|
19
|
-
rs.effecting? ? rs.update.render : sprite.render
|
20
|
-
if fade == false && wait.finish?
|
21
|
-
#1�b�ゲ�ƂɁA���X�^�X�N���[���̕����k�߂�
|
22
|
-
rs.fade_out(1, WaitCounter.new(1.0))
|
23
|
-
fade = true
|
24
|
-
end
|
1
|
+
# encoding: utf-8
|
2
|
+
# ���X�^�X�N���[���T���v��
|
3
|
+
# 2009.4.12 Cyross Makoto
|
4
|
+
|
5
|
+
require 'Miyako/miyako'
|
6
|
+
require 'Miyako/EXT/raster_scroll'
|
7
|
+
|
8
|
+
include Miyako
|
9
|
+
|
10
|
+
#1�b��Ƀ��X�^�X�N���[���̃t�F�[�h�A�E�g��ݒ肷��
|
11
|
+
wait = WaitCounter.new(1.0).start
|
12
|
+
# 0.05�b���ƂɁA2���C�����A8�s�N�Z���P�ʂ̃��X�^�X�N���[�����s��
|
13
|
+
sprite = Sprite.new(:file => "Animation2/lex_body.png", :type => :ck).centering!
|
14
|
+
rs = RasterScroll.new(sprite).start({:lines => 2, :size => 8, :wait=>WaitCounter.new(0.05)})
|
15
|
+
fade = false
|
16
|
+
|
17
|
+
Miyako.main_loop do
|
18
|
+
break if Input.quit_or_escape?
|
19
|
+
rs.effecting? ? rs.update.render : sprite.render
|
20
|
+
if fade == false && wait.finish?
|
21
|
+
#1�b�ゲ�ƂɁA���X�^�X�N���[���̕����k�߂�
|
22
|
+
rs.fade_out(1, WaitCounter.new(1.0))
|
23
|
+
fade = true
|
24
|
+
end
|
25
25
|
end
|
data/sample/takahashi.rb
CHANGED
@@ -1,42 +1,42 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
# テキスト表示・高橋メソッド形式サンプル
|
3
|
-
# 2009.4.12 Cyross Makoto
|
4
|
-
|
5
|
-
require 'Miyako/miyako'
|
6
|
-
|
7
|
-
include Miyako
|
8
|
-
|
9
|
-
# 高橋メソッド形式文字列の表示
|
10
|
-
shape1 = Shape.takahashi(:font=>Font.serif, :align=>:center, :valign=>:bottom, :size=>Screen.size){|v|
|
11
|
-
size(20){ text "えーびーしー" }
|
12
|
-
cr
|
13
|
-
text "ABC"
|
14
|
-
cr
|
15
|
-
under_line{"でー"} . text("えーえふじー")
|
16
|
-
cr
|
17
|
-
text("DEFG")
|
18
|
-
}
|
19
|
-
|
20
|
-
# 通常形式で表示
|
21
|
-
shape2 = Shape.text(:font=>Font.serif, :align=>:right){|v|
|
22
|
-
size(24){
|
23
|
-
text "えー"
|
24
|
-
color(:yellow){ "びー" }
|
25
|
-
text "しー"
|
26
|
-
}
|
27
|
-
cr
|
28
|
-
text "ABC"
|
29
|
-
cr
|
30
|
-
under_line{"でー"} . text("えーえふじー")
|
31
|
-
cr
|
32
|
-
text("DEFG")
|
33
|
-
}
|
34
|
-
|
35
|
-
# 自動描画配列にshape1、shape2を組み込み
|
36
|
-
Screen.auto_render_array << shape1
|
37
|
-
Screen.auto_render_array << shape2
|
38
|
-
|
39
|
-
Miyako.main_loop do
|
40
|
-
break if Input.quit_or_escape?
|
41
|
-
Drawing.fill(Screen, [100,100,100])
|
42
|
-
end
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
# テキスト表示・高橋メソッド形式サンプル
|
3
|
+
# 2009.4.12 Cyross Makoto
|
4
|
+
|
5
|
+
require 'Miyako/miyako'
|
6
|
+
|
7
|
+
include Miyako
|
8
|
+
|
9
|
+
# 高橋メソッド形式文字列の表示
|
10
|
+
shape1 = Shape.takahashi(:font=>Font.serif, :align=>:center, :valign=>:bottom, :size=>Screen.size){|v|
|
11
|
+
size(20){ text "えーびーしー" }
|
12
|
+
cr
|
13
|
+
text "ABC"
|
14
|
+
cr
|
15
|
+
under_line{"でー"} . text("えーえふじー")
|
16
|
+
cr
|
17
|
+
text("DEFG")
|
18
|
+
}
|
19
|
+
|
20
|
+
# 通常形式で表示
|
21
|
+
shape2 = Shape.text(:font=>Font.serif, :align=>:right){|v|
|
22
|
+
size(24){
|
23
|
+
text "えー"
|
24
|
+
color(:yellow){ "びー" }
|
25
|
+
text "しー"
|
26
|
+
}
|
27
|
+
cr
|
28
|
+
text "ABC"
|
29
|
+
cr
|
30
|
+
under_line{"でー"} . text("えーえふじー")
|
31
|
+
cr
|
32
|
+
text("DEFG")
|
33
|
+
}
|
34
|
+
|
35
|
+
# 自動描画配列にshape1、shape2を組み込み
|
36
|
+
Screen.auto_render_array << shape1
|
37
|
+
Screen.auto_render_array << shape2
|
38
|
+
|
39
|
+
Miyako.main_loop do
|
40
|
+
break if Input.quit_or_escape?
|
41
|
+
Drawing.fill(Screen, [100,100,100])
|
42
|
+
end
|
data/sample/textbox_sample.rb
CHANGED
@@ -1,190 +1,190 @@
|
|
1
|
-
#encoding: utf-8
|
2
|
-
#テキストボックス サンプル
|
3
|
-
#2009 Cyross Makoto
|
4
|
-
|
5
|
-
require 'Miyako/miyako'
|
6
|
-
|
7
|
-
include Miyako
|
8
|
-
|
9
|
-
TEXTBOX_MARGIN = 16
|
10
|
-
|
11
|
-
# pause用カーソルの用意
|
12
|
-
ws = Sprite.new(:file=>"../img/wait_cursor.png", :type=>:ac)
|
13
|
-
ws.oh = ws.ow
|
14
|
-
@ws = SpriteAnimation.new(:sprite=>ws, :wait=>0.2, :pattern_list=>[0,1,2,3,2,1])
|
15
|
-
|
16
|
-
# 選択用カーソルの用意
|
17
|
-
cs = Sprite.new(:file=>"../img/cursor.png", :type=>:ac)
|
18
|
-
cs.oh = cs.ow
|
19
|
-
@cs = SpriteAnimation.new(:sprite=>cs, :wait=>0.2, :pattern_list=>[0,1,2,3,2,1])
|
20
|
-
|
21
|
-
# フォントの用意
|
22
|
-
font = Font.sans_serif
|
23
|
-
font.color = Color[:white]
|
24
|
-
font.size = 16
|
25
|
-
|
26
|
-
# テキストボックスの用意
|
27
|
-
box = TextBox.new(:size=>[32,20], :wait_cursor => @ws, :select_cursor => @cs, :font => font)
|
28
|
-
|
29
|
-
# テキストボックス背景の用意
|
30
|
-
box_bg = Sprite.new(:size => box.size.to_a.map{|v| v + TEXTBOX_MARGIN}, :type => :ac)
|
31
|
-
box_bg.fill([128,0,64,128])
|
32
|
-
|
33
|
-
# Partsをまとめて一つのボックスにする
|
34
|
-
@parts = Parts.new(box.size)
|
35
|
-
@parts[:box_bg] = box_bg
|
36
|
-
@parts[:box] = box
|
37
|
-
@parts[:box_bg].centering
|
38
|
-
@parts[:box].centering
|
39
|
-
@parts.centering
|
40
|
-
|
41
|
-
# 選択肢の作成
|
42
|
-
list = [
|
43
|
-
[Shape.text(:font=>font, :text=>"選択肢1"), nil, 1],
|
44
|
-
[Shape.text(:font=>font, :text=>"選択肢2"), nil, 2],
|
45
|
-
[Shape.text(:font=>font, :text=>"選択肢3"), nil, 3]
|
46
|
-
]
|
47
|
-
@choices = @parts[:box].create_choices_chain(list)
|
48
|
-
|
49
|
-
# カーソルのアニメーションの開始
|
50
|
-
@parts[:box].start
|
51
|
-
|
52
|
-
# 実行させる処理をテキストボックスに登録
|
53
|
-
@parts[:box].execute(@choices){|box, params|
|
54
|
-
box.draw_text "やあ。"
|
55
|
-
box.pause.cr
|
56
|
-
|
57
|
-
box.draw_text "Miyakoのテキストボックスサンプルにようこそ。"
|
58
|
-
box.pause.cr
|
59
|
-
|
60
|
-
box.draw_text "ここでは、テキストボックスの機能をいくつか例示してみます。"
|
61
|
-
box.pause.clear
|
62
|
-
|
63
|
-
box.draw_text "まず、"
|
64
|
-
box.pause.cr
|
65
|
-
|
66
|
-
box.font_size_during(24){ box.draw_text "文字の大きさを変えます。" }
|
67
|
-
box.pause.cr
|
68
|
-
|
69
|
-
box.draw_text "変わりましたね?"
|
70
|
-
box.pause.clear
|
71
|
-
|
72
|
-
box.draw_text "次に、"
|
73
|
-
box.pause.cr
|
74
|
-
|
75
|
-
box.color_during(:blue){ box.draw_text "文字の色を変えてみます。" }
|
76
|
-
box.pause.cr
|
77
|
-
|
78
|
-
box.draw_text "変わりましたね?"
|
79
|
-
box.pause.clear
|
80
|
-
|
81
|
-
box.draw_text "続いて、"
|
82
|
-
box.pause.cr
|
83
|
-
|
84
|
-
box.font_size_during(24){
|
85
|
-
box.color_during(:blue){
|
86
|
-
box.draw_text "文字の大きさを変えながら"
|
87
|
-
box.cr
|
88
|
-
box.draw_text "色を変えてみます。"
|
89
|
-
}
|
90
|
-
}
|
91
|
-
box.pause.cr
|
92
|
-
|
93
|
-
box.draw_text "ほら、簡単でしょ?"
|
94
|
-
box.pause.clear
|
95
|
-
|
96
|
-
box.draw_text "文字の修飾も出来ます。"
|
97
|
-
box.pause.cr
|
98
|
-
|
99
|
-
box.font_bold{ box.draw_text "ボールド体でも" }
|
100
|
-
box.pause.cr
|
101
|
-
|
102
|
-
box.font_italic{ box.draw_text "イタリック体でも(フォントによって可・不可あるかも)" }
|
103
|
-
box.pause.cr
|
104
|
-
|
105
|
-
box.font_under_line{ box.draw_text "下線付きでも" }
|
106
|
-
box.pause.cr
|
107
|
-
|
108
|
-
box.draw_text "OKです"
|
109
|
-
box.pause.clear
|
110
|
-
|
111
|
-
box.draw_text "文字の位置を変更してみましょう。"
|
112
|
-
box.pause.cr
|
113
|
-
|
114
|
-
box.draw_text "一番左に表示しています"
|
115
|
-
box.cr
|
116
|
-
|
117
|
-
text = "真ん中に表示しています"
|
118
|
-
# 文字列の長さ(ピクセル単位)を取得
|
119
|
-
len = box.font.text_size(text)[0]
|
120
|
-
# x座標の位置を変更
|
121
|
-
box.locate.x = (box.size.w-len)/2
|
122
|
-
box.draw_text text
|
123
|
-
box.cr
|
124
|
-
|
125
|
-
text = "右に表示しています"
|
126
|
-
# 文字列の長さ(ピクセル単位)を取得
|
127
|
-
len = box.font.text_size(text)[0]
|
128
|
-
# x座標の位置を変更
|
129
|
-
box.locate.x = (box.size.w-len)
|
130
|
-
box.draw_text text
|
131
|
-
box.cr
|
132
|
-
|
133
|
-
text = "一番下の真ん中に表示しています"
|
134
|
-
# 文字列の長さ(ピクセル単位)を取得
|
135
|
-
len = box.font.text_size(text)
|
136
|
-
# x座標の位置を変更
|
137
|
-
box.locate.x = (box.size.w-len[0])/2
|
138
|
-
box.locate.y = (box.size.h-len[1])
|
139
|
-
box.draw_text text
|
140
|
-
box.cr
|
141
|
-
|
142
|
-
box.pause.clear
|
143
|
-
|
144
|
-
box.draw_text "最後に、選択肢を表示させてみます"
|
145
|
-
box.pause.cr
|
146
|
-
|
147
|
-
# params[0] == @choices
|
148
|
-
box.command params[0]
|
149
|
-
|
150
|
-
box.draw_text "選択結果は#{box.result}ですね。"
|
151
|
-
box.pause.cr.cr
|
152
|
-
|
153
|
-
box.draw_text "だいたい、テキストボックスの使い方が"
|
154
|
-
box.cr
|
155
|
-
|
156
|
-
box.draw_text "おわかりになりましたでしょうか?"
|
157
|
-
box.pause.cr
|
158
|
-
|
159
|
-
box.draw_text "それでは、そろそろ失礼いたします・・・。"
|
160
|
-
box.pause.cr
|
161
|
-
}
|
162
|
-
|
163
|
-
# テキストボックスのまとめ処理
|
164
|
-
def process_textbox
|
165
|
-
@parts[:box].update_animation
|
166
|
-
@parts.render
|
167
|
-
end
|
168
|
-
|
169
|
-
Miyako.main_loop do
|
170
|
-
break if Input.quit_or_escape? || !@parts[:box].execute?
|
171
|
-
# テキストボックスはポーズ中?
|
172
|
-
# ポーズ中はupdateを呼んではいけないので、ポーズ中は直前で回避している
|
173
|
-
if @parts[:box].pause?
|
174
|
-
# 1ボタンを押したとき、ポーズを解除する
|
175
|
-
@parts[:box].release if Input.pushed_any?(:btn1)
|
176
|
-
process_textbox
|
177
|
-
next
|
178
|
-
end
|
179
|
-
# テキストボックスはコマンド選択中?
|
180
|
-
if @parts[:box].selecting?
|
181
|
-
# カーソルの移動
|
182
|
-
@parts[:box].move_cursor(*Input.pushed_amount)
|
183
|
-
# 1ボタンを押したとき、選択状態を解除する
|
184
|
-
@parts[:box].finish_command if Input.pushed_any?(:btn1)
|
185
|
-
process_textbox
|
186
|
-
next
|
187
|
-
end
|
188
|
-
@parts[:box].update
|
189
|
-
process_textbox
|
1
|
+
#encoding: utf-8
|
2
|
+
#テキストボックス サンプル
|
3
|
+
#2009 Cyross Makoto
|
4
|
+
|
5
|
+
require 'Miyako/miyako'
|
6
|
+
|
7
|
+
include Miyako
|
8
|
+
|
9
|
+
TEXTBOX_MARGIN = 16
|
10
|
+
|
11
|
+
# pause用カーソルの用意
|
12
|
+
ws = Sprite.new(:file=>"../img/wait_cursor.png", :type=>:ac)
|
13
|
+
ws.oh = ws.ow
|
14
|
+
@ws = SpriteAnimation.new(:sprite=>ws, :wait=>0.2, :pattern_list=>[0,1,2,3,2,1])
|
15
|
+
|
16
|
+
# 選択用カーソルの用意
|
17
|
+
cs = Sprite.new(:file=>"../img/cursor.png", :type=>:ac)
|
18
|
+
cs.oh = cs.ow
|
19
|
+
@cs = SpriteAnimation.new(:sprite=>cs, :wait=>0.2, :pattern_list=>[0,1,2,3,2,1])
|
20
|
+
|
21
|
+
# フォントの用意
|
22
|
+
font = Font.sans_serif
|
23
|
+
font.color = Color[:white]
|
24
|
+
font.size = 16
|
25
|
+
|
26
|
+
# テキストボックスの用意
|
27
|
+
box = TextBox.new(:size=>[32,20], :wait_cursor => @ws, :select_cursor => @cs, :font => font)
|
28
|
+
|
29
|
+
# テキストボックス背景の用意
|
30
|
+
box_bg = Sprite.new(:size => box.size.to_a.map{|v| v + TEXTBOX_MARGIN}, :type => :ac)
|
31
|
+
box_bg.fill([128,0,64,128])
|
32
|
+
|
33
|
+
# Partsをまとめて一つのボックスにする
|
34
|
+
@parts = Parts.new(box.size)
|
35
|
+
@parts[:box_bg] = box_bg
|
36
|
+
@parts[:box] = box
|
37
|
+
@parts[:box_bg].centering!
|
38
|
+
@parts[:box].centering!
|
39
|
+
@parts.centering!
|
40
|
+
|
41
|
+
# 選択肢の作成
|
42
|
+
list = [
|
43
|
+
[Shape.text(:font=>font, :text=>"選択肢1"), nil, 1],
|
44
|
+
[Shape.text(:font=>font, :text=>"選択肢2"), nil, 2],
|
45
|
+
[Shape.text(:font=>font, :text=>"選択肢3"), nil, 3]
|
46
|
+
]
|
47
|
+
@choices = @parts[:box].create_choices_chain(list)
|
48
|
+
|
49
|
+
# カーソルのアニメーションの開始
|
50
|
+
@parts[:box].start
|
51
|
+
|
52
|
+
# 実行させる処理をテキストボックスに登録
|
53
|
+
@parts[:box].execute(@choices){|box, params|
|
54
|
+
box.draw_text "やあ。"
|
55
|
+
box.pause.cr
|
56
|
+
|
57
|
+
box.draw_text "Miyakoのテキストボックスサンプルにようこそ。"
|
58
|
+
box.pause.cr
|
59
|
+
|
60
|
+
box.draw_text "ここでは、テキストボックスの機能をいくつか例示してみます。"
|
61
|
+
box.pause.clear
|
62
|
+
|
63
|
+
box.draw_text "まず、"
|
64
|
+
box.pause.cr
|
65
|
+
|
66
|
+
box.font_size_during(24){ box.draw_text "文字の大きさを変えます。" }
|
67
|
+
box.pause.cr
|
68
|
+
|
69
|
+
box.draw_text "変わりましたね?"
|
70
|
+
box.pause.clear
|
71
|
+
|
72
|
+
box.draw_text "次に、"
|
73
|
+
box.pause.cr
|
74
|
+
|
75
|
+
box.color_during(:blue){ box.draw_text "文字の色を変えてみます。" }
|
76
|
+
box.pause.cr
|
77
|
+
|
78
|
+
box.draw_text "変わりましたね?"
|
79
|
+
box.pause.clear
|
80
|
+
|
81
|
+
box.draw_text "続いて、"
|
82
|
+
box.pause.cr
|
83
|
+
|
84
|
+
box.font_size_during(24){
|
85
|
+
box.color_during(:blue){
|
86
|
+
box.draw_text "文字の大きさを変えながら"
|
87
|
+
box.cr
|
88
|
+
box.draw_text "色を変えてみます。"
|
89
|
+
}
|
90
|
+
}
|
91
|
+
box.pause.cr
|
92
|
+
|
93
|
+
box.draw_text "ほら、簡単でしょ?"
|
94
|
+
box.pause.clear
|
95
|
+
|
96
|
+
box.draw_text "文字の修飾も出来ます。"
|
97
|
+
box.pause.cr
|
98
|
+
|
99
|
+
box.font_bold{ box.draw_text "ボールド体でも" }
|
100
|
+
box.pause.cr
|
101
|
+
|
102
|
+
box.font_italic{ box.draw_text "イタリック体でも(フォントによって可・不可あるかも)" }
|
103
|
+
box.pause.cr
|
104
|
+
|
105
|
+
box.font_under_line{ box.draw_text "下線付きでも" }
|
106
|
+
box.pause.cr
|
107
|
+
|
108
|
+
box.draw_text "OKです"
|
109
|
+
box.pause.clear
|
110
|
+
|
111
|
+
box.draw_text "文字の位置を変更してみましょう。"
|
112
|
+
box.pause.cr
|
113
|
+
|
114
|
+
box.draw_text "一番左に表示しています"
|
115
|
+
box.cr
|
116
|
+
|
117
|
+
text = "真ん中に表示しています"
|
118
|
+
# 文字列の長さ(ピクセル単位)を取得
|
119
|
+
len = box.font.text_size(text)[0]
|
120
|
+
# x座標の位置を変更
|
121
|
+
box.locate.x = (box.size.w-len)/2
|
122
|
+
box.draw_text text
|
123
|
+
box.cr
|
124
|
+
|
125
|
+
text = "右に表示しています"
|
126
|
+
# 文字列の長さ(ピクセル単位)を取得
|
127
|
+
len = box.font.text_size(text)[0]
|
128
|
+
# x座標の位置を変更
|
129
|
+
box.locate.x = (box.size.w-len)
|
130
|
+
box.draw_text text
|
131
|
+
box.cr
|
132
|
+
|
133
|
+
text = "一番下の真ん中に表示しています"
|
134
|
+
# 文字列の長さ(ピクセル単位)を取得
|
135
|
+
len = box.font.text_size(text)
|
136
|
+
# x座標の位置を変更
|
137
|
+
box.locate.x = (box.size.w-len[0])/2
|
138
|
+
box.locate.y = (box.size.h-len[1])
|
139
|
+
box.draw_text text
|
140
|
+
box.cr
|
141
|
+
|
142
|
+
box.pause.clear
|
143
|
+
|
144
|
+
box.draw_text "最後に、選択肢を表示させてみます"
|
145
|
+
box.pause.cr
|
146
|
+
|
147
|
+
# params[0] == @choices
|
148
|
+
box.command params[0]
|
149
|
+
|
150
|
+
box.draw_text "選択結果は#{box.result}ですね。"
|
151
|
+
box.pause.cr.cr
|
152
|
+
|
153
|
+
box.draw_text "だいたい、テキストボックスの使い方が"
|
154
|
+
box.cr
|
155
|
+
|
156
|
+
box.draw_text "おわかりになりましたでしょうか?"
|
157
|
+
box.pause.cr
|
158
|
+
|
159
|
+
box.draw_text "それでは、そろそろ失礼いたします・・・。"
|
160
|
+
box.pause.cr
|
161
|
+
}
|
162
|
+
|
163
|
+
# テキストボックスのまとめ処理
|
164
|
+
def process_textbox
|
165
|
+
@parts[:box].update_animation
|
166
|
+
@parts.render
|
167
|
+
end
|
168
|
+
|
169
|
+
Miyako.main_loop do
|
170
|
+
break if Input.quit_or_escape? || !@parts[:box].execute?
|
171
|
+
# テキストボックスはポーズ中?
|
172
|
+
# ポーズ中はupdateを呼んではいけないので、ポーズ中は直前で回避している
|
173
|
+
if @parts[:box].pause?
|
174
|
+
# 1ボタンを押したとき、ポーズを解除する
|
175
|
+
@parts[:box].release if Input.pushed_any?(:btn1)
|
176
|
+
process_textbox
|
177
|
+
next
|
178
|
+
end
|
179
|
+
# テキストボックスはコマンド選択中?
|
180
|
+
if @parts[:box].selecting?
|
181
|
+
# カーソルの移動
|
182
|
+
@parts[:box].move_cursor(*Input.pushed_amount)
|
183
|
+
# 1ボタンを押したとき、選択状態を解除する
|
184
|
+
@parts[:box].finish_command if Input.pushed_any?(:btn1)
|
185
|
+
process_textbox
|
186
|
+
next
|
187
|
+
end
|
188
|
+
@parts[:box].update
|
189
|
+
process_textbox
|
190
190
|
end
|