Class: Miyako::MapDir

Inherits:
Object show all
Defined in:
lib/Miyako/API/map_struct.rb

Overview

アクセス方向定義クラス

マップチップのアクセステーブルを参照する際に、状態(入る(:in)・出る(:out))と 方向(:left, :right, :up, :down)から、アクセステーブルの指標を取得する必要がある。 このクラスでは、その指標を取得するメソッドを用意している

Constant Summary collapse

@@accesses =
{
  in:  { right: 2, left: 4, up: 6, down: 0},
  out: { right: 3, left: 5, up: 1, down: 7}
}
@@accesses2 =
{
  in:  [[-1,0,6],[2,-1,-1],[4,-1,-1]],
  out: [[-1,7,1],[3,-1,-1],[5,-1,-1]]
}

Class Method Summary collapse

Class Method Details

.index(state, direction) ⇒ Object

状態と方向からアクセステーブルの指標を取得する

アクセステーブルには、2種類の状態(入る=:in, 出る=:out)と、 4種類の方向(左=:left, 右=:right, 上=:up, 下=:down)から構成される 配列となっている。本メソッドで、状態・方向に対応するシンボルから配列の要素指標を取得する。 指定外のシンボルを渡すと例外が発生する

state

状態を示すシンボル(:in, :out)

direction

方向を示すシンボル(:left, :right, :up, :down)

返却値

アクセステーブルの指標番号(整数)

Raises:


247
248
249
250
251
# File 'lib/Miyako/API/map_struct.rb', line 247

def MapDir.index(state, direction)
  raise MiyakoValueError, "can't find AcceessIndex state symbol! #{state}" unless @@accesses.has_key?(state)
  raise MiyakoValueError, "can't find AcceessIndex direction symbol! #{direction}" unless @@accesses[state].has_key?(direction)
  return @@accesses[state][direction]
end

.index2(state, dx, dy) ⇒ Object

状態と移動量からアクセステーブルの指標を取得する

アクセステーブルには、2種類の状態(入る=:in, 出る=:out)と、移動量(dx,dy)から構成される 配列となっている。本メソッドで、状態に対応するシンボル、整数から配列の要素指標を取得する。 指定外のシンボルを渡すと例外が発生する

state

状態を示すシンボル(:in, :out)

dx

x方向移動量

dy

y方向移動量

返却値

アクセステーブルの指標番号(整数)。何も移動しない場合は-1が返る

Raises:


261
262
263
264
# File 'lib/Miyako/API/map_struct.rb', line 261

def MapDir.index2(state, dx, dy)
  raise MiyakoValueError, "can't find AcceessIndex state symbol! #{state}" unless @@accesses.has_key?(state)
  return @@accesses2[state][dx < -1 ? -1 : dx > 1 ? 1 : 0][dy < -1 ? -1 : dy > 1 ? 1 : 0]
end