Class: Miyako::MapChipFactory
Overview
マップチップ作成ファクトリクラス
Class Method Summary collapse
-
.all_access_table ⇒ Object
全方向移動可能なAccessTableを作成 要素がすべてtrueの配列を生成する 返却値:: 生成した配列.
-
.create(sprite, access_types = 1) ⇒ Object
スプライトからMapChip構造体を生成する CSVファイルからではなく、独自に用意したデータからMapChip構造体を生成する このとき、マップチップの大きさは、引数として渡すスプライトのow,ohから算出する collision_tableは、すべてのチップでとして生成する access_tableは、すべての方向でtrueとして設定する sprite:: マップチップが描かれているスプライト access_types:: アクセス形式の数。0以下の時はMiyakoValueErrorが発生する。省略時は1 返却値:: MapChip構造体.
-
.create_with_size(sprite, size, access_types = 1) ⇒ Object
スプライトからMapChip構造体を生成する CSVファイルからではなく、独自に用意したデータからMapChip構造体を生成する このとき、マップチップの大きさは、引数sizeを使用する collision_tableは、すべてのチップでとして生成する access_tableは、すべての方向でtrueとして設定する sprite:: マップチップが描かれているスプライト size:: マップチップの大きさ(Size構造体) access_types:: アクセス形式の数。0以下の時はMiyakoValueErrorが発生する。省略時は1 返却値:: MapChip構造体.
-
.load(csv_filename, use_alpha = true) ⇒ Object
CSVファイルからMapChip構造体を生成する csv_filename:: マップチップファイル名(CSVファイル) use_alpha:: 画像にαチャネルを使うかどうかのフラグ。trueのときは画像のαチャネルを使用、falseのときはカラーキーを使用。デフォルトはtrue 返却値:: MapChip構造体.
-
.not_access_table ⇒ Object
完全に移動不可なAccessTableを作成 要素がすべてfalseの配列を生成する 返却値:: 生成した配列.
Class Method Details
.all_access_table ⇒ Object
全方向移動可能なAccessTableを作成
要素がすべてtrueの配列を生成する
- 返却値
-
生成した配列
111 112 113 |
# File 'lib/Miyako/API/map_struct.rb', line 111 def MapChipFactory.all_access_table [true] * 8 end |
.create(sprite, access_types = 1) ⇒ Object
スプライトからMapChip構造体を生成する
CSVファイルからではなく、独自に用意したデータからMapChip構造体を生成する このとき、マップチップの大きさは、引数として渡すスプライトのow,ohから算出する collision_tableは、すべてのチップでとして生成する access_tableは、すべての方向でtrueとして設定する
- sprite
-
マップチップが描かれているスプライト
- access_types
-
アクセス形式の数。0以下の時はMiyakoValueErrorが発生する。省略時は1
- 返却値
-
MapChip構造体
79 80 81 82 83 84 85 86 87 |
# File 'lib/Miyako/API/map_struct.rb', line 79 def MapChipFactory.create(sprite, access_types = 1) raise MiyakoValueErro, "illegal access types! needs >1 : #{access_types}" if access_types < 1 chip_size = Size.new(sprite.ow, sprite.oh) size = Size.new(sprite.w / chip_size.w, sprite.h / chip_size.h) chips = size.w * size.h ctable = Array.new(access_types){|at| Array.new(chips){|n| Collision.new([0,0,chip_size.w,chip_size.h]) } } atable = Array.new(access_types){|at| Array.new(chips){|n| [true] * 8 } } return MapChip.new(sprite, chips, size, chip_size, access_types, ctable, atable) end |
.create_with_size(sprite, size, access_types = 1) ⇒ Object
スプライトからMapChip構造体を生成する
CSVファイルからではなく、独自に用意したデータからMapChip構造体を生成する このとき、マップチップの大きさは、引数sizeを使用する collision_tableは、すべてのチップでとして生成する access_tableは、すべての方向でtrueとして設定する
- sprite
-
マップチップが描かれているスプライト
- size
-
マップチップの大きさ(Size構造体)
- access_types
-
アクセス形式の数。0以下の時はMiyakoValueErrorが発生する。省略時は1
- 返却値
-
MapChip構造体
98 99 100 101 102 103 104 105 106 |
# File 'lib/Miyako/API/map_struct.rb', line 98 def MapChipFactory.create_with_size(sprite, size, access_types = 1) raise MiyakoValueErro, "illegal access types! needs >1 : #{access_types}" if access_types < 1 chip_size = Size.new(size[0], size[1]) size = Size.new(sprite.w / chip_size.w, sprite.h / chip_size.h) chips = size.w * size.h ctable = Array.new(access_types){|at| Array.new(chips){|n| Collision.new([0,0,chip_size.w,chip_size.h]) } } atable = Array.new(access_types){|at| Array.new(chips){|n| [true] * 8 } } return MapChip.new(sprite, chips, size, chip_size, access_types, ctable, atable) end |
.load(csv_filename, use_alpha = true) ⇒ Object
CSVファイルからMapChip構造体を生成する
- csv_filename
-
マップチップファイル名(CSVファイル)
- use_alpha
-
画像にαチャネルを使うかどうかのフラグ。trueのときは画像のαチャネルを使用、falseのときはカラーキーを使用。デフォルトはtrue
- 返却値
-
MapChip構造体
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/Miyako/API/map_struct.rb', line 44 def MapChipFactory.load(csv_filename, use_alpha = true) raise MiyakoIOError.no_file(csv_filename) unless File.exist?(csv_filename) lines = CSV.read(csv_filename) raise MiyakoFileFormatError, "This file is not Miyako Map Chip file! : #{csv_filename}" unless lines.shift[0] == "Miyako Mapchip" spr = use_alpha ? Sprite.new({:filename => lines.shift[0], :type => :alpha_channel}) : Sprite.new({:file_name => lines.shift[0], :type => :color_key}) tmp = lines.shift chip_size = Size.new(tmp[0].to_i, tmp[1].to_i) size = Size.new(spr.w / chip_size.w, spr.h / chip_size.h) chips = size.w * size.h access_types = lines.shift[0].to_i collision_table = Array.new(access_types){|at| Array.new(chips){|n| Collision.new(lines.shift.map{|s| s.to_i}) } } access_table = Array.new(access_types){|at| Array.new(chips){|n| lines.shift.map{|s| v = eval(s) next v if (v == true || v == false) v = v.to_i next false if v == 0 true } } } return MapChip.new(spr, chips, size, chip_size, access_types, collision_table, access_table) end |
.not_access_table ⇒ Object
完全に移動不可なAccessTableを作成
要素がすべてfalseの配列を生成する
- 返却値
-
生成した配列
118 119 120 |
# File 'lib/Miyako/API/map_struct.rb', line 118 def MapChipFactory.not_access_table [false] * 8 end |