Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module Map
- def self.passable?(x, y)
- type = 0
- [2, 4, 6, 8].each do |d|
- type |= 1 << (d / 2 - 1) if $game_map.passable?(x, y, d)
- end
- id = $game_map.event_id_xy(x, y)
- type = id if $game_map.event_id_xy(x, y) != 0
- case type
- when 15
- return [:passable]
- when 0
- return [:blocked]
- else
- return [:event, id]
- end
- end
- def self.scan_map(map_width = $game_map.width, map_height = $game_map.height)
- #p "Gerando cache..."
- start_time = Time.now.to_f
- cache = Array.new(map_width * map_height) { Hash.new }
- 0.upto(map_width) do |x|
- 0.upto(map_height) do |y|
- passable = self.passable?(x, y)
- print "#{passable[1]}"
- case passable[0]
- when :passable
- cache[x][y] = {x: x, y: y, passable: 0, event: 0, data1: '',
- data2: '', data3: '', data4: '' }
- when :blocked
- cache[x][y] = {x: x, y: y, passable: 1, event: 0, data1: '',
- data2: '', data3: '', data4: '' }
- when :event
- if passable[1] == 0
- cache[x][y] = {x: x, y: y, passable: 0, event: 0, data1: '',
- data2: '', data3: '', data4: '' }
- else
- event_cmd = ['', '', '', '']
- count = 1
- event = []
- event = $game_map.events[passable[1]]
- print "EVENTO #{passable[1]}"
- event.list.each do |command|
- next unless command.code == 108
- command.parameters.each do |param|
- event_cmd[count] = param
- count += 1
- end
- end
- cache[x][y] = {x: x, y: y, passable: 0, event: passable[1],
- data1: event_cmd[1], data2: event_cmd[2],
- data3: event_cmd[3], data4: event_cmd[4]}
- end
- end
- end
- end
- end_time = Time.now.to_f
- #p "Cache gerado em #{(end_time - start_time) * 1000}ms"
- return cache
- end
- def self.get_cache
- @cache ||= self.scan_map
- @cache.delete({})
- return @cache
- end
- def self.cache(x, y)
- @cache ||= self.scan_map
- return @cache[x][y]
- end
- def self.format
- @cache ||= self.scan_map
- str = String_Builder.new
- str.write($game_map.width - 1)
- str.write($game_map.height - 1)
- for x in 0...$game_map.width
- for y in 0...$game_map.height
- str.write(@cache[x][y][:passable])
- str.write(@cache[x][y][:event])
- str.write(@cache[x][y][:data1])
- str.write(@cache[x][y][:data2])
- str.write(@cache[x][y][:data3])
- str.write(@cache[x][y][:data4])
- end
- end
- return str.to_s
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement