Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #-------------------------------------------------------------------------------
- # Don't remove this header!
- #-------------------------------------------------------------------------------
- # Show Enemy Name on Select
- # by Trihan
- #
- # Version: 1.0
- #
- # This script is commissioned by Batworks Software.
- #-------------------------------------------------------------------------------
- #-------------------------------------------------------------------------------
- # Version History
- #-------------------------------------------------------------------------------
- # 1.0 - Initial script.
- #-------------------------------------------------------------------------------
- module TLBBattleName
- def self.line_height
- return 24
- end
- def self.text_color(n)
- Cache.system("Window").get_pixel(64 + (n % 8) * 8, 96 + (n / 8) * 8)
- end
- def self.normal_color; text_color(0); end; # Normal
- def self.change_color(contents, color, enabled = true)
- contents.font.color.set(color)
- contents.font.color.alpha = translucent_alpha unless enabled
- end
- def self.text_size(contents, str)
- contents.text_size(str)
- end
- def self.draw_text_ex(contents, x, y, text)
- reset_font_settings(contents)
- text = convert_escape_characters(text)
- pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(contents, text)}
- process_character(contents, text.slice!(0, 1), text, pos) until text.empty?
- end
- def self.reset_font_settings(contents)
- change_color(contents, normal_color)
- contents.font.size = Font.default_size
- contents.font.bold = Font.default_bold
- contents.font.italic = Font.default_italic
- end
- def self.convert_escape_characters(text)
- result = text.to_s.clone
- result.gsub!(/\\/) { "\e" }
- result.gsub!(/\e\e/) { "\\" }
- result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
- result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
- result.gsub!(/\eN\[(\d+)\]/i) { actor_name($1.to_i) }
- result.gsub!(/\eP\[(\d+)\]/i) { party_member_name($1.to_i) }
- result.gsub!(/\eG/i) { Vocab::currency_unit }
- result
- end
- def self.strip_escape_characters(text)
- stripped_text = text.to_s.clone
- stripped_text.gsub!(/\\/) { "\e" }
- stripped_text.gsub!(/\\/) { "\e" }
- stripped_text.gsub!(/\e\e/) { "\\" }
- stripped_text.gsub!(/\eV\[(\d+)\]/i) { "" }
- stripped_text.gsub!(/\eV\[(\d+)\]/i) { "" }
- stripped_text.gsub!(/\eN\[(\d+)\]/i) { "" }
- stripped_text.gsub!(/\eP\[(\d+)\]/i) { "" }
- stripped_text.gsub!(/\eG/i) { "" }
- stripped_text.gsub!(/\eC\[(\d+)\]/i) { "" }
- stripped_text
- end
- def self.process_character(contents, c, text, pos)
- case c
- when "\n" # New line
- process_new_line(text, pos)
- when "\f" # New page
- process_new_page(text, pos)
- when "\e" # Control character
- process_escape_character(contents, obtain_escape_code(text), text, pos)
- else # Normal character
- process_normal_character(contents, c, pos)
- end
- end
- def self.process_normal_character(contents, c, pos)
- text_width = text_size(contents, c).width
- contents.draw_text(pos[:x], pos[:y], text_width * 2, pos[:height], c)
- pos[:x] += text_width
- end
- #--------------------------------------------------------------------------
- # * New Line Character Processing
- #--------------------------------------------------------------------------
- def self.process_new_line(text, pos)
- pos[:x] = pos[:new_x]
- pos[:y] += pos[:height]
- pos[:height] = calc_line_height(text)
- end
- #--------------------------------------------------------------------------
- # * New Page Character Processing
- #--------------------------------------------------------------------------
- def self.process_new_page(text, pos)
- end
- #--------------------------------------------------------------------------
- # * Destructively Get Control Code
- #--------------------------------------------------------------------------
- def self.obtain_escape_code(text)
- text.slice!(/^[\$\.\|\^!><\{\}\\]|^[A-Z]+/i)
- end
- #--------------------------------------------------------------------------
- # * Destructively Get Control Code Argument
- #--------------------------------------------------------------------------
- def self.obtain_escape_param(text)
- text.slice!(/^\[\d+\]/)[/\d+/].to_i rescue 0
- end
- #--------------------------------------------------------------------------
- # * Control Character Processing
- # code : the core of the control character
- # e.g. "C" in the case of the control character \C[1].
- #--------------------------------------------------------------------------
- def self.process_escape_character(contents, code, text, pos)
- case code.upcase
- when 'C'
- change_color(contents, text_color(obtain_escape_param(text)))
- when 'I'
- process_draw_icon(obtain_escape_param(text), pos)
- when '{'
- make_font_bigger(contents)
- when '}'
- make_font_smaller(contents)
- end
- end
- #--------------------------------------------------------------------------
- # * Icon Drawing Process by Control Characters
- #--------------------------------------------------------------------------
- def self.process_draw_icon(icon_index, pos)
- draw_icon(icon_index, pos[:x], pos[:y])
- pos[:x] += 24
- end
- #--------------------------------------------------------------------------
- # * Increase Font Size
- #--------------------------------------------------------------------------
- def self.make_font_bigger(contents)
- contents.font.size += 8 if contents.font.size <= 64
- end
- #--------------------------------------------------------------------------
- # * Decrease Font Size
- #--------------------------------------------------------------------------
- def self.make_font_smaller(contents)
- contents.font.size -= 8 if contents.font.size >= 16
- end
- def self.calc_line_height(contents, text, restore_font_size = true)
- result = [line_height, contents.font.size].max
- last_font_size = contents.font.size
- text.slice(/^.*$/).scan(/\e[\{\}]/).each do |esc|
- make_font_bigger(contents) if esc == "\e{"
- make_font_smaller(contents) if esc == "\e}"
- result = [result, contents.font.size].max
- end
- contents.font.size = last_font_size if restore_font_size
- result
- end
- end
- class Sprite_Battler < Sprite_Base
- alias :tlb_enemyname_initialize_2eb8 :initialize
- def initialize(viewport, battler = nil)
- tlb_enemyname_initialize_2eb8(viewport, battler)
- if @battler.class.name == 'Game_Enemy'
- @enemy_name_sprite = Sprite.new
- @enemy_name_sprite.bitmap = Bitmap.new(1, 1)
- end
- end
- alias :tlb_enemyname_icon_update_0ej4 :enemy_hp_icon_update
- def enemy_hp_icon_update
- tlb_enemyname_icon_update_0ej4
- if @enemy_name_sprite
- if @battler.hp_icon
- text = @battler.name
- stripped_text = TLBBattleName.strip_escape_characters(text)
- width = @enemy_name_sprite.bitmap.text_size(stripped_text).width
- @enemy_name_sprite.bitmap = Bitmap.new(width, 24)
- TLBBattleName.draw_text_ex(@enemy_name_sprite.bitmap, 0, 0, text)
- @enemy_name_sprite.x = @battler.screen_x - width / 2
- @enemy_name_sprite.y = @enemy_hp_icon[0].y + 20
- @enemy_name_sprite.visible = true
- else
- @enemy_name_sprite.visible = false
- end
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement