Advertisement
Guest User

Untitled

a guest
Jul 20th, 2014
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 7.68 KB | None | 0 0
  1. #============================================================================
  2. # ** Game_Interpreter
  3. #============================================================================
  4. class Game_Interpreter
  5.   #--------------------------------------------------------------------------
  6.   # * Retorna o tamanho da distancia
  7.   #--------------------------------------------------------------------------  
  8.     def distancia
  9.     # Verifica se o evento de fato existe
  10.         if $game_map.events[@event_id] # Leia a nota 1
  11.       # x do herói
  12.       x = $game_player.x
  13.       # y do herói
  14.       y = $game_player.y
  15.       # Chamamos o método para definir distância
  16.             return $game_map.events[@event_id].define_distancia(x, y)
  17.         else
  18.             return false
  19.         end
  20.     end
  21.   # ----------------
  22.   # - Nota 1
  23.   #
  24.   #   $game_map é a variavel que gerencia os mapas.
  25.   #   Ela contem uma lista de eventos do mapa que
  26.   #   são acessados através da sua id.
  27.   #
  28.   #   @event_id é a variavel que armazena a id do evento
  29.   #   que chamou o interpretador
  30.   # ----------------
  31.   #--------------------------------------------------------------------------
  32.   # * Verifica se o herói está na frente do evento
  33.   #--------------------------------------------------------------------------
  34.   def na_frente(tiles)
  35.     # Armazena o evento numa variavel temporária para facil entendimento
  36.     evento = $game_map.events[@event_id]
  37.     # Armazena a direção do evento numa variavel temporária
  38.         direcao = $game_map.events[@event_id].direction    
  39.     # Inicia o Case e cria as possibilidades
  40.         case direcao
  41.             when 2 # Verificação para Baixo
  42.         # Evita verificações desnecessárias
  43.         return false if $game_player.x != evento.x
  44.         # Armazena o x
  45.         x = evento.x
  46.         # Cria o range de ação
  47.         range = evento.y + tiles
  48.         # Variável para controle Retorno
  49.         ret = false
  50.         # Faz o laço entre as posições y
  51.         for y in evento.y..range
  52.           # Checa a passabilidade
  53.           break if !$game_map.passable?(x, y, 2)
  54.           # Verifica se a posição y é a mesma
  55.           if $game_player.y == y
  56.             ret = true
  57.           end
  58.         end
  59.         # Retorna
  60.         return ret
  61.             when 4 # Verificação para Esquerda
  62.         # Evita verificações desnecessárias
  63.         return false if $game_player.y != evento.y
  64.         # Armazena o y
  65.         y = evento.y
  66.         # Cria o range de ação
  67.         range = evento.x - tiles
  68.         # Variável para controle Retorno
  69.         ret = false
  70.         # Faz o laço entre as posições x
  71.         for x in evento.x.downto(range)
  72.           # Checa a passabilidade
  73.           break if !$game_map.passable?(x, y, 4)
  74.           # Verifica se a posição y é a mesma
  75.           if $game_player.x == x
  76.             ret = true
  77.           end
  78.         end
  79.         # Retorna
  80.         return ret
  81.             when 6 # Verificação para Direita
  82.         # Evita verificações desnecessárias
  83.         return false if $game_player.y != evento.y
  84.         # Armazena o y
  85.         y = evento.y
  86.         # Cria o range de ação
  87.         range = evento.x + tiles
  88.         # Variável para controle Retorno
  89.         ret = false
  90.         # Faz o laço entre as posições x
  91.         for x in evento.x..range
  92.           # Checa a passabilidade
  93.           break if !$game_map.passable?(x, y, 6)
  94.           # Verifica se a posição y é a mesma
  95.           if $game_player.x == x
  96.             ret = true
  97.           end
  98.         end
  99.         # Retorna
  100.         return ret                     
  101.       when 8 # Verificação para Cima
  102.         # Evita verificações desnecessárias
  103.         return false if $game_player.x != evento.x
  104.         # Armazena o x
  105.         x = evento.x
  106.         # Cria o range de ação
  107.         range = evento.y - tiles
  108.         # Variável para controle Retorno
  109.         ret = false
  110.         # Faz o laço entre as posições y
  111.         for y in evento.y.downto(range)
  112.           # Checa a passabilidade
  113.           break if !$game_map.passable?(x, y, 8)
  114.           # Verifica se a posição y é a mesma
  115.           if $game_player.y == y
  116.             ret = true
  117.           end
  118.         end
  119.         # Retorna
  120.         return ret         
  121.         end
  122.     end  
  123.   #--------------------------------------------------------------------------
  124.   # * Verifica se o herói está na posição determinada
  125.   #--------------------------------------------------------------------------
  126.   def player_ta_ai(x, y)
  127.     return $game_player.y == y && $game_player.x == x
  128.   end
  129.   #--------------------------------------------------------------------------
  130.   # * Verifica se o herói está na frente do evento na forma de cone
  131.   #--------------------------------------------------------------------------
  132.   def na_frente_cone(tiles)
  133.     # Armazena o evento numa variavel temporária para facil entendimento
  134.     evento = $game_map.events[@event_id]
  135.     # Armazena a direção do evento numa variavel temporária
  136.         direcao = $game_map.events[@event_id].direction  
  137.     # Variável para controle Retorno
  138.     ret = false
  139.     # Fazer o range de distancia máxima
  140.     yi = evento.y
  141.     yf = evento.y
  142.     xf = evento.x
  143.     xi = evento.x    
  144.     # Cria area de colisão
  145.     bloq = []    
  146.     # Caso de Direções
  147.     case direcao
  148.       when 6 # Direita
  149.         # Cria o range de ação
  150.         range = evento.x + tiles - 1
  151.         # Faz os laços de x e y para verificar
  152.         for x in xi..range      
  153.           for y in yi..yf
  154.             # Quebra os loops da vida
  155.             if !$game_map.passable?(x, y, 6)
  156.               bloq.push(y)
  157.             end
  158.             # Checa se o player está na posição
  159.             if player_ta_ai(x,y) && !bloq.include?(y)
  160.               ret = true
  161.             end
  162.           end
  163.           # Aumenta os ranges
  164.           yi -=1
  165.           yf +=1
  166.         end  
  167.       when 2 # Baixo
  168.         # Cria o range de ação
  169.         range = evento.y + tiles - 1          
  170.         # Faz os laços de x e y para verificar
  171.         for y in yi..range      
  172.           for x in xi..xf        
  173.             # Quebra os loops da vida
  174.             if !$game_map.passable?(x, y, 2)
  175.               bloq.push(x)
  176.             end
  177.             # Checa se o player está na posição
  178.             if player_ta_ai(x,y) && !bloq.include?(x)
  179.               ret = true
  180.             end
  181.           end
  182.           # Aumenta os ranges
  183.           xi -=1
  184.           xf +=1
  185.         end
  186.       when 4 # Esquerda
  187.         # Cria o range de ação
  188.         range = evento.x - tiles + 1
  189.         # Faz os laços de x e y para verificar
  190.         for x in xi.downto(range)
  191.           for y in yi..yf        
  192.             # Quebra os loops da vida
  193.             if !$game_map.passable?(x, y, 4)
  194.               bloq.push(y)
  195.             end
  196.             # Checa se o player está na posição
  197.             if player_ta_ai(x,y) && !bloq.include?(y)
  198.               ret = true
  199.             end
  200.           end
  201.           # Aumenta os ranges
  202.           yi -=1
  203.           yf +=1
  204.         end
  205.       when 8 # Cima
  206.         # Cria o range de ação
  207.         range = evento.y - tiles + 1
  208.         # Faz os laços de x e y para verificar
  209.         for y in yi.downto(range)
  210.           for x in xi..xf        
  211.             # Quebra os loops da vida
  212.             if !$game_map.passable?(x, y, 8)
  213.               bloq.push(x)
  214.             end
  215.             # Checa se o player está na posição
  216.             if player_ta_ai(x,y) && !bloq.include?(x)
  217.               ret = true
  218.             end
  219.           end
  220.           # Aumenta os ranges
  221.           xi -=1
  222.           xf +=1
  223.         end
  224.       end
  225.       # Faz o retorno padrão
  226.       return ret
  227.   end # Fim de Método
  228. #--------------------------------------------------------------------------
  229. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement