Advertisement
Guest User

Untitled

a guest
Jan 30th, 2015
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.73 KB | None | 0 0
  1. module Map
  2. def self.passable?(x, y)
  3. type = 0
  4. [2, 4, 6, 8].each do |d|
  5. type |= 1 << (d / 2 - 1) if $game_map.passable?(x, y, d)
  6. end
  7. id = $game_map.event_id_xy(x, y)
  8. type = id if $game_map.event_id_xy(x, y) != 0
  9. case type
  10. when 15
  11. return [:passable]
  12. when 0
  13. return [:blocked]
  14. else
  15. return [:event, id]
  16. end
  17. end
  18.  
  19. def self.scan_map(map_width = $game_map.width, map_height = $game_map.height)
  20. #p "Gerando cache..."
  21. start_time = Time.now.to_f
  22. cache = Array.new(map_width * map_height) { Hash.new }
  23. 0.upto(map_width) do |x|
  24. 0.upto(map_height) do |y|
  25. passable = self.passable?(x, y)
  26. print "#{passable[1]}"
  27. case passable[0]
  28. when :passable
  29. cache[x][y] = {x: x, y: y, passable: 0, event: 0, data1: '',
  30. data2: '', data3: '', data4: '' }
  31. when :blocked
  32. cache[x][y] = {x: x, y: y, passable: 1, event: 0, data1: '',
  33. data2: '', data3: '', data4: '' }
  34. when :event
  35. if passable[1] == 0
  36. cache[x][y] = {x: x, y: y, passable: 0, event: 0, data1: '',
  37. data2: '', data3: '', data4: '' }
  38. else
  39. event_cmd = ['', '', '', '']
  40. count = 1
  41. event = []
  42. event = $game_map.events[passable[1]]
  43. print "EVENTO #{passable[1]}"
  44. event.list.each do |command|
  45. next unless command.code == 108
  46. command.parameters.each do |param|
  47. event_cmd[count] = param
  48. count += 1
  49. end
  50. end
  51. cache[x][y] = {x: x, y: y, passable: 0, event: passable[1],
  52. data1: event_cmd[1], data2: event_cmd[2],
  53. data3: event_cmd[3], data4: event_cmd[4]}
  54. end
  55. end
  56. end
  57. end
  58. end_time = Time.now.to_f
  59. #p "Cache gerado em #{(end_time - start_time) * 1000}ms"
  60. return cache
  61. end
  62.  
  63. def self.get_cache
  64. @cache ||= self.scan_map
  65. @cache.delete({})
  66. return @cache
  67. end
  68.  
  69. def self.cache(x, y)
  70. @cache ||= self.scan_map
  71. return @cache[x][y]
  72. end
  73.  
  74. def self.format
  75. @cache ||= self.scan_map
  76. str = String_Builder.new
  77. str.write($game_map.width - 1)
  78. str.write($game_map.height - 1)
  79. for x in 0...$game_map.width
  80. for y in 0...$game_map.height
  81. str.write(@cache[x][y][:passable])
  82. str.write(@cache[x][y][:event])
  83. str.write(@cache[x][y][:data1])
  84. str.write(@cache[x][y][:data2])
  85. str.write(@cache[x][y][:data3])
  86. str.write(@cache[x][y][:data4])
  87. end
  88. end
  89. return str.to_s
  90. end
  91. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement