# ============================================================================= # 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