#==============================================================================
# ■ Game_Event
#------------------------------------------------------------------------------
# 处理事件的类。拥有条件判断、事件页的切换、并行处理、执行事件等功能。
# 在 Game_Map 类的内部使用。
#==============================================================================
class Game_Event < Game_Character
# 改为true将会变成保存被标记为不保存的事件
INVERSE_MARK = false
#--------------------------------------------------------------------------
# ● 是否储存位置
#--------------------------------------------------------------------------
def save_pos?
return !INVERSE_MARK unless @list
return !INVERSE_MARK if @list[0].code != 108
return (@list[0].parameters[0].include?("不保存事件位置") == INVERSE_MARK)
end
end
#==============================================================================
# ■ Game_Map
#------------------------------------------------------------------------------
# 管理地图的类。拥有卷动地图以及判断通行度的功能。
# 本类的实例请参考 $game_map 。
#==============================================================================
class Game_Map
#--------------------------------------------------------------------------
# ● 初始化对象
#--------------------------------------------------------------------------
alias save_event_pos_initialize initialize
def initialize
save_event_pos_initialize
@event_pos = {}
end
#--------------------------------------------------------------------------
# ● 设置
#--------------------------------------------------------------------------
alias save_event_pos_setup setup
def setup(map_id)
save_event_pos
save_event_pos_setup(map_id)
load_event_pos
end
#--------------------------------------------------------------------------
# ● 保存事件位置
#--------------------------------------------------------------------------
def save_event_pos
return if @map_id == 0
@event_pos[@map_id] ||= []
@events.each{|i,e|
if e.save_pos?
@event_pos[@map_id][i] = [e.x,e.y,e.direction]
else
@event_pos[@map_id][i] = nil
end
}
end
#--------------------------------------------------------------------------
# ● 读取事件位置
#--------------------------------------------------------------------------
def load_event_pos
return if @map_id == 0
@event_pos[@map_id] ||= []
@events.each{|i,e|
next unless @event_pos[@map_id][i]
e.moveto(@event_pos[@map_id][i][0],@event_pos[@map_id][i][1])
e.set_direction(@event_pos[@map_id][i][2])
}
end
end