Код:
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# ▼ Plane
# Author: Kread-EX
# Version 1.01
# Release date: 08/01/2013
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#------------------------------------------------------------------------------
# ▼ UPDATES
#------------------------------------------------------------------------------
# # 11/04/2013. Added compatibility with Yanfly's Parallax Lock.
#------------------------------------------------------------------------------
# ▼ TERMS OF USAGE
#------------------------------------------------------------------------------
# # You are free to adapt this work to suit your needs.
# # You can use this work for commercial purposes if you like it.
# #
# # For support:
# # grimoirecastle.wordpress.com
# # rpgmakerweb.com
#------------------------------------------------------------------------------
# ▼ INTRODUCTION
#------------------------------------------------------------------------------
# # Rewrite the Plane class to work with Esrever's hacked DLL. Plug-and-play.
#------------------------------------------------------------------------------
#==============================================================================
# ■ Plane
#==============================================================================
class Plane
#--------------------------------------------------------------------------
# ● Object initialize
#--------------------------------------------------------------------------
def initialize(view = nil)
@viewport = view
@sprite = Sprite.new(@viewport)
end
#--------------------------------------------------------------------------
# ● Free
#--------------------------------------------------------------------------
def dispose
@sprite.dispose
end
#--------------------------------------------------------------------------
# ● Get freed
#--------------------------------------------------------------------------
def disposed?
@sprite.disposed?
end
#--------------------------------------------------------------------------
# ● Get visible
#--------------------------------------------------------------------------
def visible
@sprite.visible
end
#--------------------------------------------------------------------------
# ● Set visible
#--------------------------------------------------------------------------
def visible=(value)
@sprite.visible = value
end
#--------------------------------------------------------------------------
# ● Get zoom x
#--------------------------------------------------------------------------
def zoom_x
@sprite.zoom_x
end
#--------------------------------------------------------------------------
# ● Set zoom x
#--------------------------------------------------------------------------
def zoom_x=(value)
@sprite.zoom_x = value
end
#--------------------------------------------------------------------------
# ● Get zoom y
#--------------------------------------------------------------------------
def zoom_y
@sprite.zoom_y
end
#--------------------------------------------------------------------------
# ● Set zoom y
#--------------------------------------------------------------------------
def zoom_y=(value)
@sprite.zoom_y = value
end
#--------------------------------------------------------------------------
# ● Get opacity
#--------------------------------------------------------------------------
def opacity
@sprite.opacity
end
#--------------------------------------------------------------------------
# ● Set opacity
#--------------------------------------------------------------------------
def opacity=(value)
@sprite.opacity = value
end
#--------------------------------------------------------------------------
# ● Get blend type
#--------------------------------------------------------------------------
def blend_type
@sprite.blend_type
end
#--------------------------------------------------------------------------
# ● Set blend type
#--------------------------------------------------------------------------
def blend_type=(value)
@sprite.blend_type = value
end
#--------------------------------------------------------------------------
# ● Get color
#--------------------------------------------------------------------------
def color
@sprite.color
end
#--------------------------------------------------------------------------
# ● Set color
#--------------------------------------------------------------------------
def color=(value)
@sprite.color = value
end
#--------------------------------------------------------------------------
# ● Get tone
#--------------------------------------------------------------------------
def tone
@sprite.tone
end
#--------------------------------------------------------------------------
# ● Set tone
#--------------------------------------------------------------------------
def tone=(value)
@sprite.tone = value
end
#--------------------------------------------------------------------------
# ● Frame update
#--------------------------------------------------------------------------
def update
@sprite.update
end
#--------------------------------------------------------------------------
# ● Get viewport
#--------------------------------------------------------------------------
def viewport
@viewport
end
#--------------------------------------------------------------------------
# ● Set viewport
#--------------------------------------------------------------------------
def viewport=(value)
@viewport = value
@sprite.viewport = viewport
end
#--------------------------------------------------------------------------
# ● Get bitmap
#--------------------------------------------------------------------------
def bitmap
@sprite.bitmap
end
#--------------------------------------------------------------------------
# ● Set bitmap
#--------------------------------------------------------------------------
def bitmap=(value)
if value.nil?
@sprite.bitmap = value
return
end
bw = @viewport ? @viewport.rect.width : Graphics.width
bh = @viewport ? @viewport.rect.height : Graphics.height
if SceneManager.scene.is_a?(Scene_Map) #&& $game_map.parallax_tile_lock?
bw = $game_map.width * 32
bh = $game_map.height * 32
end
rw = bw.fdiv(value.width).ceil
rh = bh.fdiv(value.height).ceil
new_bmp = Bitmap.new(bw, bh)
0.upto(rw).each do |x|
0.upto(rh).each do |y|
new_bmp.blt(x * value.width, y * value.height, value, value.rect)
end
end
@sprite.bitmap = new_bmp
end
#--------------------------------------------------------------------------
# ● Get ox
#--------------------------------------------------------------------------
def ox
@sprite.ox
end
#--------------------------------------------------------------------------
# ● Set ox
#--------------------------------------------------------------------------
def ox=(nox)
@sprite.ox = nox
end
#--------------------------------------------------------------------------
# ● Get oy
#--------------------------------------------------------------------------
def oy
@sprite.oy
end
#--------------------------------------------------------------------------
# ● Set oy
#--------------------------------------------------------------------------
def oy=(noy)
@sprite.oy = noy
end
#--------------------------------------------------------------------------
# ● Get z
#--------------------------------------------------------------------------
def z
@sprite.z
end
#--------------------------------------------------------------------------
# ● Set z
#--------------------------------------------------------------------------
def z=(z)
@sprite.z = z
end
end
#####Tsukihime PLANE FIX #####
#-------------------------------------------------------------------------------
# FenixFyre's custom Plane, simply drawing a sprite. Needs to do something about
# the y-axis
#-------------------------------------------------------------------------------
class Plane
attr_reader :ox, :oy
alias :th_unlimited_resolution_initialize :initialize
def initialize(viewport = nil)
th_unlimited_resolution_initialize(viewport)
@sprite = Sprite.new(viewport)
@bitmap = nil
@ox = 0
@oy = 0
end
alias :th_unlimited_resolution_dispose :dispose
def dispose
th_unlimited_resolution_dispose
@sprite.dispose if @sprite
@sprite = nil
end
def method_missing(symbol, *args)
@sprite.method(symbol).call(*args)
end
def bitmap=(bitmap)
@bitmap = bitmap
refresh
end
def bitmap
@sprite.bitmap
end
def ox=(ox)
w = @sprite.viewport != nil ? @sprite.viewport.rect.width : Graphics.width
@ox = ox % w
@sprite.ox = @ox
end
def oy=(oy)
h = @sprite.viewport != nil ? @sprite.viewport.rect.height : Graphics.height
@oy = oy % h
@sprite.oy = @oy
end
def refresh
return if @bitmap.nil?
w = @sprite.viewport != nil ? @sprite.viewport.rect.width : Graphics.width
h = @sprite.viewport != nil ? @sprite.viewport.rect.height : Graphics.height
if @sprite.bitmap != nil
@sprite.bitmap.dispose
end
@sprite.bitmap = Bitmap.new(w * 2, h * 2)
max_x = w / @bitmap.width
max_y = h / @bitmap.height
for x in 0..max_x
for y in 0..max_y
@sprite.bitmap.blt(x * @bitmap.width, y * @bitmap.height,
@bitmap, Rect.new(0, 0, @bitmap.width, @bitmap.height))
end
end
for i in 1...4
x = i % 2 * w
y = i / 2 * h
@sprite.bitmap.blt(x, y, @sprite.bitmap, Rect.new(0, 0, w, h))
end
end
end
Социальные закладки