Class: Miyako::Plane

Inherits:
Object show all
Extended by:
Forwardable
Includes:
Animation, SpriteBase
Defined in:
lib/Miyako/API/plane.rb

Overview

プレーン(画面いっぱいにタイル表示される画像)を表現するクラス

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Animation

[], []=, anim_hash, reset, #reset, start, #start, #stop, stop, update, update_animation

Methods included from SpriteBase

#bitmap, #hide, #image_rect, #image_size, #oh, #oh=, #ow, #ow=, #ox, #ox=, #oy, #oy=, #part_rect, #render_d, #render_xy, #render_xy_to, #show, #update, #visible, #visible=

Constructor Details

#initialize(param) ⇒ Plane

インスタンスの作成

パラメータは、Sprite.newのパラメータと同じ。但し、追加のパラメータがある。

:sprite => (インスタンス) : 表示対象のスプライト(アニメーション)のインスタンス

param

プレーンの情報(:sprite(=>Sprite・SpriteAnimationクラスのインスタンス))

返却値

生成したインスタンス


42
43
44
45
46
47
48
49
50
51
# File 'lib/Miyako/API/plane.rb', line 42

def initialize(param)
  if param.has_key?(:sprite)
    @sprite = param[:sprite]
  else
    @sprite = Sprite.new(param)
  end
  resize
  @pos = Point.new(0, 0)
  @visible = true
end

Class Method Details

.resizeObject

:nodoc:


166
167
168
169
# File 'lib/Miyako/API/plane.rb', line 166

def Plane::resize #:nodoc:
  @@planes.each{|p| p.resize }
  return nil
end

Instance Method Details

#broad_rectObject

現在の画面の最大の大きさを矩形で取得する

但し、Planeの場合は最大の大きさ=画面の大きさなので、rectと同じ値が得られる

返却値

生成された矩形(Rect構造体のインスタンス)


132
133
134
# File 'lib/Miyako/API/plane.rb', line 132

def broad_rect
  return self.rect
end

#disposeObject

プレーンのデータを解放する


137
138
139
# File 'lib/Miyako/API/plane.rb', line 137

def dispose
  @sprite.dispose
end

#initialize_copy(obj) ⇒ Object

:nodoc:


53
54
55
56
# File 'lib/Miyako/API/plane.rb', line 53

def initialize_copy(obj) #:nodoc:
  @sprite = @sprite.dup
  @pos = @pos.dup
end

#move(dx, dy) ⇒ Object

プレーンの表示位置を移動させたときの位置を求める

画像スクロールと同じ効果を得る ただし、自分自身の位置は変わらない

dx

移動量(x 座標)

dy

移動量(y 座標)

返却値

変更したPosition構造体を返す


108
109
110
# File 'lib/Miyako/API/plane.rb', line 108

def move(dx, dy)
  return adjust_pos(@pos.move(dx, dy))
end

#move!(dx, dy) ⇒ Object

プレーンの表示位置を移動させる

画像スクロールと同じ効果を得る

dx

移動量(x 座標)

dy

移動量(y 座標)

返却値

自分自身を返す


85
86
87
88
89
# File 'lib/Miyako/API/plane.rb', line 85

def move!(dx, dy)
  @pos.move!(dx, dy)
  @pos = adjust_pos(@pos)
  return self
end

#move_to(x, y) ⇒ Object

プレーンの表示位置を移動させたときの位置を求める(移動位置指定)

画像スクロールと同じ効果を得る ただし、自分自身の位置は変わらない

x

移動先の位置(x 座標)

y

移動先の位置(y 座標)

返却値

変更したPosition構造体を返す


118
119
120
# File 'lib/Miyako/API/plane.rb', line 118

def move_to(x, y)
  return adjust_pos(@pos.move_to(x, y))
end

#move_to!(x, y) ⇒ Object

プレーンの表示位置を移動させる(移動位置指定)

画像スクロールと同じ効果を得る

x

移動先の位置(x 座標)

y

