TheoAllen

Theo - Object Core Fade

May 6th, 2013
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 5.20 KB | None | 0 0
  1. # =============================================================================
  2. # THEOALLEN - WINDOW AND SPRITE CORE FADE
  3. # VERSION : 1.0
  4. # CONTACT : www.rpgmakerid.com
  5. # (This script documentation is written in informal indonesian language)
  6. # =============================================================================
  7. $imported = {} if $imported.nil?
  8. $imported[:Theo_CoreFade] = true
  9. # =============================================================================
  10. # CHANGE LOGS:
  11. # -----------------------------------------------------------------------------
  12. # 2013.05.06 - Finished script
  13. # =============================================================================
  14. =begin
  15.  
  16.   PERKENALAN :
  17.   Script ini sebagai devtool para scripter untuk membikin sebuah object atau
  18.   sprite berubah opacitynya dengan cara fade. Script ini hanya menyediakan
  19.   fungsi-fungsi dasar fade dan ngga akan gitu kerasa tanpa implementasi nyata
  20.   dalam script
  21.  
  22.   CARA PENGGUNAAN :
  23.   Tulis dalam script (object harus window / sprite)
  24.   - object.fade(opacity[,durasi]) >> fade ke opacity tertentu dengan durasi.
  25.   - object.fadeout(durasi) >> untuk nge-fadeout
  26.   - object.fadein(durasi) >> untuk nge-fadein
  27.   durasi default untuk fade bisa disetting sendiri dibawah
  28.  
  29.   KHUSUS UNTUK WINDOW :
  30.   - window.contents_fade(opacity[,durasi]) >> ngubah opacity konten window
  31.   - window.back_fade(opacity[,durasi]) >> ngubah opacity background window
  32.  
  33.   TERMS OF USE :
  34.   Karena ini emang cuman buat tool para scripter, silahkan2 aja kalo mo dipake.
  35.   Mau komersil juga boleh. Btw, kalo ada ide trus mo ngembangil ni modul
  36.   monggo terserah. Gw mah dmen banget kalo ada yg mo ngembangin script gw yg
  37.   satu ini. Tapi tetep kredit ya? \=w=/
  38.  
  39.   NOTE :
  40.   Script bagian bawah sendiri adalah script untuk testing cara kerja script
  41.   ini. Jadi kalo semisal stelah u pasang script ini ga mo masuk ke titlescreen
  42.   atau battle, hapus aja bagian bawah script ini.
  43.  
  44. =end
  45. # =============================================================================
  46. # Module THEO::FADE (Diimplement ke Window ama Sprite)
  47. # =============================================================================
  48. module THEO
  49.   module FADE
  50.    
  51.     DEFAULT_DURATION = 60
  52.     # set default durationnya disini (dalam satuan frame)
  53.    
  54.     def init_fade_members
  55.       @obj = nil
  56.       @target_opacity = 0
  57.       @target_contents_opacity = 0
  58.       @fade_speed = 0.0
  59.       @fade_speed2 = 0.0
  60.     end
  61.    
  62.     def setfade_obj(obj)
  63.       @obj = obj
  64.       @target_opacity = @obj.opacity
  65.       @target_contents_opacity = @obj.contents_opacity if window?
  66.     end
  67.    
  68.     def fade(opacity, duration = DEFAULT_DURATION)
  69.       @target_opacity = opacity
  70.       @target_contents_opacity = opacity if @obj.is_a?(Window)
  71.       make_fade_speed(duration)
  72.     end
  73.    
  74.     def contents_fade(opacity, duration = DEFAULT_DURATION)
  75.       return unless window?
  76.       @target_contents_opacity = opacity
  77.       make_fade_speed(duration)
  78.     end
  79.    
  80.     def back_fade(opacity, duration = DEFAULT_DURATION)
  81.       return unless window?
  82.       @target_opacity = opacity
  83.       make_fade_speed(duration)
  84.     end
  85.    
  86.     def make_fade_speed(duration)
  87.       @fade_speed = (@target_opacity - @obj.opacity)/duration.to_f
  88.       @fade_speed2 = (@target_contents_opacity - @obj.contents_opacity) /
  89.       duration.to_f if window?
  90.     end
  91.    
  92.     def window?
  93.       @obj.is_a?(Window)
  94.     end
  95.    
  96.     def fadeout(duration = DEFAULT_DURATION)
  97.       fade(0, duration)
  98.     end
  99.    
  100.     def fadein(duration = DEFAULT_DURATION)
  101.       fade(255, duration)
  102.     end
  103.    
  104.     def update_fade
  105.       return unless fade?
  106.       @obj.opacity += @fade_speed
  107.       @obj.contents_opacity += @fade_speed2 if window?
  108.     end
  109.    
  110.     def fade?
  111.       if window?
  112.         (@target_opacity != @obj.opacity) &&
  113.         (@target_contents_opacity != @obj.contents_opacity)
  114.       else
  115.         @target_opacity != @obj.opacity
  116.       end
  117.     end
  118.    
  119.   end
  120. end
  121.  
  122. class Window
  123.  
  124.   include THEO::FADE
  125.  
  126.   alias pre_fade_init initialize
  127.   def initialize(x,y,width,height)
  128.     pre_fade_init(x,y,width,height)
  129.     init_fade_members
  130.     setfade_obj(self)
  131.   end
  132.  
  133.   alias pre_fade_update update
  134.   def update
  135.     pre_fade_update
  136.     update_fade
  137.   end
  138.  
  139. end
  140.  
  141. class Sprite
  142.  
  143.   alias pre_fade_init initialize
  144.   def initialize(viewport = nil)
  145.     pre_fade_init(viewport)
  146.     init_fade_members
  147.     setfade_obj(self)
  148.   end
  149.  
  150.   alias pre_fade_update update
  151.   def update
  152.     pre_fade_update
  153.     update_fade
  154.   end
  155.  
  156. end
  157. # =============================================================================
  158. # Fade Testing. Mulai bagian sini untuk bagian testing doank. Kalo pengen
  159. # ngilangin bagian sini, bisa u bikin komen semuanya dengan cara
  160. # - block semuanya
  161. # - ctrl + q
  162. # Atau u delet aja semuanya
  163. # =============================================================================
  164. DataManager.init
  165.  
  166. def updates
  167.   Graphics.update
  168.   Input.update
  169.   $window.update
  170.   if Input.trigger?(:CTRL) # Input CTRL
  171.     $window.fadeout
  172.   elsif Input.trigger?(:ALT) # Input ALT
  173.     $window.fadein
  174.   end
  175. end
  176.  
  177. $window = Window_Base.new(100,100,100,100)
  178. $window.viewport = Viewport.new
  179. updates while true
Advertisement
Add Comment
Please, Sign In to add comment