#=========================================================================== # ◆ A1 Scripts ◆ # 顔グラフィックをグラデーションで塗りつぶし # # バージョン : 1.10 (2012/01/02) # 作者 : A1 # URL     : http://a1tktk.web.fc2.com/ #--------------------------------------------------------------------------- # 機能: # ・顔グラフィックをグラデーションで塗りつぶします #--------------------------------------------------------------------------- # 更新履歴   :2012/01/02 Ver1.00 リリース #    :2012/01/02 Ver1.10 A1共通スクリプトVer3.30対応 #--------------------------------------------------------------------------- # 設置場所 #  A1共通スクリプトより下 #  (ネームウィンドウスクリプトより上) # (左右顔グラフィック・顔グラフィック反転スクリプトより下) # # 必要スクリプト # A1共通スクリプトVer3.30以上 #--------------------------------------------------------------------------- # 使い方 # イベントコマンド「注釈」に記述 # # 顔グラデーション Rect,Color1,Color2,vertical,auto_init # Rect :塗りつぶす範囲 [x, y, width, height] で指定 # Color1 :塗りつぶす色1 [R, G, B, Alpha] で指定 Alphaは省略可 # Color2 :塗りつぶす色2 [R, G, B, Alpha] で指定 Alphaは省略可 # vertical :縦方向にグラデーションさせる場合 v と記述 # auto_init:off と記述すると塗りつぶし機能が持続します # # 例:顔グラデーション [0,0,96,96],[0,0,0],[0,0,0,128],v,off # 顔グラフィック全体を、黒色から半透明の黒色に # 縦方向にグラデーションするビットマップで塗りつぶし # 次の顔グラフィックも塗りつぶし機能を使用します # # 例:顔グラデーション [20,20,70,20],[0,0,0],[0,0,0] # 顔グラフィックの x20 y20 幅70 高さ20 の範囲を黒色で塗りつぶし # 次の顔グラフィックには塗りつぶし機能を使用しません # # 顔グラデーション off # 塗りつぶし機能を持続させた際 # 塗りつぶし機能を停止させます #============================================================================== $imported ||= {} $imported["A1_FaceGradation"] = true if $imported["A1_Common_Script"] old_common_script("顔グラフィックをグラデーションで塗りつぶし", "3.30") if common_version < 3.30 #============================================================================== # ■ Cache #------------------------------------------------------------------------------ #  各種グラフィックを読み込み、Bitmap オブジェクトを作成、保持するモジュール # です。読み込みの高速化とメモリ節約のため、作成した Bitmap オブジェクトを内部 # のハッシュに保存し、同じビットマップが再度要求されたときに既存のオブジェクト # を返すようになっています。 #============================================================================== module Cache #-------------------------------------------------------------------------- # ○ グラデーション処理の実行 #-------------------------------------------------------------------------- def self.gradation(width, height, rect, color, vertical) bitmap = Bitmap.new(width, height) bitmap.gradient_fill_rect(rect, color[0], color[1], vertical) return bitmap end end #============================================================================== # ■ Window_Base #------------------------------------------------------------------------------ #  ゲーム中の全てのウィンドウのスーパークラスです。 #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # ☆ 顔グラフィックの描画 # enabled : 有効フラグ。false のとき半透明で描画 #-------------------------------------------------------------------------- alias a1_face_gradation_wb_draw_face draw_face def draw_face(face_name, face_index, x, y, enabled = true) a1_face_gradation_wb_draw_face(face_name, face_index, x, y, enabled) draw_face_gradation(face_name, x, y) if $game_temp.face_gradation_rect end #-------------------------------------------------------------------------- # ○ 顔グラフィックグラデーションの描画 #-------------------------------------------------------------------------- def draw_face_gradation(face_name, x, y) return if face_name.empty? bitmap = Cache.gradation(96, 96, $game_temp.face_gradation_rect, $game_temp.face_gradation_color, $game_temp.face_gradation_vertical) contents.blt(x, y, bitmap, Rect.new(0,0,96,96), 255) bitmap.dispose $game_temp.init_face_gradation_info if $game_temp.face_gradation_auto_init end end #============================================================================== # ■ Game_Temp #------------------------------------------------------------------------------ #  セーブデータに含まれない、一時的なデータを扱うクラスです。このクラスのイン # スタンスは $game_temp で参照されます。 #============================================================================== class Game_Temp #-------------------------------------------------------------------------- # ○ 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :face_gradation_color attr_accessor :face_gradation_rect attr_accessor :face_gradation_vertical attr_accessor :face_gradation_auto_init #-------------------------------------------------------------------------- # ☆ オブジェクト初期化 #-------------------------------------------------------------------------- alias a1_face_gradation_gt_initialize initialize def initialize a1_face_gradation_gt_initialize init_face_gradation_info end #-------------------------------------------------------------------------- # ○ グラデーション情報の初期化 #-------------------------------------------------------------------------- def init_face_gradation_info @face_gradation_color = [] @face_gradation_rect = nil @face_gradation_vertical = false @face_gradation_auto_init = true end end #============================================================================== # ■ A1_System::CommonModule #============================================================================== class A1_System::CommonModule #-------------------------------------------------------------------------- # ☆ 注釈コマンド定義 #-------------------------------------------------------------------------- alias a1_face_gradation_define_command define_command def define_command a1_face_gradation_define_command @cmd_108["顔グラデーション"] = :face_gradation end end #============================================================================== # ■ Game_Interpreter #------------------------------------------------------------------------------ #  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、 # Game_Troop クラス、Game_Event クラスの内部で使用されます。 #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # ○ 注釈の処理 #-------------------------------------------------------------------------- def face_gradation(params) return $game_temp.init_face_gradation_info if params[0] == "off" info = $a1_common.params_to_i(params[0]) rect = Rect.new(info[0], info[1], info[2], info[3]) info = $a1_common.params_to_i(params[1]) color1 = Color.new(info[0], info[1], info[2]) if info[3] == nil color1 = Color.new(info[0], info[1], info[2], info[3]) if info[3] != nil info = $a1_common.params_to_i(params[2]) color2 = Color.new(info[0], info[1], info[2]) if info[3] == nil color2 = Color.new(info[0], info[1], info[2], info[3]) if info[3] != nil $game_temp.face_gradation_rect = rect $game_temp.face_gradation_color = [color1, color2] $game_temp.face_gradation_vertical = params[3] == "v" ? true : false $game_temp.face_gradation_auto_init = params[4] == "off" ? false : true end end end