Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # =============================================================================
- # THEOALLEN - WINDOW AND SPRITE CORE FADE
- # VERSION : 1.0
- # CONTACT : www.rpgmakerid.com
- # (This script documentation is written in informal indonesian language)
- # =============================================================================
- $imported = {} if $imported.nil?
- $imported[:Theo_CoreFade] = true
- # =============================================================================
- # CHANGE LOGS:
- # -----------------------------------------------------------------------------
- # 2013.05.06 - Finished script
- # =============================================================================
- =begin
- PERKENALAN :
- Script ini sebagai devtool para scripter untuk membikin sebuah object atau
- sprite berubah opacitynya dengan cara fade. Script ini hanya menyediakan
- fungsi-fungsi dasar fade dan ngga akan gitu kerasa tanpa implementasi nyata
- dalam script
- CARA PENGGUNAAN :
- Tulis dalam script (object harus window / sprite)
- - object.fade(opacity[,durasi]) >> fade ke opacity tertentu dengan durasi.
- - object.fadeout(durasi) >> untuk nge-fadeout
- - object.fadein(durasi) >> untuk nge-fadein
- durasi default untuk fade bisa disetting sendiri dibawah
- KHUSUS UNTUK WINDOW :
- - window.contents_fade(opacity[,durasi]) >> ngubah opacity konten window
- - window.back_fade(opacity[,durasi]) >> ngubah opacity background window
- TERMS OF USE :
- Karena ini emang cuman buat tool para scripter, silahkan2 aja kalo mo dipake.
- Mau komersil juga boleh. Btw, kalo ada ide trus mo ngembangil ni modul
- monggo terserah. Gw mah dmen banget kalo ada yg mo ngembangin script gw yg
- satu ini. Tapi tetep kredit ya? \=w=/
- NOTE :
- Script bagian bawah sendiri adalah script untuk testing cara kerja script
- ini. Jadi kalo semisal stelah u pasang script ini ga mo masuk ke titlescreen
- atau battle, hapus aja bagian bawah script ini.
- =end
- # =============================================================================
- # Module THEO::FADE (Diimplement ke Window ama Sprite)
- # =============================================================================
- module THEO
- module FADE
- DEFAULT_DURATION = 60
- # set default durationnya disini (dalam satuan frame)
- def init_fade_members
- @obj = nil
- @target_opacity = 0
- @target_contents_opacity = 0
- @fade_speed = 0.0
- @fade_speed2 = 0.0
- end
- def setfade_obj(obj)
- @obj = obj
- @target_opacity = @obj.opacity
- @target_contents_opacity = @obj.contents_opacity if window?
- end
- def fade(opacity, duration = DEFAULT_DURATION)
- @target_opacity = opacity
- @target_contents_opacity = opacity if @obj.is_a?(Window)
- make_fade_speed(duration)
- end
- def contents_fade(opacity, duration = DEFAULT_DURATION)
- return unless window?
- @target_contents_opacity = opacity
- make_fade_speed(duration)
- end
- def back_fade(opacity, duration = DEFAULT_DURATION)
- return unless window?
- @target_opacity = opacity
- make_fade_speed(duration)
- end
- def make_fade_speed(duration)
- @fade_speed = (@target_opacity - @obj.opacity)/duration.to_f
- @fade_speed2 = (@target_contents_opacity - @obj.contents_opacity) /
- duration.to_f if window?
- end
- def window?
- @obj.is_a?(Window)
- end
- def fadeout(duration = DEFAULT_DURATION)
- fade(0, duration)
- end
- def fadein(duration = DEFAULT_DURATION)
- fade(255, duration)
- end
- def update_fade
- return unless fade?
- @obj.opacity += @fade_speed
- @obj.contents_opacity += @fade_speed2 if window?
- end
- def fade?
- if window?
- (@target_opacity != @obj.opacity) &&
- (@target_contents_opacity != @obj.contents_opacity)
- else
- @target_opacity != @obj.opacity
- end
- end
- end
- end
- class Window
- include THEO::FADE
- alias pre_fade_init initialize
- def initialize(x,y,width,height)
- pre_fade_init(x,y,width,height)
- init_fade_members
- setfade_obj(self)
- end
- alias pre_fade_update update
- def update
- pre_fade_update
- update_fade
- end
- end
- class Sprite
- alias pre_fade_init initialize
- def initialize(viewport = nil)
- pre_fade_init(viewport)
- init_fade_members
- setfade_obj(self)
- end
- alias pre_fade_update update
- def update
- pre_fade_update
- update_fade
- end
- end
- # =============================================================================
- # Fade Testing. Mulai bagian sini untuk bagian testing doank. Kalo pengen
- # ngilangin bagian sini, bisa u bikin komen semuanya dengan cara
- # - block semuanya
- # - ctrl + q
- # Atau u delet aja semuanya
- # =============================================================================
- DataManager.init
- def updates
- Graphics.update
- Input.update
- $window.update
- if Input.trigger?(:CTRL) # Input CTRL
- $window.fadeout
- elsif Input.trigger?(:ALT) # Input ALT
- $window.fadein
- end
- end
- $window = Window_Base.new(100,100,100,100)
- $window.viewport = Viewport.new
- updates while true
Advertisement
Add Comment
Please, Sign In to add comment