KModTimer VX + ACE - kyonides -  09-27-2024
 
 
KModTimer VX + ACE 
Version 1.0.0 
 
by Kyonides 
 
 
Introduction 
 
This is a simple scriptlet that provides some extra features for your timer sprite like custom font name and size and even a colored background. The last feature can be deactivated as well. 
 
VX Script 
 
Code: # * KModTimer VX * # 
#   Scripter : Kyonides Arkanthes 
#   v1.0.0 - 2023-05-02 
 
# * Script Calls * # 
 
# - Reset Timer's Setup 
# $game_system.reset_timer 
 
# - Change Timer's X Alignment - Positions: :left, :center or :right 
# $game_system.timer_pos_x = X-Alignment 
 
# $game_system.timer_font_name = "Font Name" 
# $game_system.timer_font_size = Number 
# $game_system.timer_font("Font Name", Number) 
 
# - Change the Font Color 
# $game_system.timer_font_color(Red, Green, Blue) 
# $game_system.timer_font_color(Red, Green, Blue, Alpha) 
 
# - Change the Background Color 
# $game_system.timer_bg_color(Red, Green, Blue) 
# $game_system.timer_bg_color(Red, Green, Blue, Alpha) 
 
# - Toggle Background Color - Boolean: true or false 
# $game_system.timer_use_bg = Boolean 
 
module KModTimer 
  # Initial Values 
  FONT_NAME = "Arial" 
  FONT_SIZE = 32 
  # Color Ranges (0..255) [Red, Green, Blue, Alpha] 
  FONT_COLOR = [255, 255, 255, 255] 
  BG_COLOR   = [0, 0, 0, 80] 
  USE_BG_COLOR = true 
  # Choose the Position: :left, :center or :right 
  POSITION_X = :left 
# * End of Setup Section * # 
  extend self 
  attr_accessor :refresh 
  class TimerData 
    def initialize() reset_settings end 
    def reset_settings 
      @font_name = FONT_NAME.dup 
      @font_size = FONT_SIZE 
      @font_color = FONT_COLOR.dup 
      @bg_color = BG_COLOR.dup 
      @use_bg = USE_BG_COLOR 
      @pos_x = POSITION_X 
    end 
    attr_accessor :font_name, :font_size, :font_color 
    attr_accessor :bg_color, :use_bg, :pos_x 
  end 
end 
 
class Sprite_Timer 
  def initialize(viewport) 
    super(viewport) 
    @data = $game_system.timer_setup 
    self.bitmap = Bitmap.new(88, 48) 
    bg_setup 
    font_setup 
    update_position 
    self.y = 0 
    self.z = 500 
    update 
  end 
 
  def bg_setup 
    @bg_color = Color.new(*@data.bg_color) 
  end 
 
  def font_setup 
    font = self.bitmap.font 
    font.name = @data.font_name 
    font.size = @data.font_size 
    font.color.set(*@data.font_color) 
  end 
 
  def update_x 
    case @data.pos_x 
    when :left 
      self.x = 0 
    when :center 
      self.x = (Graphics.width - self.bitmap.width) / 2 
    when :right 
      self.x = Graphics.width - self.bitmap.width 
    end 
  end 
 
  def update_position 
    update_x 
    self.y = 0 
    self.z = 200 
  end 
 
  def redraw_backdrop 
    bm = self.bitmap 
    @data.use_bg ? bm.fill_rect(bm.rect, @bg_color) : bm.clear 
  end 
 
  def timer_text 
    min = @total_sec / 60 
    sec = @total_sec % 60 
    sprintf("%02d:%02d", min, sec) 
  end 
 
  def redraw 
    if KModTimer.refresh 
      KModTimer.refresh = nil 
      bg_setup 
      font_setup 
    end 
    redraw_backdrop 
    bm = self.bitmap 
    bm.draw_text(bm.rect, timer_text, 1) 
  end 
 
  def update_bitmap 
    if $game_system.timer / Graphics.frame_rate != @total_sec 
      @total_sec = $game_system.timer / Graphics.frame_rate 
      redraw 
    end 
  end 
 
  def update 
    super 
    self.visible = $game_system.timer_working 
    update_x 
    update_bitmap 
  end 
end 
 
class Game_System 
  alias :kyon_mod_timer_gm_sys_init :initialize 
  def initialize 
    kyon_mod_timer_gm_sys_init 
    @timer_setup = KModTimer::TimerData.new 
  end 
 
  def reset_timer 
    @timer_setup.reset_settings 
  end 
 
  def timer_pos_x=(new_x) 
    @timer_setup.pos_x = new_x 
  end 
 
  def timer_font(new_name, new_size) 
    KModTimer.refresh = true 
    @timer_setup.font_name = new_name 
    @timer_setup.font_size = new_size 
  end 
 
  def timer_font_name=(new_name) 
    KModTimer.refresh = true 
    @timer_setup.font_name = new_name 
  end 
 
  def timer_font_size=(new_size) 
    KModTimer.refresh = true 
    @timer_setup.font_size = new_size 
  end 
 
  def timer_font_color(red, green, blue, alpha=255) 
    KModTimer.refresh = true 
    @timer_setup.font_color = [red, green, blue, alpha] 
  end 
 
  def timer_bg_color(red, green, blue, alpha=255) 
    KModTimer.refresh = true 
    @timer_setup.bg_color = [red, green, blue, alpha] 
  end 
 
  def timer_use_bg=(bool) 
    KModTimer.refresh = true 
    @timer_setup.use_bg = bool 
  end 
  attr_reader :timer_setup 
