ruby-miyako 2.1.10 → 2.1.11
Sign up to get free protection for your applications and to get access to all the features.
- data/README +57 -3
- data/lib/Miyako/API/choices.rb +17 -3
- data/lib/Miyako/API/i_yuki.rb +136 -21
- data/lib/Miyako/API/modules.rb +60 -13
- data/lib/Miyako/API/sprite_animation.rb +32 -37
- data/lib/Miyako/API/sprite_list.rb +34 -0
- data/lib/Miyako/API/textbox.rb +1 -1
- data/lib/Miyako/API/yuki.rb +136 -22
- data/lib/Miyako/EXT/drawer.rb +117 -0
- data/lib/Miyako/miyako.rb +2 -2
- data/miyako_layout.c +11 -11
- data/miyako_no_katana.c +3 -1
- data/miyako_sprite2.c +31 -15
- data/sample/drawer_sample.rb +67 -0
- data/win/miyako_no_katana.so +0 -0
- metadata +4 -2
data/README
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
*******************************************************************************
|
2
2
|
【 作者名 】 サイロス誠
|
3
3
|
【 ソフト名 】 Interactive Media Authoring System "Miyako"
|
4
|
-
【 バージョン 】 2.1.
|
5
|
-
【 作成日 】 2010/
|
4
|
+
【 バージョン 】 2.1.11
|
5
|
+
【 作成日 】 2010/05/01
|
6
6
|
【 種別 】 フリーウェア
|
7
7
|
【 開発言語 】 Ruby 1.9.1
|
8
8
|
【 ランタイム 】 Ruby 1.9.1~,Ruby/SDL 2.1~,SDL
|
@@ -15,7 +15,7 @@
|
|
15
15
|
|
16
16
|
【 注意事項 】
|
17
17
|
|
18
|
-
本バージョンは、2.1.
|
18
|
+
本バージョンは、2.1.11公式リリース版です。
|
19
19
|
本バージョンでは、ドキュメント・リファレンスは不十分ですが、「サイログ。」内や、サンプルプログラムの紹介等で随時ドキュメントを公開して行きます。
|
20
20
|
(RDOC化を進めていますので、我こそはと思う方は是非・・・)
|
21
21
|
|
@@ -1673,5 +1673,59 @@ v2.1.10(2010.04.20)
|
|
1673
1673
|
<ドキュメント>
|
1674
1674
|
・リファレンスマニュアルの項目追加
|
1675
1675
|
|
1676
|
+
v2.1.11(2010.05.01)
|
1677
|
+
<バグ修正>
|
1678
|
+
・エラーメッセージの修正(ScenarioEngine,InitiativeScenarioEngine)
|
1679
|
+
<機能改善>
|
1680
|
+
<仕様変更>
|
1681
|
+
・ScenarioEngine/InitiativeScenarioEngine#commandメソッドの見直し
|
1682
|
+
・インタフェース使用に変化なし
|
1683
|
+
・配列の中身がChoicesクラスオブジェクト(の配列)のときにも対応した
|
1684
|
+
・Choice構造体の:rightと:upの順番を入れ替え
|
1685
|
+
・SpriteAnimation.newメソッドの:sprite引数に加えて、:sprites引数に置き換え可能とした
|
1686
|
+
・SpriteAnimation#render,render_toの高速化を廃止
|
1687
|
+
・SpriteAnimation#newに渡すスプライトの範囲を拡大(要素はSpriteBase・Layoutモジュールを取り込んだ物なら何でも良くなった)
|
1688
|
+
<ファイル追加>
|
1689
|
+
・lib/EXT/drawer.rb
|
1690
|
+
・sample/drawer_sample.rb
|
1691
|
+
<ファイル削除>
|
1692
|
+
<グローバル変数追加>
|
1693
|
+
<定数追加>
|
1694
|
+
<定数削除>
|
1695
|
+
<構造体追加>
|
1696
|
+
<クラス追加>
|
1697
|
+
Drawer
|
1698
|
+
<モジュール追加>
|
1699
|
+
<mixin>
|
1700
|
+
<クラス・モジュールメソッド追加>
|
1701
|
+
<クラス・モジュールメソッド廃止>
|
1702
|
+
<モジュール関数追加>
|
1703
|
+
・SpriteBase#.ox=
|
1704
|
+
・SpriteBase#.oy=
|
1705
|
+
・SpriteBase#.ow=
|
1706
|
+
・SpriteBase#.oh=
|
1707
|
+
・SpriteArray#.render_xy
|
1708
|
+
・SpriteArray#.render_xy_to
|
1709
|
+
<モジュール関数廃止>
|
1710
|
+
<インスタンスメソッド追加>
|
1711
|
+
・ScenarioEngine::Command#to_choice
|
1712
|
+
・ScenarioEngine::CommandEx#to_choice
|
1713
|
+
・ScenarioEngine#start_all
|
1714
|
+
・ScenarioEngine#stop_all
|
1715
|
+
・ScenarioEngine#reset_all
|
1716
|
+
・ScenarioEngine#animation_all
|
1717
|
+
・InitiativeScenarioEngine::Command#to_choice
|
1718
|
+
・InitiativeScenarioEngine::CommandEx#to_choice
|
1719
|
+
・InitiativeScenarioEngine#start_all
|
1720
|
+
・InitiativeScenarioEngine#stop_all
|
1721
|
+
・InitiativeScenarioEngine#reset_all
|
1722
|
+
・InitiativeScenarioEngine#animation_all
|
1723
|
+
・Choice#arrow
|
1724
|
+
・SpriteList#render_xy
|
1725
|
+
・SpriteList#render_xy_to
|
1726
|
+
<インスタンスメソッド廃止>
|
1727
|
+
<ドキュメント>
|
1728
|
+
・リファレンスマニュアルの項目追加
|
1729
|
+
|
1676
1730
|
*******************************************************************************
|
1677
1731
|
このReadMeファイルは「れ~どめ~えじた~」によって作成されました。
|
data/lib/Miyako/API/choices.rb
CHANGED
@@ -26,6 +26,8 @@ module Miyako
|
|
26
26
|
include Animation
|
27
27
|
include Layout
|
28
28
|
|
29
|
+
DIRECTION_LIST = [:up, :down, :left, :right, :base]
|
30
|
+
|
29
31
|
attr_accessor :visible #レンダリングの可否(true->描画 false->非描画)
|
30
32
|
|
31
33
|
def initialize(*params)
|
@@ -120,6 +122,18 @@ module Miyako
|
|
120
122
|
min_y, max_y = yy.minmax
|
121
123
|
return Rect.new(min_x, min_y, max_x-min_x, max_y-min_y)
|
122
124
|
end
|
125
|
+
|
126
|
+
#===方向と移動先とを関連づける
|
127
|
+
# _hash_:: (方向)=>(移動先)の関係を持つハッシュ
|
128
|
+
# ハッシュキーは、:up,:down,:left,:right,:baseの5つ
|
129
|
+
#返却値:: 生成された矩形(Rect構造体のインスタンス)
|
130
|
+
def arrow(hash)
|
131
|
+
hash.each{|key, value|
|
132
|
+
raise MiakoValueError, "illegal hash key!" unless DIRECTION_LIST.include?(key)
|
133
|
+
self[key] = value
|
134
|
+
}
|
135
|
+
return self
|
136
|
+
end
|
123
137
|
end
|
124
138
|
|
125
139
|
#==選択肢構造体
|
@@ -136,10 +150,10 @@ module Miyako
|
|
136
150
|
#_selected_:: 選択肢が選択されているときはtrue、選択されていないときはfalse
|
137
151
|
#_result_:: 選択した結果を示すインスタンス
|
138
152
|
#_left_:: 左方向を選択したときに参照するChoice構造体のインスタンス
|
139
|
-
#_right_:: 右方向を選択したときに参照するChoice構造体のインスタンス
|
140
153
|
#_up_:: 上方向を選択したときに参照するChoice構造体のインスタンス
|
154
|
+
#_right_:: 右方向を選択したときに参照するChoice構造体のインスタンス
|
141
155
|
#_down_:: 下方向を選択したときに参照するChoice構造体のインスタンス
|
142
|
-
#_base_::
|
156
|
+
#_base_:: 構造体が要素となっているChoices
|
143
157
|
#_attribute_:: 属性を示すハッシュ
|
144
158
|
#_end_select_proc_:: この選択肢を選択したときに優先的に処理するブロック。
|
145
159
|
#ブロックは1つの引数を取る(コマンド選択テキストボックス))。
|
@@ -147,7 +161,7 @@ module Miyako
|
|
147
161
|
#_name_:: 選択肢の名前。名前を明示的に指定しないときは、オブジェクトIDを文字列化したものが入る
|
148
162
|
Choice = ChoiceStruct.new(:body, :body_selected, :body_disable,
|
149
163
|
:condition, :enable, :selected, :result,
|
150
|
-
:left, :
|
164
|
+
:left, :up, :right, :down,
|
151
165
|
:base, :attribute, :end_select_proc, :name)
|
152
166
|
|
153
167
|
#==選択肢を管理するクラス
|
data/lib/Miyako/API/i_yuki.rb
CHANGED
@@ -71,6 +71,8 @@ module Miyako
|
|
71
71
|
include SpriteBase
|
72
72
|
include Animation
|
73
73
|
|
74
|
+
ALL_TRUE = lambda{ true }
|
75
|
+
|
74
76
|
#==キャンセルを示す構造体
|
75
77
|
#コマンド選択がキャンセルされたときに生成される構造体
|
76
78
|
Canceled = Struct.new(:dummy)
|
@@ -84,6 +86,43 @@ module Miyako
|
|
84
86
|
#_enabe_:: コマンド選択の時はtrue、選択不可の時はfalseを設定
|
85
87
|
Command = Struct.new(:body, :body_selected, :body_disable, :enable, :condition, :result)
|
86
88
|
|
89
|
+
class Command
|
90
|
+
# Command構造体をChoice構造体に変換する
|
91
|
+
def to_choice(font=Font.sans_serif, size=16, color=Color[:white])
|
92
|
+
org_font_color = font.color
|
93
|
+
org_font_size = font.size
|
94
|
+
|
95
|
+
font.color = color
|
96
|
+
tmp = self[:body]
|
97
|
+
body = tmp.method(:to_sprite).arity == 0 ? tmp.to_sprite : tmp.to_sprite(font)
|
98
|
+
|
99
|
+
font.color = Color[:red]
|
100
|
+
tmp = self[:body_selected]
|
101
|
+
body_selected = tmp ? (tmp.method(:to_sprite).arity == 0 ? tmp.to_sprite : tmp.to_sprite(font)) : body
|
102
|
+
|
103
|
+
font.color = Color[:dark_gray]
|
104
|
+
tmp = self[:body_disable]
|
105
|
+
body_disable= tmp ? (tmp.method(:to_sprite).arity == 0 ? tmp.to_sprite : tmp.to_sprite(font)) : body
|
106
|
+
|
107
|
+
cond = self[:condition] || ALL_TRUE
|
108
|
+
|
109
|
+
choice = Choice.new(body, body_selected, body_disable,
|
110
|
+
cond, self[:enable], false, self[:result],
|
111
|
+
nil, nil, nil, nil,
|
112
|
+
nil, {}, lambda{}, nil)
|
113
|
+
choice.left = choice
|
114
|
+
choice.right = choice
|
115
|
+
choice.up = choice
|
116
|
+
choice.down = choice
|
117
|
+
choice.name = choice.__id__.to_s
|
118
|
+
|
119
|
+
font.color = org_font_color
|
120
|
+
font.size = org_font_size
|
121
|
+
|
122
|
+
choice
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
87
126
|
#==コマンド構造体
|
88
127
|
#_body_:: コマンドの名称(移動する、調べるなど、アイコンなどの画像も可)
|
89
128
|
#_body_selected_:: 選択時コマンドの名称(移動する、調べるなど、アイコンなどの画像も可)(省略時は、bodyと同一)
|
@@ -95,6 +134,43 @@ module Miyako
|
|
95
134
|
#_enabe_:: コマンド選択の時はtrue、選択不可の時はfalseを設定
|
96
135
|
CommandEX = Struct.new(:body, :body_selected, :condition, :body_disable, :enable, :result, :end_select_proc)
|
97
136
|
|
137
|
+
class CommandEx
|
138
|
+
# Command構造体をChoice構造体に変換する
|
139
|
+
def to_choice(font=Font.sans_serif, size=16, color=Color[:white])
|
140
|
+
org_font_color = font.color
|
141
|
+
org_font_size = font.size
|
142
|
+
|
143
|
+
font.color = color
|
144
|
+
tmp = self[:body]
|
145
|
+
body = tmp.method(:to_sprite).arity == 0 ? tmp.to_sprite : tmp.to_sprite(font)
|
146
|
+
|
147
|
+
font.color = Color[:red]
|
148
|
+
tmp = self[:body_selected]
|
149
|
+
body_selected = tmp ? (tmp.method(:to_sprite).arity == 0 ? tmp.to_sprite : tmp.to_sprite(font)) : body
|
150
|
+
|
151
|
+
font.color = Color[:dark_gray]
|
152
|
+
tmp = self[:body_disable]
|
153
|
+
body_disable= tmp ? (tmp.method(:to_sprite).arity == 0 ? tmp.to_sprite : tmp.to_sprite(font)) : body
|
154
|
+
|
155
|
+
cond = self[:condition] || ALL_TRUE
|
156
|
+
|
157
|
+
choice = Choice.new(body, body_selected, body_disable,
|
158
|
+
cond, self[:enable], false, self[:result],
|
159
|
+
nil, nil, nil, nil,
|
160
|
+
nil, {}, self[:end_select_proc], nil)
|
161
|
+
choice.left = choice
|
162
|
+
choice.right = choice
|
163
|
+
choice.up = choice
|
164
|
+
choice.down = choice
|
165
|
+
choice.name = choice.__id__.to_s
|
166
|
+
|
167
|
+
font.color = org_font_color
|
168
|
+
font.size = org_font_size
|
169
|
+
|
170
|
+
choice
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
98
174
|
attr_reader :visibles, :pre_visibles, :bgs, :base
|
99
175
|
attr_reader :valign
|
100
176
|
#release_checks:: ポーズ解除を問い合わせるブロックの配列。
|
@@ -224,7 +300,7 @@ module Miyako
|
|
224
300
|
|
225
301
|
@engine_stack = []
|
226
302
|
|
227
|
-
raise MiyakoProcError, "
|
303
|
+
raise MiyakoProcError, "Argument count is not same block parameter count!" if proc && proc.arity.abs != params.length
|
228
304
|
instance_exec(*params, &proc) if block_given?
|
229
305
|
end
|
230
306
|
|
@@ -274,6 +350,38 @@ module Miyako
|
|
274
350
|
self.pre_visibles.render
|
275
351
|
end
|
276
352
|
|
353
|
+
def start_all
|
354
|
+
self.bgs.start
|
355
|
+
self.visibles.start
|
356
|
+
self.textbox_all.start
|
357
|
+
self.commandbox_all.start unless self.box_shared?
|
358
|
+
self.pre_visibles.start
|
359
|
+
end
|
360
|
+
|
361
|
+
def stop_all
|
362
|
+
self.bgs.stop
|
363
|
+
self.visibles.stop
|
364
|
+
self.textbox_all.stop
|
365
|
+
self.commandbox_all.stop unless self.box_shared?
|
366
|
+
self.pre_visibles.stop
|
367
|
+
end
|
368
|
+
|
369
|
+
def reset_all
|
370
|
+
self.bgs.reset
|
371
|
+
self.visibles.reset
|
372
|
+
self.textbox_all.reset
|
373
|
+
self.commandbox_all.reset unless self.box_shared?
|
374
|
+
self.pre_visibles.reset
|
375
|
+
end
|
376
|
+
|
377
|
+
def animation_all
|
378
|
+
self.bgs.update_animation
|
379
|
+
self.visibles.update_animation
|
380
|
+
self.textbox_all.update_animation
|
381
|
+
self.commandbox_all.update_animation unless self.box_shared?
|
382
|
+
self.pre_visibles.update_animation
|
383
|
+
end
|
384
|
+
|
277
385
|
#===Yuki#showで表示指定した画像を描画する
|
278
386
|
#描画順は、showメソッドで指定した順に描画される(先に指定した画像は後ろに表示される)
|
279
387
|
#なお、visibleの値がfalseの時は描画されない。
|
@@ -798,7 +906,7 @@ module Miyako
|
|
798
906
|
@now_page = nil
|
799
907
|
@first_page = nil
|
800
908
|
|
801
|
-
raise MiyakoProcError, "
|
909
|
+
raise MiyakoProcError, "Argument count is not same block parameter count!" if proc && proc.arity.abs != params.length
|
802
910
|
instance_exec(*params, &proc) if proc
|
803
911
|
|
804
912
|
return self
|
@@ -829,9 +937,9 @@ module Miyako
|
|
829
937
|
#返却値:: 自分自身を返す
|
830
938
|
def start_plot(base, plot_proc = nil, *params, &plot_block)
|
831
939
|
raise MiyakoValueError, "Yuki Error! Textbox is not selected!" unless @text_box
|
832
|
-
raise MiyakoProcError, "
|
833
|
-
raise MiyakoProcError, "
|
834
|
-
raise MiyakoProcError, "
|
940
|
+
raise MiyakoProcError, "Argument count is not same block parameter count!" if plot_proc && plot_proc.arity.abs != params.length
|
941
|
+
raise MiyakoProcError, "Argument count is not same block parameter count!" if plot_block && plot_block.arity.abs != params.length
|
942
|
+
raise MiyakoProcError, "Argument count is not same block parameter count!" if @exec_plot && @exec_plot.arity.abs != params.length
|
835
943
|
@base = base
|
836
944
|
plot_facade(plot_proc, *params, &plot_block)
|
837
945
|
return self
|
@@ -1314,7 +1422,7 @@ module Miyako
|
|
1314
1422
|
#引数無しのブロックを渡せば、コマンド選択開始前に、決定判別・キャンセル判別に必要な前処理を施すことが出来る
|
1315
1423
|
#選択中、update_innerメソッドを呼び出し、続けて、処理をYuki#startもしくはYuki#update呼び出し直後に戻す
|
1316
1424
|
#Yuki#updateが呼び出されても選択中の場合は、再び上記の処理を繰り返す
|
1317
|
-
#_command_list_:: 表示するコマンド群。各要素はCommand
|
1425
|
+
#_command_list_:: 表示するコマンド群。各要素はCommand構造体/CommandEx構造体/Choicesクラスオブジェクトの配列
|
1318
1426
|
#_cancel_to_:: キャンセルボタンを押したときの結果。デフォルトはnil(キャンセル無効)
|
1319
1427
|
#_chain_block_:: コマンドの表示方法。TextBox#create_choices_chainメソッド参照
|
1320
1428
|
#返却値:: 自分自身を返す
|
@@ -1322,22 +1430,29 @@ module Miyako
|
|
1322
1430
|
raise MiyakoValueError, "Yuki Error! Commandbox is not selected!" unless @command_box
|
1323
1431
|
@cancel = cancel_to
|
1324
1432
|
|
1325
|
-
|
1326
|
-
|
1327
|
-
|
1328
|
-
|
1329
|
-
|
1330
|
-
|
1331
|
-
|
1332
|
-
|
1333
|
-
|
1334
|
-
|
1433
|
+
if command_list.kind_of?(Choices)
|
1434
|
+
@pre_command.each{|proc| proc.call}
|
1435
|
+
@pre_cancel.each{|proc| proc.call}
|
1436
|
+
@command_box_all.show if @command_box_all.object_id != @text_box_all.object_id
|
1437
|
+
@command_box.command(command_list)
|
1438
|
+
else
|
1439
|
+
choices = []
|
1440
|
+
command_list.each{|cm|
|
1441
|
+
if (cm[:condition] == nil || cm[:condition].call)
|
1442
|
+
cm_array = [cm[:body], cm[:body_selected], cm[:body_disable], cm[:enable], cm[:result]]
|
1443
|
+
methods = cm.methods
|
1444
|
+
cm_array << (methods.include?(:end_select_proc) ? cm[:end_select_proc] : nil)
|
1445
|
+
choices.push(cm_array)
|
1446
|
+
end
|
1447
|
+
}
|
1448
|
+
return self if choices.length == 0
|
1449
|
+
|
1450
|
+
@pre_command.each{|proc| proc.call}
|
1451
|
+
@pre_cancel.each{|proc| proc.call}
|
1452
|
+
@command_box_all.show if @command_box_all.object_id != @text_box_all.object_id
|
1453
|
+
@command_box.command(@command_box.create_choices_chain(choices, &chain_block))
|
1454
|
+
end
|
1335
1455
|
|
1336
|
-
@pre_command.each{|proc| proc.call}
|
1337
|
-
@pre_cancel.each{|proc| proc.call}
|
1338
|
-
yield if block_given?
|
1339
|
-
@command_box_all.show if @command_box_all.object_id != @text_box_all.object_id
|
1340
|
-
@command_box.command(@command_box.create_choices_chain(choices, &chain_block))
|
1341
1456
|
@result = nil
|
1342
1457
|
selecting = true
|
1343
1458
|
reset_selecting
|
data/lib/Miyako/API/modules.rb
CHANGED
@@ -86,6 +86,18 @@ module Miyako
|
|
86
86
|
return 0
|
87
87
|
end
|
88
88
|
|
89
|
+
#=== mixin されたインスタンスの部分矩形開始位置(x軸)を取得する
|
90
|
+
#返却値:: 部分矩形開始位置(デフォルトは0)
|
91
|
+
def ox=(v)
|
92
|
+
v
|
93
|
+
end
|
94
|
+
|
95
|
+
#=== mixin されたインスタンスの部分矩形開始位置(y軸)を取得する
|
96
|
+
#返却値::部分矩形開始位置(デフォルトは0)
|
97
|
+
def oy=(v)
|
98
|
+
v
|
99
|
+
end
|
100
|
+
|
89
101
|
#=== mixin されたインスタンスの部分矩形幅を取得する
|
90
102
|
#返却値:: インスタンスの幅(デフォルトは0)
|
91
103
|
def ow
|
@@ -98,6 +110,18 @@ module Miyako
|
|
98
110
|
return 0
|
99
111
|
end
|
100
112
|
|
113
|
+
#=== mixin されたインスタンスの部分矩形幅を取得する
|
114
|
+
#返却値:: インスタンスの幅(デフォルトは0)
|
115
|
+
def ow=(v)
|
116
|
+
v
|
117
|
+
end
|
118
|
+
|
119
|
+
#=== mixin されたインスタンスの部分矩形高を取得する
|
120
|
+
#返却値:: インスタンスの高さ(デフォルトは0)
|
121
|
+
def oh=(v)
|
122
|
+
v
|
123
|
+
end
|
124
|
+
|
101
125
|
#=== スプライトの部分矩形を返す
|
102
126
|
#返却値:: Rect構造体インスタンス(デフォルトはnil)
|
103
127
|
def part_rect
|
@@ -284,7 +308,7 @@ module Miyako
|
|
284
308
|
#_v_:: 設定する値(true/false)
|
285
309
|
#返却値:: 自分自身を返す
|
286
310
|
def visible=(v)
|
287
|
-
self.
|
311
|
+
self.each{|e| e.visible = v if e.class.include?(SpriteBase) || e.class.include?(SpriteArray)}
|
288
312
|
return self
|
289
313
|
end
|
290
314
|
|
@@ -308,9 +332,9 @@ module Miyako
|
|
308
332
|
#返却値:: 自分自身を返す
|
309
333
|
def move!(dx, dy)
|
310
334
|
if block_given?
|
311
|
-
self.
|
335
|
+
self.each_with_index{|e, i| e.move!(*(yield e, i, dx, dy)) if e.class.include?(SpriteBase) || e.class.include?(SpriteArray)}
|
312
336
|
else
|
313
|
-
self.
|
337
|
+
self.each{|e| e.move!(dx, dy) if e.class.include?(SpriteBase) || e.class.include?(SpriteArray)}
|
314
338
|
end
|
315
339
|
self
|
316
340
|
end
|
@@ -335,9 +359,9 @@ module Miyako
|
|
335
359
|
#返却値:: 自分自身を返す
|
336
360
|
def move_to!(x, y)
|
337
361
|
if block_given?
|
338
|
-
self.
|
362
|
+
self.each_with_index{|e, i| e.move_to!(*(yield e, i, x, y)) if e.class.include?(SpriteBase) || e.class.include?(SpriteArray)}
|
339
363
|
else
|
340
|
-
self.
|
364
|
+
self.each{|e| e.move_to!(x, y) if e.class.include?(SpriteBase) || e.class.include?(SpriteArray)}
|
341
365
|
end
|
342
366
|
self
|
343
367
|
end
|
@@ -346,7 +370,7 @@ module Miyako
|
|
346
370
|
#各要素のstartメソッドを呼び出す
|
347
371
|
#返却値:: 自分自身を返す
|
348
372
|
def start
|
349
|
-
self.
|
373
|
+
self.each{|sprite| sprite.start if e.class.include?(SpriteBase) || e.class.include?(SpriteArray) }
|
350
374
|
return self
|
351
375
|
end
|
352
376
|
|
@@ -354,7 +378,7 @@ module Miyako
|
|
354
378
|
#各要素のstopメソッドを呼び出す
|
355
379
|
#返却値:: 自分自身を返す
|
356
380
|
def stop
|
357
|
-
self.
|
381
|
+
self.each{|sprite| sprite.stop if e.class.include?(SpriteBase) || e.class.include?(SpriteArray) }
|
358
382
|
return self
|
359
383
|
end
|
360
384
|
|
@@ -362,7 +386,7 @@ module Miyako
|
|
362
386
|
#各要素のresetメソッドを呼び出す
|
363
387
|
#返却値:: 自分自身を返す
|
364
388
|
def reset
|
365
|
-
self.
|
389
|
+
self.each{|sprite| sprite.reset if e.class.include?(SpriteBase) || e.class.include?(SpriteArray) }
|
366
390
|
return self
|
367
391
|
end
|
368
392
|
|
@@ -370,9 +394,7 @@ module Miyako
|
|
370
394
|
#各要素のupdate_animationメソッドを呼び出す
|
371
395
|
#返却値:: 描く画像のupdate_spriteメソッドを呼び出した結果を配列で返す
|
372
396
|
def update_animation
|
373
|
-
self.
|
374
|
-
e.update_animation
|
375
|
-
}
|
397
|
+
self.map{|e| (e.class.include?(SpriteBase) || e.class.include?(SpriteArray)) ? e.update_animation : false }
|
376
398
|
end
|
377
399
|
|
378
400
|
#===指定した要素の内容を入れ替える
|
@@ -393,7 +415,7 @@ module Miyako
|
|
393
415
|
#描画するインスタンスは、SpriteBaseモジュールがmixinされているクラスのみ
|
394
416
|
#返却値:: 自分自身を帰す
|
395
417
|
def render
|
396
|
-
self.
|
418
|
+
self.each{|e| e.render if e.class.include?(SpriteBase) || e.class.include?(SpriteArray) }
|
397
419
|
return self
|
398
420
|
end
|
399
421
|
|
@@ -402,9 +424,34 @@ module Miyako
|
|
402
424
|
#_dst_:: 描画対象の画像インスタンス
|
403
425
|
#返却値:: 自分自身を帰す
|
404
426
|
def render_to(dst)
|
405
|
-
self.each{|e| e.render_to(dst) }
|
427
|
+
self.each{|e| e.render_to(dst) if e.class.include?(SpriteBase) || e.class.include?(SpriteArray) }
|
406
428
|
return self
|
407
429
|
end
|
430
|
+
|
431
|
+
#===位置を指定して画面への描画を指示するメソッドのテンプレート
|
432
|
+
#オブジェクトで保持している位置情報ではなく、引数で渡された位置に描画する
|
433
|
+
#基本的に、メソッドのオーバーライドにより機能するが、pos,move_to!メソッドを持っているときは、
|
434
|
+
#これらのメソッドを呼び出して同じ動作を行うが処理速度的に課題あり
|
435
|
+
#ただし、上記のメソッドを持っていない場合は、単純にrenderメソッドを呼び出す
|
436
|
+
#_x_:: 描画位置のx座標
|
437
|
+
#_y_:: 描画位置のy座標
|
438
|
+
#返却値:: 自分自身を返す
|
439
|
+
def render_xy(x, y)
|
440
|
+
return self.each{|e| e.render_xy(x, y) if e.class.include?(SpriteBase) || e.class.include?(SpriteArray) }
|
441
|
+
end
|
442
|
+
|
443
|
+
#===位置を指定して画像への描画を指示するメソッドのテンプレート
|
444
|
+
#オブジェクトで保持している位置情報ではなく、引数で渡された位置に描画する
|
445
|
+
#基本的に、メソッドのオーバーライドにより機能するが、pos,move_to!メソッドを持っているときは、
|
446
|
+
#これらのメソッドを呼び出して同じ動作を行うが、処理速度的に課題あり
|
447
|
+
#ただし、上記のメソッドを持っていない場合は、単純にrender_toメソッドを呼び出す
|
448
|
+
#_dst_:: 対象の画像
|
449
|
+
#_x_:: 描画位置のx座標
|
450
|
+
#_y_:: 描画位置のy座標
|
451
|
+
#返却値:: 自分自身を返す
|
452
|
+
def render_xy_to(dst, x, y)
|
453
|
+
return self.each{|e| e.render_xy_to(dst, x, y) if e.class.include?(SpriteBase) || e.class.include?(SpriteArray)}
|
454
|
+
end
|
408
455
|
end
|
409
456
|
|
410
457
|
#==ディープコピーを実装するモジュール
|