Class: Miyako::MapEventManager

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

Overview

マップ上のイベント全体を管理するクラス

Map/FixedMapクラス内で使用する 使い方:

(1)インスタンスを生成する

em = MapEventManager.new

(2)MapEventクラスとIDを登録する

(例)MapEventモジュールをmixinしたクラスXを、ID=0のイベントとして登録

em.add(0, X)

(3)Map/FixedMapクラスインスタンス生成時に引数として渡す

(注)登録するIDは、イベントレイヤー上の番号と対応しておくこと

Instance Method Summary collapse

Constructor Details

#initializeMapEventManager

インスタンスを生成する

map_obj

Managerが属するMap/FixedMapクラスのインスタンス

返却値

生成されたインスタンス



47
48
49
50
# File 'lib/Miyako/API/map_event.rb', line 47

def initialize
  @map = nil
  @id2event = Hash.new
end

Instance Method Details

#[](id) ⇒ Object

イベント番号に関連づけれられているイベントクラスを返す

引数で渡した番号に対応するイベントクラス(クラスそのもの)を返す 引数idが未登録のイベント番号だったときはnilが返る

id

イベント番号

返却値

イベントクラス(classクラスインスタンス)もしくはnil



75
76
77
# File 'lib/Miyako/API/map_event.rb', line 75

def [](id)
  return @id2event[id]
end

#add(id, event) ⇒ Object

イベントクラスをマップに追加登録する

id

イベント番号(0以上の整数)

event

イベントクラス。クラスのインスタンスではないことに注意!

返却値

自分自身を返す



65
66
67
68
# File 'lib/Miyako/API/map_event.rb', line 65

def add(id, event)
  @id2event[id] = event
  return self
end

#clearObject

すべての登録済みイベントクラスの登録を解除する



113
114
115
# File 'lib/Miyako/API/map_event.rb', line 113

def clear
  @id2event.keys.each{|k| @id2event[k] = nil }
end

#create(id, x = 0, y = 0) ⇒ Object

イベントのインスタンスを生成する(番号指定)

インスタンス生成と同時に、マップ上の座標を渡して初期位置を設定する 登録していないIDを指定するとエラーになる

設置は、マップ上の座標に設置する。表示上の座標ではない事に注意。

id

イベントクラスと登録した際の番号

x

イベントを設置する位置(X座標)

y

イベントを設置する位置(Y座標)

返却値

生成したインスタンス

Raises:



106
107
108
109
110
# File 'lib/Miyako/API/map_event.rb', line 106

def create(id, x = 0, y = 0)
  raise MiyakoError, "This MapEventManager instance is not set Map/FixedMap instance!" unless @map
  raise MiyakoError, "Unknown Map Event ID! : #{id}" unless include?(id)
  return @id2event[id].new(@map, x, y)
end

#disposeObject



117
118
119
120
121
# File 'lib/Miyako/API/map_event.rb', line 117

def dispose
  @map = nil
  @id2event.clear
  @id2event = nil
end

#include?(id) ⇒ Boolean

イベントが登録されているかを確認する

引数で渡した番号に対応するイベントクラスが登録されているかどうかを確認する idに関連づけられたイベントクラスが登録されている時はtrueを返す

id

イベント番号

返却値

true/false

Returns:

  • (Boolean)


93
94
95
# File 'lib/Miyako/API/map_event.rb', line 93

def include?(id)
  return @id2event.has_key?(id)
end

#initialize_copy(obj) ⇒ Object

:nodoc:



52
53
54
55
# File 'lib/Miyako/API/map_event.rb', line 52

def initialize_copy(obj) #:nodoc:
  @map = @map.dup if @map
  @id2event = @id2event.dup
end

#set(map) ⇒ Object

:nodoc:



57
58
59
# File 'lib/Miyako/API/map_event.rb', line 57

def set(map) #:nodoc:
  @map = map
end

#to_id(event) ⇒ Object

イベントクラスに関連づけれられているイベント番号を返す

引数で渡したイベントクラスに対応するイベント番号を返す 引数eventが未登録のイベント番号だったときはnilが返る

event

イベントクラス

返却値

イベント番号(0以上の整数)もしくはnil



84
85
86
# File 'lib/Miyako/API/map_event.rb', line 84

def to_id(event)
  return @id2event.key(event)
end