class Game_System
def c_windowskin_name
if @c_windowskin_name == nil
return $data_system.windowskin_name
else
return @c_windowskin_name
end
end
def c_windowskin_name=(c_windowskin_name)
@c_windowskin_name = c_windowskin_name
end
end
class Little_Arrow < Sprite
def initialize(viewport,mirror = false)
super(viewport)
self.bitmap = RPG::Cache.windowskin($game_system.c_windowskin_name)
@skin_name = $game_system.c_windowskin_name
self.src_rect.set(128, 96, 32, 32)
self.ox = 0
self.oy = 0
self.z = 350
self.mirror = mirror
@blink_count = 0
@blink_in = false
end
def update
if @skin_name != $game_system.c_windowskin_name
@skin_name = $game_system.c_windowskin_name
self.bitmap = RPG::Cache.windowskin($game_system.c_windowskin_name)
self.src_rect.set(128, 96, 32, 32)
end
if @blink_count > 0
@blink_count-=1
return
end
self.x -= 5 if @blink_in
self.x += 5 if @blink_in == false
@blink_count = 10
@blink_in==true ? @blink_in=false : @blink_in=true
end
end
class Cursor < Sprite
def initialize(viewport,skin_name)
super(viewport)
if FileTest.exist?("Graphics\\Windowskins\\"+skin_name+".png")
self.bitmap = RPG::Cache.windowskin(skin_name)
end
self.z = 320
self.src_rect.set(128, 97, 32, 32)
end
end
class Mini_Window < Window_Base
def initialize(skin_name)
super(0,0,64,64)
if FileTest.exist?("Graphics\\Windowskins\\"+skin_name+".png")
self.windowskin = RPG::Cache.windowskin(skin_name)
end
self.z = 320
end
end
class Window_Config < Window_Base
attr_accessor :index
attr_accessor :arrow
attr_accessor :sel_arrow
attr_accessor :c_arrow
attr_accessor :sel_index
attr_accessor :c_index
def initialize
super(0,0,640-150,480)
self.contents = Bitmap.new(self.width-32,self.height-32)
viewport = Viewport.new(0,0,640,480)
viewport.z = 2000
@arrow = Little_Arrow.new(viewport)
@arrow.visible = false
@sel_arrow = Little_Arrow.new(viewport)
@sel_arrow.x = 120
@sel_arrow.y = 16
@sel_index = 0
@c_arrow = Little_Arrow.new(viewport)
@c_arrow.visible = false
@skins = ['001-Blue01','gris','motif10','motif2','motif3','motif4',
'motif5','motif6','motif7','motif8','motif9','motif11',
'motif20','motif13','motif14','motif15','arcobaleno','motif22']
@mini_skin_window = []
@cursors = []
@index = @skins.index($game_system.windowskin_name)
@old_index = @index
@column = (@index / 6) + 1
@line = @index % 6
@c_index = @skins.index($game_system.c_windowskin_name)
@c_old_index = @c_index
@c_column = (@c_index / 9) + 1
@c_line = @c_index % 9
refresh
end
def skin_index
return @skins[@index]
end
def c_skin_index
return @skins[@c_index]
end
def refresh
self.contents.draw_text(4,4,200,32,'Scelta colori finestra')
self.contents.draw_text(4,320,200,32,'Scelta cursore')
column = 1
line = -1
c_line = -1
c_column = 1
viewport = Viewport.new(0,0,640,480)
viewport.z = 350
for i in [email protected]
line += 1
if line == 6
line = 0
column +=1
end
c_line += 1
if c_line == 9
c_line = 0
c_column += 1
end
@mini_skin_window.push(Mini_Window.new(@skins[i]))
@mini_skin_window[i].x = 150 + 32 + 75*line
@mini_skin_window[i].y = 96*column - 32
@cursors.push(Cursor.new(viewport,@skins[i]))
@cursors[i].x = 150 + 32 + 48 * c_line
@cursors[i].y = 320 + 48 * c_column
end
@arrow.x = 150 + @line * 75
@arrow.y = 96*@column + 10 - 32
@c_arrow.x = 150 + @c_line * 48
@c_arrow.y = 320 + 48 * @c_column - 5
end
def update
super
@sel_arrow.update
@sel_arrow.y = 320 * @sel_index + 16
@index %= @skins.size
@index = @skins.size-1 if @index < 0
@arrow.update
@column = (@index / 6) + 1
@line = @index % 6
if @index != @old_index
@old_index = @index
@arrow.x = 150 + @line * 75
@arrow.y = 96 * @column + 10 - 32
end
@c_index %= @skins.size
@c_index = @skins.size-1 if @c_index < 0
@c_arrow.update
@c_column = (@c_index / 9) + 1
@c_line = @c_index % 9
if @c_index != @c_old_index
@c_old_index = @c_index
@c_arrow.x = 150 + @c_line * 48
@c_arrow.y = 320 + 48 * @c_column - 5
end
end
def dispose
for i in 0..@mini_skin_window.size-1
@mini_skin_window[i].dispose
end
for i in [email protected]
@cursors[i].dispose
end
@arrow.dispose
@c_arrow.dispose
@sel_arrow.dispose
@mini_skin_window = nil
super
end
end