Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #============================================================================
- # ** Game_Interpreter
- #============================================================================
- class Game_Interpreter
- #--------------------------------------------------------------------------
- # * Retorna o tamanho da distancia
- #--------------------------------------------------------------------------
- def distancia
- # Verifica se o evento de fato existe
- if $game_map.events[@event_id] # Leia a nota 1
- # x do herói
- x = $game_player.x
- # y do herói
- y = $game_player.y
- # Chamamos o método para definir distância
- return $game_map.events[@event_id].define_distancia(x, y)
- else
- return false
- end
- end
- # ----------------
- # - Nota 1
- #
- # $game_map é a variavel que gerencia os mapas.
- # Ela contem uma lista de eventos do mapa que
- # são acessados através da sua id.
- #
- # @event_id é a variavel que armazena a id do evento
- # que chamou o interpretador
- # ----------------
- #--------------------------------------------------------------------------
- # * Verifica se o herói está na frente do evento
- #--------------------------------------------------------------------------
- def na_frente(tiles)
- # Armazena o evento numa variavel temporária para facil entendimento
- evento = $game_map.events[@event_id]
- # Armazena a direção do evento numa variavel temporária
- direcao = $game_map.events[@event_id].direction
- # Inicia o Case e cria as possibilidades
- case direcao
- when 2 # Verificação para Baixo
- # Evita verificações desnecessárias
- return false if $game_player.x != evento.x
- # Armazena o x
- x = evento.x
- # Cria o range de ação
- range = evento.y + tiles
- # Variável para controle Retorno
- ret = false
- # Faz o laço entre as posições y
- for y in evento.y..range
- # Checa a passabilidade
- break if !$game_map.passable?(x, y, 2)
- # Verifica se a posição y é a mesma
- if $game_player.y == y
- ret = true
- end
- end
- # Retorna
- return ret
- when 4 # Verificação para Esquerda
- # Evita verificações desnecessárias
- return false if $game_player.y != evento.y
- # Armazena o y
- y = evento.y
- # Cria o range de ação
- range = evento.x - tiles
- # Variável para controle Retorno
- ret = false
- # Faz o laço entre as posições x
- for x in evento.x.downto(range)
- # Checa a passabilidade
- break if !$game_map.passable?(x, y, 4)
- # Verifica se a posição y é a mesma
- if $game_player.x == x
- ret = true
- end
- end
- # Retorna
- return ret
- when 6 # Verificação para Direita
- # Evita verificações desnecessárias
- return false if $game_player.y != evento.y
- # Armazena o y
- y = evento.y
- # Cria o range de ação
- range = evento.x + tiles
- # Variável para controle Retorno
- ret = false
- # Faz o laço entre as posições x
- for x in evento.x..range
- # Checa a passabilidade
- break if !$game_map.passable?(x, y, 6)
- # Verifica se a posição y é a mesma
- if $game_player.x == x
- ret = true
- end
- end
- # Retorna
- return ret
- when 8 # Verificação para Cima
- # Evita verificações desnecessárias
- return false if $game_player.x != evento.x
- # Armazena o x
- x = evento.x
- # Cria o range de ação
- range = evento.y - tiles
- # Variável para controle Retorno
- ret = false
- # Faz o laço entre as posições y
- for y in evento.y.downto(range)
- # Checa a passabilidade
- break if !$game_map.passable?(x, y, 8)
- # Verifica se a posição y é a mesma
- if $game_player.y == y
- ret = true
- end
- end
- # Retorna
- return ret
- end
- end
- #--------------------------------------------------------------------------
- # * Verifica se o herói está na posição determinada
- #--------------------------------------------------------------------------
- def player_ta_ai(x, y)
- return $game_player.y == y && $game_player.x == x
- end
- #--------------------------------------------------------------------------
- # * Verifica se o herói está na frente do evento na forma de cone
- #--------------------------------------------------------------------------
- def na_frente_cone(tiles)
- # Armazena o evento numa variavel temporária para facil entendimento
- evento = $game_map.events[@event_id]
- # Armazena a direção do evento numa variavel temporária
- direcao = $game_map.events[@event_id].direction
- # Variável para controle Retorno
- ret = false
- # Fazer o range de distancia máxima
- yi = evento.y
- yf = evento.y
- xf = evento.x
- xi = evento.x
- # Cria area de colisão
- bloq = []
- # Caso de Direções
- case direcao
- when 6 # Direita
- # Cria o range de ação
- range = evento.x + tiles - 1
- # Faz os laços de x e y para verificar
- for x in xi..range
- for y in yi..yf
- # Quebra os loops da vida
- if !$game_map.passable?(x, y, 6)
- bloq.push(y)
- end
- # Checa se o player está na posição
- if player_ta_ai(x,y) && !bloq.include?(y)
- ret = true
- end
- end
- # Aumenta os ranges
- yi -=1
- yf +=1
- end
- when 2 # Baixo
- # Cria o range de ação
- range = evento.y + tiles - 1
- # Faz os laços de x e y para verificar
- for y in yi..range
- for x in xi..xf
- # Quebra os loops da vida
- if !$game_map.passable?(x, y, 2)
- bloq.push(x)
- end
- # Checa se o player está na posição
- if player_ta_ai(x,y) && !bloq.include?(x)
- ret = true
- end
- end
- # Aumenta os ranges
- xi -=1
- xf +=1
- end
- when 4 # Esquerda
- # Cria o range de ação
- range = evento.x - tiles + 1
- # Faz os laços de x e y para verificar
- for x in xi.downto(range)
- for y in yi..yf
- # Quebra os loops da vida
- if !$game_map.passable?(x, y, 4)
- bloq.push(y)
- end
- # Checa se o player está na posição
- if player_ta_ai(x,y) && !bloq.include?(y)
- ret = true
- end
- end
- # Aumenta os ranges
- yi -=1
- yf +=1
- end
- when 8 # Cima
- # Cria o range de ação
- range = evento.y - tiles + 1
- # Faz os laços de x e y para verificar
- for y in yi.downto(range)
- for x in xi..xf
- # Quebra os loops da vida
- if !$game_map.passable?(x, y, 8)
- bloq.push(x)
- end
- # Checa se o player está na posição
- if player_ta_ai(x,y) && !bloq.include?(x)
- ret = true
- end
- end
- # Aumenta os ranges
- xi -=1
- xf +=1
- end
- end
- # Faz o retorno padrão
- return ret
- end # Fim de Método
- #--------------------------------------------------------------------------
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement