Class: Miyako::Parts
- Includes:
- Enumerable, Animation, Layout, SpriteBase
- Defined in:
- lib/Miyako/API/parts.rb
Overview
パーツ構成クラス
複数のスプライト・アニメーションをまとめて一つの部品として構成できるクラス
最初に、基準となる「レイアウト空間(LayoutSpaceクラスのインスタンス)」を登録し、その上にパーツを加える
すべてのパーツは、すべてレイアウト空間にスナップされる (登録したパーツのレイアウト情報が変わることに注意)
Instance Method Summary collapse
-
#[]=(name, value) ⇒ Object
補助パーツvalueをnameに割り当てる name:: 補助パーツに与える名前(シンボル) value:: 補助パーツのインスタンス(スプライト、テキストボックス、アニメーション、レイアウトボックスなど) 返却値:: 自分自身.
- #__getobj__ ⇒ Object
- #__setobj__(obj) ⇒ Object
-
#broad_rect ⇒ Object
現在の画面の最大の大きさを矩形で取得する 各パーツの位置により、取得できる矩形の大きさが変わる 但し、パーツ未登録の時は、インスタンス生成時の大きさから矩形を生成する 返却値:: 生成された矩形(Rect構造体のインスタンス).
-
#delete(name) ⇒ Object
指定した数の要素を先頭から取り除く SpriteListの先頭からn個の要素を取り除いて、新しいSpriteListとする。 nがマイナスの時は、後ろからn個の要素を取り除く。 nが0の時は、空のSpriteListを返す。 自分自身に何も登録されていなければnilを返す (例)a=SpriteList(pair(:a),pair(:b),pair(:c)) b=a.delete(:b) =>a=SpriteList(pair(:a),pair(:c)) b=SpriteList(pair(:b)) b=a.delete(:d) =>a=SpriteList(pair(:a),pair(:b),pair(:c)) b=nil n:: 取り除く要素数。省略時は1 返却値:: 取り除いたスプライト.
-
#dispose ⇒ Object
パーツに登録しているインスタンスを解放する.
- #each ⇒ Object
- #hide ⇒ Object
-
#initialize(size) ⇒ Parts
constructor
Partsクラスインスタンスを生成 size:: パーツ全体の大きさ。Size構造体のインスタンスもしくは要素数が2の配列.
-
#initialize_copy(obj) ⇒ Object
:nodoc:.
- #move!(dx, dy, &block) ⇒ Object
- #move_to!(x, y, &block) ⇒ Object
-
#parts ⇒ Object
すべての補助パーツの一覧を配列で返す 返却値:: パーツ名の配列(登録順).
-
#push(*pairs) ⇒ Object
名前・スプライトの対を登録する リストに名前・スプライトをリストの後ろに追加する 効果はSpriteList#addと同じだが、複数の対を登録できることが特徴 (例)push() push(,[name2,sprite2]) pairs:: 名前とスプライトの対を配列にしたもの。対は、として渡す。 返却値:: 追加した自分自身を渡す.
-
#remove(name) ⇒ Object
指定の補助パーツを除外する name:: 除外するパーツ名(シンボル) 返却値:: 自分自身.
- #render ⇒ Object
- #render_to(dst) ⇒ Object
- #reset ⇒ Object
- #show ⇒ Object
-
#sprite_list ⇒ Object
:nodoc:.
- #start ⇒ Object
- #stop ⇒ Object
-
#to_sprite {|sprite| ... } ⇒ Object
スプライトに変換した画像を表示する すべてのパーツを貼り付けた、1枚のスプライトを返す 引数1個のブロックを渡せば、スプライトに補正をかけることが出来る 返却値:: 描画したスプライト.
-
#to_unit ⇒ Object
SpriteUnit構造体を生成する いったんSpriteインスタンスを作成し、それをもとにSpriteUnit構造体を生成する。 返却値:: 生成したSpriteUnit構造体.
- #update_animation ⇒ Object
- #visible ⇒ Object
- #visible=(f) ⇒ Object
Methods included from Layout
#add_snap_child, #bottom, #bottom!, #center, #center!, #centering, #centering!, #copy_layout, #delete_snap_child, #get_snap_children, #get_snap_sprite, #h, #include_snap_child?, #init_layout, #layout_dispose, #left, #left!, #middle, #middle!, #move, #move_to, #on_move, #outside_bottom, #outside_bottom!, #outside_left, #outside_left!, #outside_right, #outside_right!, #outside_top, #outside_top!, #pos, #rect, #relative_move_to, #relative_move_to!, #reset_snap, #right, #right!, #segment, #set_layout_size, #set_snap_children, #set_snap_sprite, #size, #snap, #top, #top!, #update_layout, #update_layout_position, #w, #x, #y
Methods included from Animation
[], []=, anim_hash, reset, start, stop, update, update_animation
Methods included from SpriteBase
#bitmap, #image_rect, #image_size, #oh, #oh=, #ow, #ow=, #ox, #ox=, #oy, #oy=, #part_rect, #rect, #render_d, #render_xy, #render_xy_to, #update
Constructor Details
#initialize(size) ⇒ Parts
Partsクラスインスタンスを生成
- size
-
パーツ全体の大きさ。Size構造体のインスタンスもしくは要素数が2の配列
39 40 41 42 43 44 |
# File 'lib/Miyako/API/parts.rb', line 39 def initialize(size) @list = SpriteList.new init_layout set_layout_size(size[0], size[1]) end |
Instance Method Details
#[]=(name, value) ⇒ Object
補助パーツvalueをnameに割り当てる
- name
-
補助パーツに与える名前(シンボル)
- value
-
補助パーツのインスタンス(スプライト、テキストボックス、アニメーション、レイアウトボックスなど)
- 返却値
-
自分自身
67 68 69 70 71 |
# File 'lib/Miyako/API/parts.rb', line 67 def []=(name, value) @list[name] = value @list[name].snap(self) self end |
#__getobj__ ⇒ Object
46 47 48 |
# File 'lib/Miyako/API/parts.rb', line 46 def __getobj__ @list end |
#__setobj__(obj) ⇒ Object
50 51 |
# File 'lib/Miyako/API/parts.rb', line 50 def __setobj__(obj) end |
#broad_rect ⇒ Object
現在の画面の最大の大きさを矩形で取得する
各パーツの位置により、取得できる矩形の大きさが変わる 但し、パーツ未登録の時は、インスタンス生成時の大きさから矩形を生成する
- 返却値
-
生成された矩形(Rect構造体のインスタンス)
151 152 153 154 155 156 157 158 159 160 161 |
# File 'lib/Miyako/API/parts.rb', line 151 def broad_rect rect = self.rect.to_a return self.rect if @list.length == 0 rect_list = rect.zip(*(self.map{|pair| pair[1].broad_rect.to_a})) # width -> right rect_list[2] = rect_list[2].zip(rect_list[0]).map{|xw| xw[0] + xw[1]} # height -> bottom rect_list[3] = rect_list[3].zip(rect_list[1]).map{|xw| xw[0] + xw[1]} x, y = rect_list[0].min, rect_list[1].min return Rect.new(x, y, rect_list[2].max - x, rect_list[3].max - y) end |
#delete(name) ⇒ Object
指定した数の要素を先頭から取り除く
SpriteListの先頭からn個の要素を取り除いて、新しいSpriteListとする。 nがマイナスの時は、後ろからn個の要素を取り除く。 nが0の時は、空のSpriteListを返す。 自分自身に何も登録されていなければnilを返す (例)a=SpriteList(pair(:a),pair(:b),pair(:c))
b=a.delete(:b)
=>a=SpriteList(pair(:a),pair(:c))
b=SpriteList(pair(:b))
b=a.delete(:d)
=>a=SpriteList(pair(:a),pair(:b),pair(:c))
b=nil
- n
-
取り除く要素数。省略時は1
- 返却値
-
取り除いたスプライト
102 103 104 105 106 |
# File 'lib/Miyako/API/parts.rb', line 102 def delete(name) ret = @list.delete ret.body.reset_snap ret.body end |
#dispose ⇒ Object
パーツに登録しているインスタンスを解放する
164 165 166 |
# File 'lib/Miyako/API/parts.rb', line 164 def dispose @list.dispose end |
#each ⇒ Object
208 209 210 |
# File 'lib/Miyako/API/parts.rb', line 208 def each @list.each end |
#hide ⇒ Object
188 189 190 |
# File 'lib/Miyako/API/parts.rb', line 188 def hide @list.hide end |
#initialize_copy(obj) ⇒ Object
:nodoc:
53 54 55 56 57 58 59 60 61 |
# File 'lib/Miyako/API/parts.rb', line 53 def initialize_copy(obj) #:nodoc: copy_layout @list = SpriteList.new obj.sprite_list.each{|pair| @list[pair.name] = pair.body.deep_dup @list[pair.name].snap(self) } self end |
#move!(dx, dy, &block) ⇒ Object
212 213 214 |
# File 'lib/Miyako/API/parts.rb', line 212 def move!(dx, dy, &block) @list.move!(dx, dy, &block) end |
#move_to!(x, y, &block) ⇒ Object
216 217 218 |
# File 'lib/Miyako/API/parts.rb', line 216 def move_to!(x, y, &block) @list.move_to!(x, y, &block) end |
#parts ⇒ Object
すべての補助パーツの一覧を配列で返す
- 返却値
-
パーツ名の配列(登録順)
114 115 116 |
# File 'lib/Miyako/API/parts.rb', line 114 def parts return @list.names end |
#push(*pairs) ⇒ Object
名前・スプライトの対を登録する
リストに名前・スプライトをリストの後ろに追加する 効果はSpriteList#addと同じだが、複数の対を登録できることが特徴 (例)push()
push([name1,sprite1],[name2,sprite2])
- pairs
-
名前とスプライトの対を配列にしたもの。対は、として渡す。
- 返却値
-
追加した自分自身を渡す
80 81 82 83 84 85 86 |
# File 'lib/Miyako/API/parts.rb', line 80 def push(*pairs) pairs.each{|pair| @list.push(pair) @list[pair[0]].snap(self) } return self end |
#remove(name) ⇒ Object
指定の補助パーツを除外する
- name
-
除外するパーツ名(シンボル)
- 返却値
-
自分自身
121 122 123 124 |
# File 'lib/Miyako/API/parts.rb', line 121 def remove(name) @list.delete(name) return self end |
#render ⇒ Object
168 169 170 |
# File 'lib/Miyako/API/parts.rb', line 168 def render @list.render end |
#render_to(dst) ⇒ Object
172 173 174 |
# File 'lib/Miyako/API/parts.rb', line 172 def render_to(dst) @list.render_to(dst) end |
#reset ⇒ Object
200 201 202 |
# File 'lib/Miyako/API/parts.rb', line 200 def reset @list.reset end |
#show ⇒ Object
184 185 186 |
# File 'lib/Miyako/API/parts.rb', line 184 def show @list.show end |
#sprite_list ⇒ Object
:nodoc:
108 109 110 |
# File 'lib/Miyako/API/parts.rb', line 108 def sprite_list #:nodoc: return @list end |
#start ⇒ Object
192 193 194 |
# File 'lib/Miyako/API/parts.rb', line 192 def start @list.start end |
#stop ⇒ Object
196 197 198 |
# File 'lib/Miyako/API/parts.rb', line 196 def stop @list.stop end |
#to_sprite {|sprite| ... } ⇒ Object
スプライトに変換した画像を表示する
すべてのパーツを貼り付けた、1枚のスプライトを返す 引数1個のブロックを渡せば、スプライトに補正をかけることが出来る
- 返却値
-
描画したスプライト
130 131 132 133 134 135 136 137 138 |
# File 'lib/Miyako/API/parts.rb', line 130 def to_sprite rect = self.broad_rect sprite = Sprite.new(:size=>rect.to_a[2,2], :type=>:ac) Drawing.fill(sprite, [0,0,0]) Bitmap.ck_to_ac!(sprite, [0,0,0]) self.render_to(sprite){|sunit, dunit| sunit.x -= rect.x; sunit.y -= rect.y } yield sprite if block_given? return sprite end |
#to_unit ⇒ Object
SpriteUnit構造体を生成する
いったんSpriteインスタンスを作成し、それをもとにSpriteUnit構造体を生成する。
- 返却値
-
生成したSpriteUnit構造体
143 144 145 |
# File 'lib/Miyako/API/parts.rb', line 143 def to_unit return self.to_sprite.to_unit end |
#update_animation ⇒ Object
204 205 206 |
# File 'lib/Miyako/API/parts.rb', line 204 def update_animation @list.update_animation end |
#visible ⇒ Object
176 177 178 |
# File 'lib/Miyako/API/parts.rb', line 176 def visible @list.visible end |
#visible=(f) ⇒ Object
180 181 182 |
# File 'lib/Miyako/API/parts.rb', line 180 def visible=(f) @list.visible=f end |