################################################################################
##### VAR MAP
################################################################################
# Auteur : Biward ; Date : 13/09/2013 18:31 ; Version : XP
# Utilité : permet l'affichage facile et rapide de variable sur la map.
#
# liste des commandes :
# draw_variable(variable, position x, position y, largeur, hauteur, opacité, icone, position x icone, position y icone, "texte", position x texte, position y texte)
# qui sert à créer une fenêtre contenant une variable
# dispose_variable(variable) qui sert à effacer une window
# dispose_all_variable qui sert à effacer toutes les windows
# refresh_variables qui sert à mettre à jour les fenêtres (automatique)
#
# Autres commandes :
# var_x(var, x) ; var_y(var, y) ; var_w(var, w) ; var_h(var, h)
# var_opa(var, opa) ; var_ico(var, ico) ; var_xi(var, xi) ; var_yi(var, yi)
# var_text(var, text) ; var_xt(var, xt) ; var_yt(var, yt)
# Ces commandes servent à modifier une fenêtre ingame grace à un appel de script.
################################################################################
##### Début du script
################################################################################
class Interpreter
def draw_variable(var, x_v, y_v, x, y, w, h, opa, ico, x_i, y_i, text, x_t, y_t)
if ! Spriteset_Variable.dr[var]
Spriteset_Variable.var << var
Spriteset_Variable.x_v[var] = x_v
Spriteset_Variable.y_v[var] = y_v
Spriteset_Variable.x[var] = x
Spriteset_Variable.y[var] = y
Spriteset_Variable.w[var] = w
Spriteset_Variable.h[var] = h
Spriteset_Variable.opa[var] = opa
Spriteset_Variable.ico[var] = ico
Spriteset_Variable.x_i[var] = x_i
Spriteset_Variable.y_i[var] = y_i
Spriteset_Variable.text[var] = text
Spriteset_Variable.x_t[var] = x_t
Spriteset_Variable.y_t[var] = y_t
Spriteset_Variable.upo = var
Spriteset_Variable.cr = true
end
end
def dispose_variable(number) ; Spriteset_Variable.ds << number ; end
def dispose_all_variable ; Spriteset_Variable.co = true ; end
def refresh_variables ; Spriteset_Variable.rs = true ; end
def var_x_v(var, xv) ; Spriteset_Variable.x_v[var] = xv ; Spriteset_Variable.upo = var ; end
def var_y_v(var, yv) ; Spriteset_Variable.y_v[var] = yv ; Spriteset_Variable.upo = var ; end
def var_x(var, x) ; Spriteset_Variable.x[var] = x ; Spriteset_Variable.upo = var ; end
def var_y(var, y) ; Spriteset_Variable.y[var] = y ; Spriteset_Variable.upo = var ; end
def var_w(var, w) ; Spriteset_Variable.w[var] = w ; Spriteset_Variable.upo = var ; end
def var_h(var, h) ; Spriteset_Variable.h[var] = h ; Spriteset_Variable.upo = var ; end
def var_opa(var, opa) ; Spriteset_Variable.opa[var] = opa ; Spriteset_Variable.upo = var ; end
def var_ico(var, ico) ; Spriteset_Variable.ico[var] = ico ; Spriteset_Variable.upo = var ; end
def var_xi(var, xi) ; Spriteset_Variable.x_i[var] = xi ; Spriteset_Variable.upo = var ; end
def var_yi(var, yi) ; Spriteset_Variable.y_i[var] = yi ; Spriteset_Variable.upo = var ; end
def var_text(var, text) ; Spriteset_Variable.text[var] = text ; Spriteset_Variable.upo = var ; end
def var_xt(var, xt) ; Spriteset_Variable.x_t[var] = xt ; Spriteset_Variable.upo = var ; end
def var_yt(var, yt) ; Spriteset_Variable.y_t[var] = yt ; Spriteset_Variable.upo = var ; end
alias command_122_bi command_122 ; def command_122 ; command_122_bi ; Spriteset_Variable.rs = true ; end
end
class Window_Variable < Window_Base
def initialize(x, y, h, w, var, opa, icone, x_i, y_i, text, x_t, y_t, x_v, y_v)
super(x, y, h, w)
self.opacity = opa
@var = var
@icon_index = icone
@x_i = x_i
@y_i = y_i
@text = text
@x_v = x_v
@y_v = y_v
@x_t = x_t
@y_t = y_t
@w = w
@h = h
refresh
end
def refresh
self.contents = Bitmap.new(@h - 32, @w - 32)
self.contents.clear
self.contents.draw_text(@x_v, @y_v - 198, 544, 416, $game_variables[@var].to_s, 0)
bitmap = RPG::Cache.icon(@icon_index) if @icon_index
self.contents.blt(@x_i, @y_i + 4, bitmap, Rect.new(0, 0, 24, 24)) if @icon_index && @x_i && @y_i
self.contents.draw_text(@x_t, @y_t - 198, 544, 416, @text.to_s, 0)
end
def redraw(ico, x_i, y_i, text, x_t, y_t, x_v, y_v, h, w)
@icon_index = ico
@x_i = x_i
@y_i = y_i
@text = text
@x_t = x_t
@y_t = y_t
@x_v = x_v
@y_v = y_v
@w = w
@h = h
refresh
end
end
class Spriteset_Variable
class << self ; attr_accessor :var, :x_v, :y_v, :x, :y, :w, :h, :opa, :ico, :x_i, :y_i, :text, :x_t, :y_t, :upo, :dr, :ds, :rs, :cr, :co ; end
def initialize ; create_variable ; create_window_var if Spriteset_Variable.var ; end
def create_variable
Spriteset_Variable.var ||= []
Spriteset_Variable.x_v ||= {}
Spriteset_Variable.y_v ||= {}
Spriteset_Variable.rs ||= false
Spriteset_Variable.co ||= false
Spriteset_Variable.dr ||= []
Spriteset_Variable.ds ||= []
Spriteset_Variable.x ||= {}
Spriteset_Variable.y ||= {}
Spriteset_Variable.w ||= {}
Spriteset_Variable.h ||= {}
Spriteset_Variable.opa ||= {}
Spriteset_Variable.ico ||= {}
Spriteset_Variable.text ||= {}
Spriteset_Variable.x_i ||= {}
Spriteset_Variable.y_i ||= {}
Spriteset_Variable.x_t ||= {}
Spriteset_Variable.y_t ||= {}
@winvar = {} if ! @winvar
end
def start ; create_window_var if ! Spriteset_Variable.var.empty? ; end
def create_window_var
Spriteset_Variable.var.each do |i|
if ! Spriteset_Variable.dr[i]
@winvar[i] = Window_Variable.new(Spriteset_Variable.x[i], Spriteset_Variable.y[i], Spriteset_Variable.w[i],
Spriteset_Variable.h[i], i, Spriteset_Variable.opa[i], Spriteset_Variable.ico[i],
Spriteset_Variable.x_i[i], Spriteset_Variable.y_i[i] , Spriteset_Variable.text[i],
Spriteset_Variable.x_t[i], Spriteset_Variable.y_t[i], Spriteset_Variable.x_v[i],
Spriteset_Variable.y_v[i])
Spriteset_Variable.dr[i] = true
end
end
Spriteset_Variable.cr = nil if Spriteset_Variable.cr
end
def terminate ; dispose_window_var ; end
def dispose_window_var(command = false)
@winvar.each { |i| i[1].dispose }
Spriteset_Variable.dr.clear
Spriteset_Variable.var.clear if command
Spriteset_Variable.co = false if Spriteset_Variable.co
end
def dispose_owv(var)
@winvar[var].dispose if @winvar[var]
if Spriteset_Variable.dr[var]
index = Spriteset_Variable.var.index(var)
Spriteset_Variable.var.delete_at(index)
end
Spriteset_Variable.dr[var] = nil
end
def prep_dispose_window_var ; Spriteset_Variable.ds.each { |i| dispose_owv(i) } ; Spriteset_Variable.ds.clear ; end
def update
create_window_var if Spriteset_Variable.cr
update_window_var if Spriteset_Variable.upo
prep_dispose_window_var if ! Spriteset_Variable.ds.empty?
refresh_windows if Spriteset_Variable.rs
dispose_window_var(true) if Spriteset_Variable.co
end
def update_window_var
i = Spriteset_Variable.upo
if Spriteset_Variable.dr[i]
@winvar[i].x = Spriteset_Variable.x[i]
@winvar[i].y = Spriteset_Variable.y[i]
@winvar[i].width = Spriteset_Variable.w[i]
@winvar[i].height = Spriteset_Variable.h[i]
@winvar[i].opacity = Spriteset_Variable.opa[i]
@winvar[i].redraw(Spriteset_Variable.ico[i], Spriteset_Variable.x_i[i], Spriteset_Variable.y_i[i],
Spriteset_Variable.text[i], Spriteset_Variable.x_t[i], Spriteset_Variable.y_t[i],
Spriteset_Variable.x_v[i], Spriteset_Variable.y_v[i], Spriteset_Variable.w[i], Spriteset_Variable.h[i])
end
Spriteset_Variable.upo = nil
end
def refresh_windows
@winvar.each do |i|
i[1].refresh if i[1] && Spriteset_Variable.dr[i[0]]
Spriteset_Variable.rs = false
end
end
end
class Scene_Map
alias sbbi main
alias ubbi update
def main
@spriteset_variable = Spriteset_Variable.new
sbbi
@spriteset_variable.terminate if @spriteset_variable
end
def update ; ubbi ; @spriteset_variable.update if @spriteset_variable ; end
end
################################################################################
##### Début du script
################################################################################