#==============================================================================
# ** 地图显示变量 v1.2
# 作者:945127391
# 使用说明:
# ①新建一个显示变量的精灵:
# 事件 -> 脚本中输入:
# $game_map.new_variable_sprite(id, x, y, ini_var, [text_bitmap])
# id - 要创建的变量精灵的ID
# x - 要创建的变量精灵的X坐标
# y - 要创建的变量精灵的Y坐标
# ini_var - 要创建的变量精灵初始显示的数值
# text_bitmap - 要创建的变量精灵的文字图片文件
# 可以省略,如果为nil,则不用图片描绘文字;
# 默认为nil
# ②删除一个显示变量的精灵:
# 事件 -> 脚本中输入:
# $game_map.map_variables[id] = nil
# id - 要删除的变量精灵的ID
# ③改变一个变量精灵的属性:
# (以下的 id 都是要改变的变量精灵的ID)
# $game_map.map_variables[id].x = n # 改变id号变量精灵的X坐标
# $game_map.map_variables[id].y = n # 改变id号变量精灵的Y坐标
# $game_map.map_variables[id].variable = n # 改变id号变量精灵的显示的变量
# $game_map.map_variables[id].opacity = n # 改变id号变量精灵的不透明
# 度(0~255)
# $game_map.map_variables[id].visible = true/false # 改变id号变量精灵的可
# 见状态,true为可见,false为不可见
# $game_map.map_variables[id].text_bitmap = bitmap # 改变文字图片
# 以下是用来改变变量精灵的字体的:
# $game_map.map_variables[id].font[:name]
# $game_map.map_variables[id].font[:size]
# $game_map.map_variables[id].font[:bold]
# $game_map.map_variables[id].font[:italic]
# $game_map.map_variables[id].font[:shadow]
# $game_map.map_variables[id].font[:outline]
# $game_map.map_variables[id].font[:color]
# $game_map.map_variables[id].font[:out_color]
#==============================================================================
#------------------------------------------------------------------------------
# ** Bitmap
#------------------------------------------------------------------------------
class Bitmap
#----------------------------------------------------------------------------
# * 描绘图片数字
#----------------------------------------------------------------------------
def draw_bitmap_number(bitmap, x, y, number)
number = number.to_s
aw = bitmap.width / 10
l = aw * number.size
b = Bitmap.new(l, bitmap.height)
for i in 0...number.size
src_rect = Rect.new(aw * number[i].to_i, 0, aw, bitmap.height)
b.blt(aw * i, 0, bitmap, src_rect)
end
blt(x, y, b, b.rect)
b.dispose
end
end
#------------------------------------------------------------------------------
# ** Sprite_Variable
#------------------------------------------------------------------------------
class Sprite_Variable < Sprite_Base
#----------------------------------------------------------------------------
# * 初始化
#----------------------------------------------------------------------------
def initialize(id)
super(nil)
@id = id
self.x = $game_map.map_variables[@id].x
self.y = $game_map.map_variables[@id].y
self.z = 9999
self.bitmap = Bitmap.new(Graphics.width - self.x, Graphics.height - self.y)
self.opacity = $game_map.map_variables[@id].opacity
self.visible = $game_map.map_variables[@id].visible
refresh
end
#----------------------------------------------------------------------------
# * 更新
#----------------------------------------------------------------------------
def update
super
self.x = $game_map.map_variables[@id].x
self.y = $game_map.map_variables[@id].y
self.bitmap = Bitmap.new(Graphics.width - self.x, Graphics.height - self.y)
self.opacity = $game_map.map_variables[@id].opacity
self.visible = $game_map.map_variables[@id].visible
refresh
end
#----------------------------------------------------------------------------
# * 更新内容
#----------------------------------------------------------------------------
def refresh
self.bitmap.clear
if $game_map.map_variables[@id].text_bitmap == nil
self.bitmap.font.name = $game_map.map_variables[@id].font[:name]
self.bitmap.font.size = $game_map.map_variables[@id].font[:size]
self.bitmap.font.bold = $game_map.map_variables[@id].font[:bold]
self.bitmap.font.italic = $game_map.map_variables[@id].font[:italic]
self.bitmap.font.shadow = $game_map.map_variables[@id].font[:shadow]
self.bitmap.font.outline = $game_map.map_variables[@id].font[:outilne]
self.bitmap.font.color = $game_map.map_variables[@id].font[:color]
self.bitmap.font.out_color = $game_map.map_variables[@id].font[:out_color]
p self.bitmap.rect
self.bitmap.draw_text(0, 0, self.bitmap.width, self.bitmap.text_size("1").height, $game_map.map_variables[@id].variable)
else self.bitmap.draw_bitmap_number($game_map.map_variables[@id].text_bitmap, 0, 0, $game_map.map_variables[@id].variable)
end
end
end
#------------------------------------------------------------------------------
# ** Game_MapVariable
#------------------------------------------------------------------------------
class Game_MapVariable
#----------------------------------------------------------------------------
# * 定义实例变量
#----------------------------------------------------------------------------
attr_reader :id
attr_accessor :x
attr_accessor :y
attr_accessor :text_bitmap
attr_accessor :font
attr_accessor :variable
attr_accessor :opacity
attr_accessor :visible
#----------------------------------------------------------------------------
# * 初始化
#----------------------------------------------------------------------------
def initialize(id, x, y, ini_var, text_bitmap=nil)
@id = id
@x = x
@y = y
@text_bitmap = text_bitmap
@variable = ini_var
@font = {
:name => Font.default_name,
:size => Font.default_size,
:bold => Font.default_bold,
:italic => Font.default_italic,
:shadow => Font.default_shadow,
:outline => Font.default_outline,
:color => Font.default_color,
:out_color => Font.default_out_color
}
@opacity = 255
@visible = true
end
end
#------------------------------------------------------------------------------
# ** Game_Map
#------------------------------------------------------------------------------
class Game_Map
#----------------------------------------------------------------------------
# * 定义实例变量
#----------------------------------------------------------------------------
attr_accessor :map_variables
#----------------------------------------------------------------------------
# * 重命名方法
#----------------------------------------------------------------------------
alias oi initialize
#----------------------------------------------------------------------------
# * 初始化
#----------------------------------------------------------------------------
def initialize
oi
@map_variables = []
end
#----------------------------------------------------------------------------
# * 新建变量精灵
#----------------------------------------------------------------------------
def new_variable_sprite(id, x, y, ini_var, text_bit=nil)
if @map_variables[id] != nil
@map_variables[id] = nil
end
@map_variables[id] = Game_MapVariable.new(id, x, y, ini_var, text_bit)
end
#----------------------------------------------------------------------------
# * 删除变量精灵
#----------------------------------------------------------------------------
def del_variable_sprite(id)
@map_variables.delete_at(id)
end
end
#------------------------------------------------------------------------------
# ** Scene_Map
#------------------------------------------------------------------------------
class Scene_Map < Scene_Base
#----------------------------------------------------------------------------
# * 重命名方法
#----------------------------------------------------------------------------
alias os start
alias ou update
#----------------------------------------------------------------------------
# * 开始处理
#----------------------------------------------------------------------------
def start
os
@map_variable_sprites = []
end
#----------------------------------------------------------------------------
# * 释放
#----------------------------------------------------------------------------
def dispose
super
for i in [email]0...@map_variable_sprites.size[/email]
@map_variable_sprites.dispose if @map_variable_sprites.is_a?(Sprite)
end
end
#----------------------------------------------------------------------------
# * 刷新画面
#----------------------------------------------------------------------------
def update
ou
for i in 0...$game_map.map_variables.size
if $game_map.map_variables[i] != nil and @map_variable_sprites[i] == nil
@map_variable_sprites[i] = Sprite_Variable.new(i)
elsif $game_map.map_variables[i] == nil and @map_variable_sprites[i] != nil
@map_variable_sprites[i].dispose
end
end
for i in [email]0...@map_variable_sprites.size[/email]
@map_variable_sprites[i].update if $game_map.map_variables[i] != nil and @map_variable_sprites[i].is_a?(Sprite)
end
end
end