Method: Miyako::FixedMap#initialize
- Defined in:
- lib/Miyako/API/fixedmap.rb
#initialize(mapchips, map_struct, event_manager = nil) ⇒ FixedMap
インスタンスを生成する
各レイヤにMapChip構造体を渡す但し、すべてのレイヤーに同一のMapChip構造体を使うときは、単体で渡すことも可能第1引数にto_aメソッドが実装されていれば、配列化した要素をMapChip構造体として各レイヤに渡すまた、各レイヤにMapChip構造体を渡すとき、レイヤ数より要素数が少ないときは、先頭に戻って繰り返し渡す仕様になっている各MapChip構造体のマップチップの大きさを同じにしておく必要がある
- mapchips
-
マップチップ構造体群(MapChip構造体単体もしくは配列)
- map_struct
-
MapStruct構造体のインスタンス
- event_manager
-
MapEventManagerクラスのインスタンス。省略時(イベントを使わない時)はnil
- 返却値
-
生成したインスタンス
292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 |
# File 'lib/Miyako/API/fixedmap.rb', line 292 def initialize(mapchips, map_struct, event_manager=nil) init_layout @visible = true if event_manager @em = event_manager.dup @em.set(self) else @em = nil end @mapchips = mapchips.to_a @map_size = map_struct.size @map_w = @map_size.w * @mapchips.first.chip_size.w @map_h = @map_size.h * @mapchips.first.chip_size.h @event_layers = [] if map_struct.elayers raise MiyakoError "Event Manager is not registered!" unless @em map_struct.elayers.each{|events| event_layer = Array.new events.each_with_index{|ly, y| ly.each_with_index{|code, x| next unless @em.include?(code) event_layer.push(@em.create(code, x * @mapchips.first.chip_size.w, y * @mapchips.first.chip_size.h)) } } @event_layers << event_layer } end @event_layers << [] if @event_layers.empty? mc = @mapchips.cycle @mapchips = mc.take(map_struct.layer_num) @map_layers = [] map_struct.layers.each{|br| br = br.map{|b| b.map{|bb| bb >= @mapchips.first.chips ? -1 : bb } } @map_layers.push(FixedMapLayer.new(mc.next, br, @map_size)) } set_layout_size(@map_w, @map_h) end |