ruby-miyako 2.1.0 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README +275 -20
- data/extern.h +21 -1
- data/install_miyako.rb +5 -3
- data/lib/Miyako/API/audio.rb +11 -6
- data/lib/Miyako/API/basic_data.rb +0 -985
- data/lib/Miyako/API/bitmap.rb +19 -22
- data/lib/Miyako/API/choices.rb +203 -69
- data/lib/Miyako/API/collision.rb +451 -9
- data/lib/Miyako/API/color.rb +177 -0
- data/lib/Miyako/API/diagram.rb +18 -20
- data/lib/Miyako/API/fixedmap.rb +207 -73
- data/lib/Miyako/API/font.rb +111 -18
- data/lib/Miyako/API/i_yuki.rb +1201 -0
- data/lib/Miyako/API/input.rb +65 -0
- data/lib/Miyako/API/layout.rb +41 -29
- data/lib/Miyako/API/map.rb +202 -157
- data/lib/Miyako/API/map_event.rb +86 -19
- data/lib/Miyako/API/map_struct.rb +268 -0
- data/lib/Miyako/API/modules.rb +136 -37
- data/lib/Miyako/API/movie.rb +8 -8
- data/lib/Miyako/API/parts.rb +63 -20
- data/lib/Miyako/API/plane.rb +4 -4
- data/lib/Miyako/API/screen.rb +16 -8
- data/lib/Miyako/API/sprite.rb +290 -23
- data/lib/Miyako/API/sprite_animation.rb +23 -11
- data/lib/Miyako/API/sprite_list.rb +406 -183
- data/lib/Miyako/API/story.rb +4 -65
- data/lib/Miyako/API/struct_point.rb +157 -0
- data/lib/Miyako/API/struct_rect.rb +233 -0
- data/lib/Miyako/API/struct_segment.rb +641 -0
- data/lib/Miyako/API/struct_size.rb +158 -0
- data/lib/Miyako/API/struct_square.rb +253 -0
- data/lib/Miyako/API/textbox.rb +49 -35
- data/lib/Miyako/API/viewport.rb +5 -5
- data/lib/Miyako/API/wait_counter.rb +350 -0
- data/lib/Miyako/API/yuki.rb +95 -60
- data/lib/Miyako/EXT/raster_scroll.rb +30 -8
- data/lib/Miyako/EXT/slides.rb +6 -6
- data/lib/Miyako/miyako.rb +25 -11
- data/lib/miyako.rb +28 -0
- data/lib/miyako_require_only.rb +35 -0
- data/miyako_basicdata.c +201 -17
- data/miyako_collision.c +315 -6
- data/miyako_diagram.c +331 -0
- data/miyako_drawing.c +26 -7
- data/miyako_font.c +259 -129
- data/miyako_input_audio.c +24 -14
- data/miyako_layout.c +106 -8
- data/miyako_no_katana.c +398 -171
- data/miyako_sprite2.c +275 -38
- data/miyako_transform.c +113 -107
- data/miyako_utility.c +34 -48
- data/miyako_yuki.c +241 -0
- data/sample/Diagram_sample/diagram_sample_yuki2.rb +30 -30
- data/sample/Room3/blue.rb +19 -19
- data/sample/Room3/green.rb +9 -9
- data/sample/Room3/main.rb +12 -12
- data/sample/Room3/red.rb +12 -12
- data/sample/Room3/title.rb +15 -10
- data/sample/collision_test2.rb +2 -1
- data/sample/fixed_map_test/fixed_map_sample.rb +7 -6
- data/sample/map_test/main_scene.rb +12 -10
- data/sample/map_test/map_manager.rb +14 -13
- data/sample/rasterscroll.rb +5 -5
- data/sample/takahashi.rb +3 -3
- data/sample/textbox_sample.rb +7 -6
- data/sample/transform.rb +2 -1
- data/uninstall_miyako.rb +4 -1
- data/win/miyako_no_katana.so +0 -0
- metadata +15 -4
- data/lib/Miyako/EXT/miyako_cairo.rb +0 -62
- data/sample/cairo_sample.rb +0 -25
data/lib/Miyako/API/bitmap.rb
CHANGED
@@ -25,37 +25,34 @@ module Miyako
|
|
25
25
|
#==ビットマップ(画像)管理クラス
|
26
26
|
#SDLのSurfaceクラスインスタンスを管理するクラス
|
27
27
|
class Bitmap
|
28
|
-
|
29
|
-
|
30
|
-
#
|
31
|
-
#
|
28
|
+
#===スプライトの元になる画像を生成する
|
29
|
+
#幅・高さを渡すことにより、SDL::Surfaceクラスのインスタンスを生成する。
|
30
|
+
#_w_:: 画像の幅。単位はピクセル
|
31
|
+
#_h_:: 画像の幅。単位はピクセル
|
32
|
+
#返却値:: 生成したSDL::Surfaceクラスのインスタンス(αチャネル付き)
|
33
|
+
def Bitmap.create(w, h)
|
34
|
+
flag = SDL::HWSURFACE | SDL::SRCCOLORKEY | SDL::SRCALPHA
|
32
35
|
# エンディアン判別
|
33
36
|
if [1].pack("V*") == [1].pack("L*") # リトルエンディアン?
|
34
|
-
bitmap = SDL::Surface.new(flag, w, h, 32, 0xff0000, 0xff00, 0xff, 0xff000000)
|
37
|
+
bitmap = SDL::Surface.new(flag, w, h, 32, 0xff0000, 0xff00, 0xff, 0xff000000).display_format_alpha
|
35
38
|
else # ビッグエンディアン
|
36
|
-
bitmap = SDL::Surface.new(flag, w, h, 32, 0xff00, 0xff0000, 0xff000000, 0xff)
|
39
|
+
bitmap = SDL::Surface.new(flag, w, h, 32, 0xff00, 0xff0000, 0xff000000, 0xff).display_format_alpha
|
37
40
|
end
|
38
41
|
bitmap
|
39
42
|
end
|
40
43
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
#
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
# 0xff00, 0xff0000, 0xff000000, 0xff)
|
50
|
-
# end
|
51
|
-
# bitmap
|
52
|
-
# end
|
53
|
-
|
54
|
-
def Bitmap.load(filename) #:nodoc:
|
44
|
+
#===指定のファイルから画像を読み込む
|
45
|
+
#指定したファイル名(パス)から画像データを読みこみ、SDL::Surfaceクラスのインスタンスを生成する。
|
46
|
+
#存在しないパスを渡したときはMiyakoIOErrorを発生させる。
|
47
|
+
#ロードに失敗したときは例外MiyakoFileFormatErrorを発生させる。
|
48
|
+
#_filename_:: 画像のファイル名
|
49
|
+
#返却値:: 生成したSDL::Surfaceクラスのインスタンス(αチャネル付き)。
|
50
|
+
def Bitmap.load(filename)
|
51
|
+
raise MiyakoIOError, "can't find file! #{filename}" unless File.exist?(filename)
|
55
52
|
begin
|
56
|
-
return SDL::Surface.load(filename)
|
53
|
+
return SDL::Surface.load(filename).display_format_alpha
|
57
54
|
rescue SDL::Error
|
58
|
-
raise MiyakoFileFormatError, "Illegal file format! collect? #{
|
55
|
+
raise MiyakoFileFormatError, "Illegal file format! collect? #{filename}"
|
59
56
|
end
|
60
57
|
return nil
|
61
58
|
end
|
data/lib/Miyako/API/choices.rb
CHANGED
@@ -21,6 +21,109 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
21
21
|
=end
|
22
22
|
|
23
23
|
module Miyako
|
24
|
+
require 'delegate'
|
25
|
+
|
26
|
+
class ChoiceStruct < Struct
|
27
|
+
include SpriteBase
|
28
|
+
include Animation
|
29
|
+
include Layout
|
30
|
+
|
31
|
+
attr_accessor :visible #レンダリングの可否(true->描画 false->非描画)
|
32
|
+
|
33
|
+
def initialize(*params)
|
34
|
+
super(*params)
|
35
|
+
init_layout
|
36
|
+
@visible = true
|
37
|
+
tsize = self.broad_rect.size
|
38
|
+
set_layout_size(*tsize)
|
39
|
+
end
|
40
|
+
|
41
|
+
def update_layout_position #:nodoc:
|
42
|
+
self[0].move_to!(*@layout.pos)
|
43
|
+
self[1].move_to!(*@layout.pos) if self[1] && self[0] != self[1]
|
44
|
+
self[2].move_to!(*@layout.pos) if self[2]
|
45
|
+
end
|
46
|
+
|
47
|
+
def process_sprites #:nodoc:
|
48
|
+
yield(self[0])
|
49
|
+
yield(self[1]) if self[1] && self[0] != self[1]
|
50
|
+
yield(self[2]) if self[2]
|
51
|
+
end
|
52
|
+
|
53
|
+
def start
|
54
|
+
return unless self[3].call
|
55
|
+
process_sprites{|spr| spr.start }
|
56
|
+
end
|
57
|
+
|
58
|
+
def stop
|
59
|
+
return unless self[3].call
|
60
|
+
process_sprites{|spr| spr.stop }
|
61
|
+
end
|
62
|
+
|
63
|
+
def reset
|
64
|
+
return unless self[3].call
|
65
|
+
process_sprites{|spr| spr.reset }
|
66
|
+
end
|
67
|
+
|
68
|
+
def update_animation
|
69
|
+
return unless self[3].call
|
70
|
+
process_sprites{|spr| spr.update_animation }
|
71
|
+
end
|
72
|
+
|
73
|
+
def render_src #:nodoc:
|
74
|
+
sprite = self[0]
|
75
|
+
if self[4]
|
76
|
+
sprite = self[1] if (self[5] && self[1])
|
77
|
+
elsif self[2]
|
78
|
+
sprite = self[2]
|
79
|
+
end
|
80
|
+
return sprite
|
81
|
+
end
|
82
|
+
|
83
|
+
def render
|
84
|
+
return unless @visible
|
85
|
+
return unless self[3].call
|
86
|
+
render_src.render
|
87
|
+
end
|
88
|
+
|
89
|
+
def render_to(dst)
|
90
|
+
return unless @visible
|
91
|
+
return unless self[3].call
|
92
|
+
render_src..render_to(dst)
|
93
|
+
end
|
94
|
+
|
95
|
+
#===レイアウト空間の大きさを更新する
|
96
|
+
# 新たにスプライトを登録したときに、全体の大きさをレイアウト空間の大きさとして更新する
|
97
|
+
#返却値:: 自分自身を返す
|
98
|
+
def update_layout_size
|
99
|
+
trect = self.broad_rect
|
100
|
+
set_layout_size(*trect.size)
|
101
|
+
self
|
102
|
+
end
|
103
|
+
|
104
|
+
#===選択肢の最大の大きさを矩形で取得する
|
105
|
+
# 現在登録しているスプライトから最大の矩形(broad_rect)を求める
|
106
|
+
#返却値:: 生成された矩形(Rect構造体のインスタンス)
|
107
|
+
def broad_rect
|
108
|
+
return self[0].rect if (self[1].nil? && self[2].nil?)
|
109
|
+
list = [self[0]]
|
110
|
+
list << self[1] if (self[1] && self[0] != self[1])
|
111
|
+
list << self[2] if self[2]
|
112
|
+
xx = []
|
113
|
+
yy = []
|
114
|
+
list.each{|ch|
|
115
|
+
r = ch.rect
|
116
|
+
xx << r.x
|
117
|
+
yy << r.y
|
118
|
+
xx << r.x + r.w
|
119
|
+
yy << r.y + r.h
|
120
|
+
}
|
121
|
+
min_x, max_x = xx.minmax
|
122
|
+
min_y, max_y = yy.minmax
|
123
|
+
return Rect.new(min_x, min_y, max_x-min_x, max_y-min_y)
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
24
127
|
#==選択肢構造体
|
25
128
|
# 選択肢を構成する要素の集合
|
26
129
|
#
|
@@ -28,8 +131,10 @@ module Miyako
|
|
28
131
|
# 選択肢を表示させるときは、body 自体の表示位置を変更させる必要がある
|
29
132
|
#
|
30
133
|
#_body_:: 選択肢を示す画像
|
31
|
-
#_body_selected_:: 選択肢を示す画像(選択時)
|
32
|
-
#
|
134
|
+
#_body_selected_:: 選択肢を示す画像(選択時)
|
135
|
+
#_body_disable_:: 選択肢を示す画像(選択不可時)
|
136
|
+
#_condition_:: 選択肢を表示できる条件を記述したブロック
|
137
|
+
#_enable_:: 選択肢を選択できるときはtrue、不可の時はfalse
|
33
138
|
#_selected_:: 選択肢が選択されているときはtrue、選択されていないときはfalse
|
34
139
|
#_result_:: 選択した結果を示すインスタンス
|
35
140
|
#_left_:: 左方向を選択したときに参照するChoice構造体のインスタンス
|
@@ -41,32 +146,47 @@ module Miyako
|
|
41
146
|
#_end_select_proc_:: この選択肢を選択したときに優先的に処理するブロック。
|
42
147
|
#ブロックは1つの引数を取る(コマンド選択テキストボックス))。
|
43
148
|
#デフォルトはnil(何もしない)
|
44
|
-
|
149
|
+
#_name_:: 選択肢の名前。名前を明示的に指定しないときは、オブジェクトIDを文字列化したものが入る
|
150
|
+
Choice = ChoiceStruct.new(:body, :body_selected, :body_disable,
|
151
|
+
:condition, :enable, :selected, :result,
|
152
|
+
:left, :right, :up, :down,
|
153
|
+
:base, :attribute, :end_select_proc, :name)
|
45
154
|
|
46
155
|
#==選択肢を管理するクラス
|
47
156
|
# 選択肢は、Shapeクラスから生成したスプライトもしくは画像で構成される
|
48
|
-
class Choices
|
49
|
-
include Layout
|
157
|
+
class Choices < Delegator
|
50
158
|
include SpriteBase
|
51
159
|
include Animation
|
52
|
-
include
|
53
|
-
extend Forwardable
|
160
|
+
include Layout
|
54
161
|
|
55
162
|
attr_accessor :visible #レンダリングの可否(true->描画 false->非描画)
|
163
|
+
attr_reader :choices #選択肢配列の集合
|
164
|
+
attr_reader :name_to_choice #名前と選択肢を関連づけているハッシュ
|
165
|
+
attr_reader :layout_spaces #選択肢の位置決めに使うレイアウト空間をハッシュで管理
|
56
166
|
|
57
167
|
# インスタンスを生成する
|
58
168
|
# 返却値:: 生成された Choices クラスのインスタンス
|
59
169
|
def initialize
|
60
170
|
init_layout
|
61
171
|
@choices = []
|
172
|
+
@name_to_choice = {}
|
173
|
+
@layout_spaces = {}
|
62
174
|
@now = nil
|
63
175
|
@non_select = false
|
64
176
|
@last_selected = nil
|
65
177
|
@result = nil
|
66
178
|
@visible = true
|
179
|
+
@org_pos = Point.new(0,0)
|
67
180
|
set_layout_size(1, 1)
|
68
181
|
end
|
69
|
-
|
182
|
+
|
183
|
+
def __getobj__
|
184
|
+
@choices
|
185
|
+
end
|
186
|
+
|
187
|
+
def __setobj__(obj)
|
188
|
+
end
|
189
|
+
|
70
190
|
def initialize_copy(obj) #:nodoc:
|
71
191
|
@choices = @choices.dup
|
72
192
|
copy_layout
|
@@ -75,54 +195,65 @@ module Miyako
|
|
75
195
|
def update_layout_position #:nodoc:
|
76
196
|
dx = @layout.pos[0] - rect[0]
|
77
197
|
dy = @layout.pos[1] - rect[1]
|
78
|
-
@choices.each{|ch|
|
79
|
-
ch.each{|cc|
|
80
|
-
cc.body.move!(dx, dy)
|
81
|
-
cc.body_selected.move!(dx, dy) if cc.body_selected && cc.body != cc.body_selected
|
82
|
-
}
|
83
|
-
}
|
198
|
+
@choices.each{|ch| ch.each{|cc| cc.move!(dx, dy) } }
|
84
199
|
end
|
85
200
|
|
86
201
|
# 選択肢を作成する
|
87
202
|
# Choice 構造体のインスタンスを作成する
|
88
203
|
# 構造体には、引数bodyと、必ず true を返す条件ブロックが登録されている。残りは nil
|
204
|
+
# name引数の省略時にはnilが渡され、内部で、オブジェクトIDを文字列化したものを入れる
|
89
205
|
#_body_:: 選択肢を示す画像
|
90
206
|
#_body_selected_:: 選択肢を示す画像(選択時)。デフォルトはnil
|
91
207
|
#_selected_:: 生成時に選択されているときはtrue、そうでないときはfalseを設定する
|
208
|
+
#_body_disable_:: 選択肢を示す画像(選択不可時)。デフォルトはnil
|
209
|
+
#_enable_:: 生成時に選択可能なときはtrue、不可の時はfalseを設定する
|
210
|
+
#_name_:: 選択肢の名前
|
92
211
|
#返却値:: 生成された Choice構造体のインスタンス
|
93
|
-
def Choices.create_choice(body, body_selected = nil, selected = false)
|
94
|
-
choice = Choice.new(body, body_selected, Proc.new{ true }, selected,
|
95
|
-
nil, nil, nil, nil, nil, nil, {}, nil)
|
212
|
+
def Choices.create_choice(body, body_selected = nil, selected = false, body_disable = nil, enable = true, name = nil)
|
213
|
+
choice = Choice.new(body, body_selected, body_disable, Proc.new{ true }, enable, selected,
|
214
|
+
nil, nil, nil, nil, nil, nil, {}, nil, nil)
|
96
215
|
choice.left = choice
|
97
216
|
choice.right = choice
|
98
217
|
choice.up = choice
|
99
218
|
choice.down = choice
|
219
|
+
choice.name = name || choice.object_id.to_s
|
100
220
|
return choice
|
101
221
|
end
|
102
222
|
|
103
|
-
|
223
|
+
#=== 選択肢を登録する
|
224
|
+
# 選択肢集合(画面に一度に表示する選択肢群、Choice 構造体の配列)を選択肢リストに登録する
|
225
|
+
# またこのとき、対象の選択肢をChoices#[]メソッドで参照できるようになる
|
226
|
+
# _choices_:: 選択肢(Choice構造体)の配列
|
227
|
+
# 返却値:: レシーバ
|
104
228
|
def create_choices(choices)
|
105
|
-
choices.each{|v|
|
229
|
+
choices.each{|v|
|
230
|
+
v.base = choices
|
231
|
+
@name_to_choice[v.name] = v
|
232
|
+
}
|
106
233
|
@choices.push(choices)
|
107
234
|
@last_selected = @choices[0][0] if (@choices.length == 1 && @last_selcted == nil)
|
108
235
|
rect = self.broad_rect
|
109
|
-
set_layout_size(rect.
|
236
|
+
set_layout_size(*rect.size)
|
110
237
|
return self
|
111
238
|
end
|
112
239
|
|
113
|
-
|
240
|
+
#=== 名前から選択肢を参照する
|
241
|
+
#create_choicesメソッドで登録した選択肢を、名前からもとめる
|
242
|
+
#登録されていない名前を渡したときはnilを返す
|
243
|
+
#_name_:: 登録されているの名前。文字列
|
244
|
+
#返却値:: 対応する選択肢インスタンス
|
245
|
+
def regist_layout_space(name, layout_space)
|
246
|
+
@layout_spaces[name] = layout_space
|
247
|
+
layout_space.snap(self)
|
248
|
+
end
|
249
|
+
|
250
|
+
#=== 選択肢データを解放する
|
114
251
|
def dispose
|
115
252
|
@choices.each{|c| c.clear }
|
116
253
|
@choices.clear
|
117
254
|
@choices = []
|
118
255
|
end
|
119
256
|
|
120
|
-
def each #:nodoc:
|
121
|
-
@choices.each{|ch| yield ch }
|
122
|
-
end
|
123
|
-
|
124
|
-
def_delegators(:@choices, :push, :pop, :shift, :unshift, :[], :[]=, :clear, :length)
|
125
|
-
|
126
257
|
#===選択を開始しているかどうかを問い合わせる
|
127
258
|
# start_choiceメソッドを呼び出して、コマンド選択が始まっているかどうかを問い合わせ、始まっているときはtrueを返す
|
128
259
|
#返却値:: 選択を開始しているときはtrueを返す
|
@@ -226,6 +357,15 @@ module Miyako
|
|
226
357
|
return !@non_select
|
227
358
|
end
|
228
359
|
|
360
|
+
#===選択肢が選択可能かどうかを問い合わせる
|
361
|
+
#現在指している選択肢が選択可能か選択不可かを問い合わせる
|
362
|
+
#返却値:: 選択可能ならtrue、選択不可ならfalseを返す
|
363
|
+
def enable?
|
364
|
+
return false if @non_select
|
365
|
+
return false unless @now
|
366
|
+
return @now.enable
|
367
|
+
end
|
368
|
+
|
229
369
|
#===選択肢を変更する
|
230
370
|
#指定の位置の現在の選択状態を、選択状態にする
|
231
371
|
#_x_:: x方向位置
|
@@ -291,14 +431,10 @@ module Miyako
|
|
291
431
|
#ブロックの引数は、|インスタンスのSpriteUnit, 画面のSpriteUnit|となる。
|
292
432
|
#visibleメソッドの値がfalseのとき、選択が開始されていない時は描画されない。
|
293
433
|
#返却値:: 自分自身を返す
|
294
|
-
def render
|
434
|
+
def render
|
295
435
|
return unless @visible
|
296
436
|
return self unless @now
|
297
|
-
@now.base.each{|c|
|
298
|
-
((c.body_selected && c.selected) ?
|
299
|
-
c.body_selected.render(&block) :
|
300
|
-
c.body.render(&block)) if c.condition.call
|
301
|
-
}
|
437
|
+
@now.base.each{|c| c.render }
|
302
438
|
return self
|
303
439
|
end
|
304
440
|
|
@@ -309,14 +445,10 @@ module Miyako
|
|
309
445
|
#visibleメソッドの値がfalseのとき、選択が開始されていない時は描画されない。
|
310
446
|
#_dst_:: 描画対象の画像インスタンス
|
311
447
|
#返却値:: 自分自身を返す
|
312
|
-
def render_to(dst
|
448
|
+
def render_to(dst)
|
313
449
|
return self unless @visible
|
314
450
|
return self unless @now
|
315
|
-
@now.base.each{|c|
|
316
|
-
((c.body_selected && c.selected) ?
|
317
|
-
c.body_selected.render_to(dst, &block) :
|
318
|
-
c.body.render_to(dst, &block)) if c.condition.call
|
319
|
-
}
|
451
|
+
@now.base.each{|c| c.render_to(dst) }
|
320
452
|
return self
|
321
453
|
end
|
322
454
|
|
@@ -336,6 +468,16 @@ module Miyako
|
|
336
468
|
return sprite
|
337
469
|
end
|
338
470
|
|
471
|
+
#===レイアウト空間の大きさを更新する
|
472
|
+
# 生成後、選択肢を追加した後の全体の大きさをレイアウト空間の大きさとして更新する
|
473
|
+
# ただし、create_choicesめそっどを呼び出したときはこのメソッドを自動的に呼び出している
|
474
|
+
#返却値:: 自分自身を返す
|
475
|
+
def update_layout_size
|
476
|
+
trect = self.broad_rect
|
477
|
+
set_layout_size(*trect.size)
|
478
|
+
self
|
479
|
+
end
|
480
|
+
|
339
481
|
#===現在登録している選択肢の最大の大きさを矩形で取得する
|
340
482
|
# 現在インスタンスが所持している選択肢全てから左上座標、右下座標を取得し、矩形の形式で返す
|
341
483
|
# 但し、選択肢が一つも登録されていない時はRect(0,0,1,1)を返す
|
@@ -346,17 +488,16 @@ module Miyako
|
|
346
488
|
yy = []
|
347
489
|
@choices.each{|ch|
|
348
490
|
ch.each{|cc|
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
end
|
491
|
+
r = cc.broad_rect
|
492
|
+
xx << r.x
|
493
|
+
yy << r.y
|
494
|
+
xx << r.x + r.w
|
495
|
+
yy << r.y + r.h
|
355
496
|
}
|
356
497
|
}
|
357
498
|
min_x, max_x = xx.minmax
|
358
499
|
min_y, max_y = yy.minmax
|
359
|
-
return Rect.new(min_x, min_y, max_x-min_x
|
500
|
+
return Rect.new(min_x, min_y, max_x-min_x, max_y-min_y)
|
360
501
|
end
|
361
502
|
|
362
503
|
#===現在登録している選択肢の大きさを矩形で取得する
|
@@ -427,12 +568,7 @@ module Miyako
|
|
427
568
|
# 返却値:: 自分自身を返す
|
428
569
|
def start
|
429
570
|
return self unless @now
|
430
|
-
@now.base.each{|c|
|
431
|
-
if c.condition.call
|
432
|
-
c.body.start
|
433
|
-
c.body_selected.start if c.body != c.body_selected
|
434
|
-
end
|
435
|
-
}
|
571
|
+
@now.base.each{|c| c.start }
|
436
572
|
return self
|
437
573
|
end
|
438
574
|
|
@@ -441,12 +577,7 @@ module Miyako
|
|
441
577
|
# 返却値:: 自分自身を返す
|
442
578
|
def stop
|
443
579
|
return self unless @now
|
444
|
-
@now.base.each{|c|
|
445
|
-
if c.condition.call
|
446
|
-
c.body.stop
|
447
|
-
c.body_selected.stop if c.body != c.body_selected
|
448
|
-
end
|
449
|
-
}
|
580
|
+
@now.base.each{|c| c.stop }
|
450
581
|
return self
|
451
582
|
end
|
452
583
|
|
@@ -455,12 +586,7 @@ module Miyako
|
|
455
586
|
# 返却値:: 自分自身を返す
|
456
587
|
def reset
|
457
588
|
return self unless @now
|
458
|
-
@now.base.each{|c|
|
459
|
-
if c.condition.call
|
460
|
-
c.body.reset
|
461
|
-
c.body_selected.reset if c.body != c.body_selected
|
462
|
-
end
|
463
|
-
}
|
589
|
+
@now.base.each{|c| c.reset }
|
464
590
|
return self
|
465
591
|
end
|
466
592
|
|
@@ -471,11 +597,19 @@ module Miyako
|
|
471
597
|
# ただし、現在選択中の配列リストではないときは[false]を返す
|
472
598
|
def update_animation
|
473
599
|
return [false] unless @now
|
474
|
-
@now.base.map{|c|
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
600
|
+
@now.base.map{|c| c.update_animation }
|
601
|
+
end
|
602
|
+
|
603
|
+
#=== mixin されたインスタンスの部分矩形幅を取得する
|
604
|
+
#返却値:: インスタンスの幅(デフォルトは0)
|
605
|
+
def ow
|
606
|
+
return self.size[0]
|
607
|
+
end
|
608
|
+
|
609
|
+
#=== mixin されたインスタンスの部分矩形高を取得する
|
610
|
+
#返却値:: インスタンスの高さ(デフォルトは0)
|
611
|
+
def oh
|
612
|
+
return self.size[1]
|
479
613
|
end
|
480
614
|
end
|
481
615
|
end
|