移動先の位置(y 座標)

返却値

自分自身を返す


96
97
98
99
100
# File 'lib/Miyako/API/plane.rb', line 96

def move_to!(x, y)
  @pos.move_to!(x, y)
  @pos = adjust_pos(@pos)
  return self
end

#rectObject

画像の表示矩形を取得する

Planeの大きさを矩形で取得する。値は、Screen.rectメソッドの値と同じ。

返却値

生成された矩形(Rect構造体のインスタンス)


125
126
127
# File 'lib/Miyako/API/plane.rb', line 125

def rect
  return Screen.rect
end

#renderObject

プレーンを画面に描画する

転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点にする。 画面の描画範囲は、src側SpriteUnitの(x,y)を起点に、タイリングを行いながら貼り付ける。 visibleメソッドの値がfalseのときは描画されない。


175
176
177
178
179
180
181
182
# File 'lib/Miyako/API/plane.rb', line 175

def render
  @size.h.times{|y|
    @size.w.times{|x|
      @sprite.render_xy(x * @sprite.ow + @pos.x, y * @sprite.oh + @pos.y)
    }
  }
  return self
end

#render_to(dst) ⇒ Object

プレーンを画像に描画する

転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点にする。 転送先の描画範囲は、src側SpriteUnitの(x,y)を起点に、タイリングを行いながら貼り付ける。 visibleメソッドの値がfalseのときは描画されない。

dst

転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)


189
190
191
192
193
194
195
196
# File 'lib/Miyako/API/plane.rb', line 189

def render_to(dst)
  @size.h.times{|y|
    @size.w.times{|x|
      @sprite.render_xy_to(dst, x * @sprite.ow + @pos.x, y * @sprite.oh + @pos.y)
    }
  }
  return self
end

#resizeObject

:nodoc:


30
31
32
33
# File 'lib/Miyako/API/plane.rb', line 30

def resize #:nodoc:
  @size = Size.new(((Screen.w + @sprite.ow - 1) / @sprite.ow + 2),
                   ((Screen.h + @sprite.oh - 1) / @sprite.oh + 2))
end

#to_sprite {|sprite| ... } ⇒ Object

現在表示されているプレーンをSpriteクラスのインスタンスとして取得

引数1個のブロックを渡せば、スプライトに補正をかけることが出来る

返却値

取り込んだ画像を含むSpriteクラスのインスタンス

Yields:

  • (sprite)

150
151
152
153
154
155
156
157
# File 'lib/Miyako/API/plane.rb', line 150

def to_sprite
  sprite = Sprite.new(:size=>self.rect.to_a[2..3], :type=>:ac)
  Drawing.fill(sprite, [0,0,0])
  Bitmap.ck_to_ac!(sprite, [0,0,0])
  self.render_to(sprite)
  yield sprite if block_given?
  return sprite
end

#to_unitObject

SpriteUnit構造体を生成する

いったんSpriteインスタンスを作成し、それをもとにSpriteUnit構造体を生成する。

返却値

生成したSpriteUnit構造体


162
163
164
# File 'lib/Miyako/API/plane.rb', line 162

def to_unit
  return self.to_sprite.to_unit
end

#update_animationObject

描画の素になるスプライトのアニメーションを更新する

返却値

更新した結果、パターンが変わった・アニメーションが終了したときはtrue、それ以外はfalseを返す


143
144
145
# File 'lib/Miyako/API/plane.rb', line 143

def update_animation
  return @sprite.update_animation
end

#xObject

プレーン画像左上の x 座標の値を取得する

元画像の左上の位置がどこにあるのかを示す

返却値

x 座標の値


61
62
63
# File 'lib/Miyako/API/plane.rb', line 61

def x
  return @pos.x
end

#yObject

プレーン画像左上の y 座標の値を取得する

元画像の左上の位置がどこにあるのかを示す

返却値

y 座標の値


68
69
70
# File 'lib/Miyako/API/plane.rb', line 68

def y
  return @pos.y
end