SHARE
TWEET

Untitled

a guest Aug 31st, 2015 84 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.             #--# Sleek Gauges v 1.0b
  2.     #
  3.     # Transform your various gauges in a variety of ways. Compatible with any
  4.     #  other script that uses the draw_gauge function... probably.
  5.     #
  6.     # Usage: Plug and play, customize as needed.
  7.     #
  8.     #------#
  9.     #-- Script by: V.M of D.T
  10.     #
  11.     #- Questions or comments can be:
  12.     #    given by email: sumptuaryspade@live.ca
  13.     #    provided on facebook: http://www.facebook.com/DaimoniousTailsGames
  14.     #   All my other scripts and projects can be found here: http://daimonioustails.weebly.com/
  15.     #
  16.     #--- Free to use in any project, commercial or non-commercial, with credit given
  17.     #--Though a donation's always a nice way to say thank you~ (I also accept actual thank you's)
  18.      
  19.     module SPECIAL_GAUGES
  20.       #Sets the default height of all bars
  21.       DEFAULT_HEIGHT = 10
  22.       #Set to true for static numbers (they don't count down)
  23.       STATIC_NUMBERS = false
  24.       #Set to true for a static bar (Slide style is ignored)
  25.       STATIC_GAUGE = false
  26.       #The style of the gauge. Options are :flat, :round, :slant
  27.       GAUGE_STYLE = :slant
  28.       #The style as the gauge changes. Options are :normal, :fancy, :fall
  29.       GAUGE_SLIDE_STYLE = :fancy
  30.     end
  31.      
  32.     class Window_Base < Window
  33.       attr_accessor :gauges
  34.       def draw_gauge(x, y, width, rate, color1, color2, height = SPECIAL_GAUGES::DEFAULT_HEIGHT)
  35.         @gauges = {} unless @gauges
  36.         if @gauges[[x,y]]
  37.           @gauges[[x,y]].set_rate(rate)
  38.         else
  39.           @gauges[[x,y]] = Special_Gauge.new(x,y,width,rate,color1,color2,self,height)
  40.         end
  41.       end
  42.       def draw_actor_hp(actor, x, y, width = 124, height = SPECIAL_GAUGES::DEFAULT_HEIGHT, notext = false)
  43.         draw_gauge(x, y, width, actor.hp_rate, hp_gauge_color1, hp_gauge_color2, height)
  44.         @gauges[[x,y]].set_extra(Vocab::hp_a,actor.hp,actor.mhp) unless notext
  45.       end
  46.       def draw_actor_mp(actor, x, y, width = 124, height = SPECIAL_GAUGES::DEFAULT_HEIGHT, notext = false)
  47.         draw_gauge(x, y, width, actor.mp_rate, mp_gauge_color1, mp_gauge_color2, height)
  48.         @gauges[[x,y]].set_extra(Vocab::mp_a,actor.mp,actor.mmp) unless notext
  49.       end
  50.       def draw_actor_tp(actor, x, y, width = 124, height = SPECIAL_GAUGES::DEFAULT_HEIGHT, notext = false)
  51.         draw_gauge(x, y, width, actor.tp_rate, tp_gauge_color1, tp_gauge_color2, height)
  52.         @gauges[[x,y]].set_extra(Vocab::tp_a,actor.tp.to_i,100) unless notext
  53.       end
  54.       alias gauge_update update
  55.       def update
  56.         gauge_update
  57.         if @gauges
  58.           @gauges.each {|k,gauge| gauge.update}
  59.         end
  60.       end
  61.     end
  62.      
  63.     class Special_Gauge
  64.       attr_accessor :cur_val
  65.       def initialize(x,y,w,r,c1,c2,window,height = SPECIAL_GAUGES::DEFAULT_HEIGHT)
  66.         @x = x
  67.         @y = y
  68.         @width = w
  69.         @cur_rate = r
  70.         @max_rate = r
  71.         @color1 = c1
  72.         @color2 = c2
  73.         @window = window
  74.         @speed = 0
  75.         @speed_rate = 0
  76.         @height = height
  77.         @fall_sprites = []
  78.         refresh
  79.       end
  80.       def update
  81.         update_fall_sprites
  82.         return if @cur_rate == @max_rate && @cur_val == @set_val
  83.         @cur_rate -= @speed_rate if @cur_rate > @max_rate
  84.         @cur_rate += @speed_rate if @cur_rate < @max_rate
  85.         @cur_rate = @max_rate if (@cur_rate - @max_rate).abs < @speed_rate
  86.         @cur_rate = @max_rate if SPECIAL_GAUGES::STATIC_GAUGE
  87.         return unless @vocab
  88.         @cur_val -= @speed if @cur_val > @set_val
  89.         @cur_val += @speed if @cur_val < @set_val
  90.         @cur_val = @set_val if (@cur_val-@set_val).abs < @speed
  91.         @cur_val = @set_val if SPECIAL_GAUGES::STATIC_NUMBERS
  92.         refresh
  93.       end
  94.       def update_fall_sprites
  95.         @fall_sprites.each do |sprite|
  96.           if sprite.opacity < 175
  97.             sprite.y += 1
  98.           else
  99.             sprite.y -= 1
  100.           end
  101.           if !@window.viewport.nil?
  102.             xx = @window.x + @window.padding + @window.viewport.rect.x - @window.viewport.ox
  103.           else
  104.             xx = @window.x + @window.padding;yy = @window.y + @window.padding
  105.           end
  106.           sprite.x = xx + @x + @width * @max_rate
  107.           sprite.opacity -= 5
  108.           sprite.dispose if sprite.opacity == 0
  109.         end
  110.         @fall_sprites = @fall_sprites.select {|sprite| !sprite.disposed? }
  111.       end
  112.       def refresh
  113.         if @vocab
  114.           @window.contents.clear_rect(Rect.new(@x,@y,@width,@window.line_height))
  115.         else
  116.           gauge_y = @y + @window.line_height - @height - 1
  117.           @window.contents.clear_rect(Rect.new(@x,gauge_y,@width,@height))
  118.         end
  119.         draw_gauge(@x,@y,@width,@cur_rate,@color1,@color2)
  120.         draw_text(@x,@y,@width)
  121.       end
  122.       def set_rate(rate)
  123.         reset_speed = rate != @max_rate
  124.         @max_rate = rate
  125.         @speed_rate = (@cur_rate-@max_rate).abs / 60 if reset_speed
  126.         if SPECIAL_GAUGES::GAUGE_SLIDE_STYLE == :fall && reset_speed && !SPECIAL_GAUGES::STATIC_GAUGE
  127.           if @cur_rate > @max_rate
  128.             sprite = Sprite.new()
  129.             if !@window.viewport.nil?
  130.               xx = @window.x + @window.padding + @window.viewport.rect.x - @window.viewport.ox
  131.               yy = @window.y + @window.padding + @window.viewport.rect.y - @window.viewport.oy
  132.             else
  133.               xx = @window.x + @window.padding;yy = @window.y + @window.padding
  134.             end
  135.             sprite.x = xx + @x + @width * @max_rate
  136.             sprite.y = yy + @y + @window.line_height - @height
  137.             sprite.z = @window.z + 1
  138.             width = (@width * @cur_rate).to_i - (@width * @max_rate).to_i
  139.             if width > 1
  140.               sprite.bitmap = Bitmap.new(width,@height-2)
  141.               sprite.bitmap.gradient_fill_rect(sprite.bitmap.rect,@color1,@color2)
  142.               @fall_sprites.push(sprite)
  143.             else
  144.               sprite.dispose
  145.             end
  146.           end
  147.         end
  148.         refresh
  149.       end
  150.       def set_extra(vocab,set_val,max_val)
  151.         @vocab = vocab
  152.         @max_val = max_val
  153.         reset_speed = set_val != @set_val
  154.         if @cur_val
  155.           @set_val = set_val
  156.         else
  157.           @cur_val = set_val
  158.           @set_val = set_val
  159.         end
  160.         @speed = (@cur_val-@set_val).abs / 60 if reset_speed
  161.         @speed = 1 if @speed == 0
  162.         refresh
  163.       end
  164.       def draw_gauge(x, y, width, rate, color1, color2)
  165.         fill_w = (width * rate).to_i
  166.         fill_ww = (width * @max_rate).to_i
  167.         gauge_y = y + @window.line_height - @height - 1
  168.         @window.contents.fill_rect(x, gauge_y, width, @height, @window.gauge_back_color)
  169.         if SPECIAL_GAUGES::GAUGE_SLIDE_STYLE == :fancy
  170.           color1.alpha -= 150;color2.alpha -= 150
  171.           if rate > @max_rate
  172.             @window.contents.gradient_fill_rect(x, gauge_y+1, fill_w, @height-2, color1, color2)
  173.             color1.alpha += 150;color2.alpha += 150
  174.             @window.contents.gradient_fill_rect(x, gauge_y+1, fill_ww, @height-2, color1, color2)
  175.           else rate < @max_rate
  176.             @window.contents.gradient_fill_rect(x, gauge_y+1, fill_ww, @height-2, color1, color2)
  177.             color1.alpha += 150;color2.alpha += 150
  178.             @window.contents.gradient_fill_rect(x, gauge_y+1, fill_w, @height-2, color1, color2)
  179.           end
  180.         elsif SPECIAL_GAUGES::GAUGE_SLIDE_STYLE == :normal
  181.           @window.contents.gradient_fill_rect(x, gauge_y+1, fill_w, @height-2, color1, color2)
  182.         elsif SPECIAL_GAUGES::GAUGE_SLIDE_STYLE == :fall
  183.           if rate > @max_rate
  184.             @window.contents.gradient_fill_rect(x, gauge_y+1, fill_ww, @height-2, color1, color2)
  185.           else
  186.             @window.contents.gradient_fill_rect(x, gauge_y+1, fill_w, @height-2, color1, color2)
  187.           end
  188.         end
  189.         color3 = Color.new(0,0,0,0);color4 = @window.gauge_back_color
  190.          xx = x;yy = gauge_y;inc = 0
  191.         case SPECIAL_GAUGES::GAUGE_STYLE
  192.         when :flat
  193.         when :slant
  194.           inc = @height-1
  195.           @height.times do
  196.             inc.times do
  197.               @window.contents.set_pixel(xx,yy,color3)
  198.               xx += 1
  199.             end
  200.             @window.contents.set_pixel(xx,yy,color4)
  201.             xx = x;yy += 1;inc -= 1
  202.           end
  203.           xx = x + width;yy = gauge_y;inc = 0
  204.           @height.times do
  205.             inc.times do
  206.               @window.contents.set_pixel(xx,yy,color3)
  207.               xx -= 1
  208.             end
  209.             @window.contents.set_pixel(xx,yy,color4)
  210.             xx = x + width;yy += 1;inc += 1
  211.           end
  212.         when :round
  213.           inc = 3
  214.           @height.times do |i|
  215.             inc = 0 if inc < 0
  216.             inc.times do
  217.               @window.contents.set_pixel(xx,yy,color3)
  218.               xx += 1
  219.             end
  220.             @window.contents.set_pixel(xx,yy,color4)
  221.             xx = x;yy += 1;inc -= 1
  222.             if i >= @height - 4
  223.               inc += 2
  224.             end
  225.           end
  226.           xx = x + width;yy = gauge_y;inc = 3
  227.           @height.times do |i|
  228.             inc = 0 if inc < 0
  229.             inc.times do
  230.               @window.contents.set_pixel(xx,yy,color3)
  231.               xx -= 1
  232.             end
  233.             @window.contents.set_pixel(xx,yy,color4)
  234.             xx = x + width;yy += 1;inc -= 1
  235.             if i >= @height - 4
  236.               inc += 2
  237.             end
  238.           end
  239.         end
  240.       end
  241.       def draw_text(x,y,w)
  242.         return unless @cur_val
  243.         @window.change_color(@window.system_color)
  244.         @window.draw_text(x, y, 30, @window.line_height, @vocab)
  245.         @window.change_color(@window.normal_color)
  246.         @window.change_color(@window.crisis_color) if @cur_val < @max_val / 4
  247.         xr = x + w
  248.         if w < 96
  249.           @window.draw_text(xr - 40, y, 42, @window.line_height, @cur_val.to_i, 2)
  250.         else
  251.           @window.draw_text(xr - 92, y, 42, @window.line_height, @cur_val.to_i, 2)
  252.           @window.change_color(@window.normal_color)
  253.           @window.draw_text(xr - 52, y, 12, @window.line_height, "/", 2)
  254.           @window.draw_text(xr - 42, y, 42, @window.line_height, @max_val, 2)
  255.         end
  256.       end
  257.     end
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top