Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[XP] [Herramienta de Scripter] Bitmap Layer

Ver el tema anterior Ver el tema siguiente Ir abajo

[XP] [Herramienta de Scripter] Bitmap Layer

Mensaje por Wecoc el 2014-04-12, 16:55

Éste script es una base que permite usar una picture como capa extra e invisible, que luego tendrá diferentes utilidades según lo que queráis hacer vosotros (no funciona por sí sola sino que es una herramienta de scripter). En palabras técnicas es una implementación al bitmap que le da nombre y un mejor soporte de zoom, de modo que si se quiere usar solo una pequeñez con un zoom de 32.0 (un píxel corresponde a un tile), se podrá y causará menos lag. Esa imagen no se muestra en pantalla, no se updatea ni nada así que no creo que se pueda hablar de lag con éste script.

No requiere créditos.

Se usa así: @layer = Bitmap_Layer.new(name, filename, zoom)
Dónde name es una string con el nombre que le das a ese tipo de capa, filename el nombre de la picture a cargar y zoom pues lo que dije antes xD

Quizá tenga algún error, ya lo iré viendo. Está sujeto a cambios.

Código:
#==============================================================================
# ** Bitmap_Layer v1.0
#------------------------------------------------------------------------------
#  Autor: Wecoc
#  Créditos no requeridos
#==============================================================================


class Bitmap_Layer < Bitmap
  attr_accessor :name
  attr_accessor :zoom
 
  def initialize(name, a=nil, b=nil, c=nil)
    if a.is_a?(String) # entity
      filename = "Graphics/Pictures/#{a}"
      zoom = b
      super(filename)
    else
      width = a
      height = b
      zoom = c
      super(width, height)
    end
    @name = name
    @zoom = zoom.to_f
  end
 
  def red(x, y)
    return get_pixel(x * 32 / zoom, y * 32 / zoom).red
  end
 
  def green(x, y)
    return get_pixel(x * 32 / zoom, y * 32 / zoom).green
  end
 
  def blue(x, y)
    return get_pixel(x * 32 / zoom, y * 32 / zoom).blue
  end
 
  def alpha(x, y)
    return get_pixel(x * 32 / zoom, y * 32 / zoom).alpha
  end
 
  def screen_red(x, y)
    x, y = *$game_map.tile_to_screen(x, y)
    return get_pixel(x, y).red
  end
 
  def screen_green(x, y)
    x, y = *$game_map.tile_to_screen(x, y)
    return get_pixel(x, y).green
  end
 
  def screen_blue(x, y)
    x, y = *$game_map.tile_to_screen(x, y)
    return get_pixel(x, y).blue
  end
 
  def screen_alpha(x, y)
    x, y = *$game_map.tile_to_screen(x, y)
    return get_pixel(x, y).alpha
  end
 
  def inspect
    return "Layer Bitmap: #{@name}, #{@zoom}"
  end
end

class Game_Map 
  def screen_to_tile(x, y)
    x = (x + @display_x) / 128
    y = (y + @display_y) / 128
    return [x, y]
  end
 
  def tile_to_screen(x, y)
    x = x * 128 - @display_x
    y = y * 128 - @display_y
    return [x, y]
  end
end

avatar
Wecoc
Administrador
Administrador



Créditos 12203

Gracias : 632

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


Permisos de este foro:
No puedes responder a temas en este foro.