end
  
ACE Script 
 
Code: # * KModTimer ACE * # 
#   Scripter : Kyonides Arkanthes 
#   v1.0.0 - 2023-05-02 
 
# * Script Calls * # 
 
# - Reset Timer's Setup 
# $game_timer.reset 
 
# - Change Timer's X Alignment - Positions: :left, :center or :right 
# $game_timer.pos_x = X-Alignment 
 
# $game_timer.font_name = "Font Name" 
# $game_timer.font_size = Number 
# $game_timer.set_font("Font Name", Number) 
 
# - Change the Font Color 
# $game_timer.font_color(Red, Green, Blue) 
# $game_timer.font_color(Red, Green, Blue, Alpha) 
 
# - Change the Background Color 
# $game_timer.bg_color(Red, Green, Blue) 
# $game_timer.bg_color(Red, Green, Blue, Alpha) 
 
# - Toggle Background Color - Boolean: true or false 
# $game_timer.use_bg = Boolean 
 
module KModTimer 
  # Initial Values 
  FONT_NAME = "Arial" 
  FONT_SIZE = 32 
  # Color Ranges (0..255) [Red, Green, Blue, Alpha] 
  FONT_COLOR = [255, 255, 255, 255] 
  BG_COLOR   = [0, 0, 0, 80] 
  USE_BG_COLOR = true 
  # Choose the Position: :left, :center or :right 
  POSITION_X = :left 
# * End of Setup Section * # 
  extend self 
  attr_accessor :refresh 
end 
 
class Sprite_Timer 
  def create_bitmap 
    self.bitmap = Bitmap.new(96, 48) 
    bg_setup 
    font_setup 
  end 
 
  def bg_setup 
    @bg_color = Color.new(*$game_timer.bg_color) 
  end 
 
  def font_setup 
    font = self.bitmap.font 
    font.name = $game_timer.font_name 
    font.size = $game_timer.font_size 
    font.color.set(*$game_timer.font_color) 
  end 
 
  def redraw_backdrop 
    bm = self.bitmap 
    $game_timer.use_bg ? bm.fill_rect(bm.rect, @bg_color) : bm.clear 
  end 
   
  def redraw 
    if KModTimer.refresh 
      KModTimer.refresh = nil 
      bg_setup 
      font_setup 
    end 
    redraw_backdrop 
    bitmap.draw_text(bitmap.rect, timer_text, 1) 
  end 
 
  def update_x 
    case $game_timer.pos_x 
    when :left 
      self.x = 0 
    when :center 
      self.x = (Graphics.width - self.bitmap.width) / 2 
    when :right 
      self.x = Graphics.width - self.bitmap.width 
    end 
  end 
 
  def update_position 
    update_x 
    self.y = 0 
    self.z = 200 
  end 
end 
 
class Game_Timer 
  include KModTimer 
  alias :kyon_mod_timer_gm_sys_init :initialize 
  def initialize 
    kyon_mod_timer_gm_sys_init 
    reset 
  end 
 
  def reset 
    @font_name = FONT_NAME.dup 
    @font_size = FONT_SIZE 
    @font_color = FONT_COLOR.dup 
    @bg_color = BG_COLOR.dup 
    @use_bg = USE_BG_COLOR 
    @pos_x = POSITION_X 
  end 
 
  def set_font(new_name, new_size) 
    KModTimer.refresh = true 
    @font_name = new_name 
    @font_size = new_size 
  end 
 
  def font_name=(new_name) 
    KModTimer.refresh = true 
    @font_name = new_name 
  end 
 
  def font_size=(new_size) 
    KModTimer.refresh = true 
    @font_size = new_size 
  end 
 
  def font_color(red, green, blue, alpha=255) 
    KModTimer.refresh = true 
    @font_color = [red, green, blue, alpha] 
  end 
 
  def bg_color(red, green, blue, alpha=255) 
    KModTimer.refresh = true 
    @bg_color = [red, green, blue, alpha] 
  end 
 
  def use_bg=(bool) 
    KModTimer.refresh = true 
    @use_bg = bool 
  end 
  attr_reader :font_name, :font_size, :font_color, :bg_color,  :use_bg 
  attr_accessor :pos_x 
end
  
Terms & Conditions 
 
Feel free to use it. 
Optionally, you could include my nickname in your game credits. 
That's it.
 
 
 
 |